1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2025-03-20 03:28:53 +02:00
blogic 6ea7ec75d2 [ifxmips]
* adds a rewrite of the tapi drivers + sip app. this is the result of lars' gsoc 2010 project, Thanks !


git-svn-id: svn://svn.openwrt.org/openwrt/trunk@23840 3c298f89-4303-0410-b956-a3cf2f4a3e73
2010-11-03 19:12:34 +00:00

86 lines
1.9 KiB
C

#ifndef __MPS_H__
#define __MPS_H__
#include <linux/platform_device.h>
#include <linux/completion.h>
struct mps_fifo_config
{
size_t head_addr;
size_t tail_addr;
size_t base_addr;
size_t size_addr;
size_t base;
size_t size;
};
struct mps_fifo {
void __iomem *base;
void __iomem *head_addr;
void __iomem *tail_addr;
uint32_t size;
};
struct mps_mailbox {
struct mps_fifo upstream;
struct mps_fifo downstream;
};
enum mps_boot_config
{
MPS_BOOT_LEGACY = 1,
MPS_BOOT_ENCRYPTED = 2,
};
struct mps {
struct resource *res;
void __iomem *base;
struct resource *mbox_res;
void __iomem *mbox_base;
struct resource *cp1_res;
void __iomem *cp1_base;
struct device *dev;
int irq_ad0;
int irq_ad1;
int irq_base;
};
void mps_configure_fifo(struct mps *mps, struct mps_fifo *fifo,
const struct mps_fifo_config *config);
void mps_configure_mailbox(struct mps *mps, struct mps_mailbox *mbox,
const struct mps_fifo_config *upstream_config,
const struct mps_fifo_config *downstream_config);
void mps_load_firmware(struct mps *mps, const void *data, size_t size,
enum mps_boot_config config);
static inline struct mps *device_to_mps(struct device *dev)
{
return (struct mps *)dev_get_drvdata(dev);
}
/* fifo */
void mps_fifo_init(struct mps_fifo *fifo, void __iomem *data_addr,
void __iomem *head_addr, void __iomem *tail_addr, uint32_t size);
void mps_fifo_in(struct mps_fifo *fifo, const uint32_t *from, size_t len);
void mps_fifo_out(struct mps_fifo *fifo, uint32_t *to, size_t len);
uint32_t mps_fifo_peek(struct mps_fifo *fifo);
void mps_fifo_reset(struct mps_fifo *fifo);
size_t mps_fifo_len(struct mps_fifo *fifo);
/* Mailbox */
int mps_mailbox_init(struct mps_mailbox *mbox, const char *name, int irq);
int mps_mailbox_command_read(struct mps_mailbox *mbox, uint32_t cmd,
uint32_t *result);
int mps_mailbox_command_write(struct mps_mailbox *mbox, uint32_t cmd,
const uint32_t *data);
#endif