4 #include <linux/platform_device.h>
5 #include <linux/completion.h>
20 void __iomem *head_addr;
21 void __iomem *tail_addr;
26 struct mps_fifo upstream;
27 struct mps_fifo downstream;
33 MPS_BOOT_ENCRYPTED = 2,
40 struct resource *mbox_res;
41 void __iomem *mbox_base;
43 struct resource *cp1_res;
44 void __iomem *cp1_base;
53 void mps_configure_fifo(struct mps *mps, struct mps_fifo *fifo,
54 const struct mps_fifo_config *config);
56 void mps_configure_mailbox(struct mps *mps, struct mps_mailbox *mbox,
57 const struct mps_fifo_config *upstream_config,
58 const struct mps_fifo_config *downstream_config);
60 void mps_load_firmware(struct mps *mps, const void *data, size_t size,
61 enum mps_boot_config config);
63 static inline struct mps *device_to_mps(struct device *dev)
65 return (struct mps *)dev_get_drvdata(dev);
69 void mps_fifo_init(struct mps_fifo *fifo, void __iomem *data_addr,
70 void __iomem *head_addr, void __iomem *tail_addr, uint32_t size);
71 void mps_fifo_in(struct mps_fifo *fifo, const uint32_t *from, size_t len);
72 void mps_fifo_out(struct mps_fifo *fifo, uint32_t *to, size_t len);
73 uint32_t mps_fifo_peek(struct mps_fifo *fifo);
74 void mps_fifo_reset(struct mps_fifo *fifo);
75 size_t mps_fifo_len(struct mps_fifo *fifo);
78 int mps_mailbox_init(struct mps_mailbox *mbox, const char *name, int irq);
79 int mps_mailbox_command_read(struct mps_mailbox *mbox, uint32_t cmd,
81 int mps_mailbox_command_write(struct mps_mailbox *mbox, uint32_t cmd,
82 const uint32_t *data);