Lines Matching defs:mbox
56 static inline int octep_wait_for_mbox_avail(struct octep_mbox __iomem *mbox)
60 return readx_poll_timeout(ioread32, &mbox->sts, val, MBOX_AVAIL(val), 10,
64 static inline int octep_wait_for_mbox_rsp(struct octep_mbox __iomem *mbox)
68 return readx_poll_timeout(ioread32, &mbox->sts, val, MBOX_RSP(val), 10,
72 static inline void octep_write_hdr(struct octep_mbox __iomem *mbox, u16 id, u16 sig)
74 iowrite16(id, &mbox->hdr.id);
75 iowrite16(sig, &mbox->hdr.sig);
78 static inline u32 octep_read_sig(struct octep_mbox __iomem *mbox)
80 return ioread16(&mbox->hdr.sig);
83 static inline void octep_write_sts(struct octep_mbox __iomem *mbox, u32 sts)
85 iowrite32(sts, &mbox->sts);
88 static inline u32 octep_read_sts(struct octep_mbox __iomem *mbox)
90 return ioread32(&mbox->sts);
93 static inline u32 octep_read32_word(struct octep_mbox __iomem *mbox, u16 word_idx)
95 return ioread32(&mbox->data[word_idx]);
98 static inline void octep_write32_word(struct octep_mbox __iomem *mbox, u16 word_idx, u32 word)
100 return iowrite32(word, &mbox->data[word_idx]);
106 struct octep_mbox __iomem *mbox = octep_get_mbox(oct_hw);
116 /* Make sure mbox space is available */
117 ret = octep_wait_for_mbox_avail(mbox);
119 dev_warn(&pdev->dev, "Timeout waiting for previous mbox data to be consumed\n");
126 octep_write32_word(mbox, i, *p);
130 octep_write32_word(mbox, 0, (u32)qid);
131 octep_write_sts(mbox, 0);
133 octep_write_hdr(mbox, id, MBOX_REQ_SIG);
135 ret = octep_wait_for_mbox_rsp(mbox);
137 dev_warn(&pdev->dev, "Timeout waiting for mbox : %d response\n", id);
141 val = octep_read_sig(mbox);
143 dev_warn(&pdev->dev, "Invalid Signature from mbox : %d response\n", id);
147 val = octep_read_sts(mbox);
150 dev_warn(&pdev->dev, "Error while processing mbox : %d, err %d\n", id, ret);
156 *p++ = octep_read32_word(mbox, i);
161 static void octep_mbox_init(struct octep_mbox __iomem *mbox)
163 iowrite32(1, &mbox->sts);
446 struct octep_mbox __iomem *mbox;
544 mbox = octep_get_mbox(oct_hw);
545 octep_mbox_init(mbox);
546 dev_info(dev, "mbox mapped at: %p\n", mbox);