Lines Matching full:mbox
27 /* Size of mbox info in bytes */
29 /* Size of mbox host to fw queue info in bytes */
31 /* Size of mbox fw to host queue info in bytes */
74 int octep_ctrl_mbox_init(struct octep_ctrl_mbox *mbox) in octep_ctrl_mbox_init() argument
78 if (!mbox) in octep_ctrl_mbox_init()
81 if (!mbox->barmem) { in octep_ctrl_mbox_init()
82 pr_info("octep_ctrl_mbox : Invalid barmem %p\n", mbox->barmem); in octep_ctrl_mbox_init()
86 magic_num = readq(OCTEP_CTRL_MBOX_INFO_MAGIC_NUM(mbox->barmem)); in octep_ctrl_mbox_init()
92 status = readq(OCTEP_CTRL_MBOX_INFO_FW_STATUS(mbox->barmem)); in octep_ctrl_mbox_init()
98 fw_versions = readq(OCTEP_CTRL_MBOX_INFO_FW_VERSION(mbox->barmem)); in octep_ctrl_mbox_init()
99 mbox->min_fw_version = ((fw_versions & 0xffffffff00000000ull) >> 32); in octep_ctrl_mbox_init()
100 mbox->max_fw_version = (fw_versions & 0xffffffff); in octep_ctrl_mbox_init()
101 mbox->barmem_sz = readl(OCTEP_CTRL_MBOX_INFO_BARMEM_SZ(mbox->barmem)); in octep_ctrl_mbox_init()
104 OCTEP_CTRL_MBOX_INFO_HOST_STATUS(mbox->barmem)); in octep_ctrl_mbox_init()
106 mutex_init(&mbox->h2fq_lock); in octep_ctrl_mbox_init()
107 mutex_init(&mbox->f2hq_lock); in octep_ctrl_mbox_init()
109 mbox->h2fq.sz = readl(OCTEP_CTRL_MBOX_H2FQ_SZ(mbox->barmem)); in octep_ctrl_mbox_init()
110 mbox->h2fq.hw_prod = OCTEP_CTRL_MBOX_H2FQ_PROD(mbox->barmem); in octep_ctrl_mbox_init()
111 mbox->h2fq.hw_cons = OCTEP_CTRL_MBOX_H2FQ_CONS(mbox->barmem); in octep_ctrl_mbox_init()
112 mbox->h2fq.hw_q = mbox->barmem + OCTEP_CTRL_MBOX_TOTAL_INFO_SZ; in octep_ctrl_mbox_init()
114 mbox->f2hq.sz = readl(OCTEP_CTRL_MBOX_F2HQ_SZ(mbox->barmem)); in octep_ctrl_mbox_init()
115 mbox->f2hq.hw_prod = OCTEP_CTRL_MBOX_F2HQ_PROD(mbox->barmem); in octep_ctrl_mbox_init()
116 mbox->f2hq.hw_cons = OCTEP_CTRL_MBOX_F2HQ_CONS(mbox->barmem); in octep_ctrl_mbox_init()
117 mbox->f2hq.hw_q = mbox->barmem + in octep_ctrl_mbox_init()
119 mbox->h2fq.sz; in octep_ctrl_mbox_init()
121 writeq(mbox->version, OCTEP_CTRL_MBOX_INFO_HOST_VERSION(mbox->barmem)); in octep_ctrl_mbox_init()
125 OCTEP_CTRL_MBOX_INFO_HOST_STATUS(mbox->barmem)); in octep_ctrl_mbox_init()
127 pr_info("Octep ctrl mbox : Init successful.\n"); in octep_ctrl_mbox_init()
160 int octep_ctrl_mbox_send(struct octep_ctrl_mbox *mbox, struct octep_ctrl_mbox_msg *msg) in octep_ctrl_mbox_send() argument
167 if (!mbox || !msg) in octep_ctrl_mbox_send()
170 if (readq(OCTEP_CTRL_MBOX_INFO_FW_STATUS(mbox->barmem)) != OCTEP_CTRL_MBOX_STATUS_READY) in octep_ctrl_mbox_send()
173 mutex_lock(&mbox->h2fq_lock); in octep_ctrl_mbox_send()
174 q = &mbox->h2fq; in octep_ctrl_mbox_send()
179 mutex_unlock(&mbox->h2fq_lock); in octep_ctrl_mbox_send()
192 mutex_unlock(&mbox->h2fq_lock); in octep_ctrl_mbox_send()
225 int octep_ctrl_mbox_recv(struct octep_ctrl_mbox *mbox, struct octep_ctrl_mbox_msg *msg) in octep_ctrl_mbox_recv() argument
232 if (readq(OCTEP_CTRL_MBOX_INFO_FW_STATUS(mbox->barmem)) != OCTEP_CTRL_MBOX_STATUS_READY) in octep_ctrl_mbox_recv()
235 mutex_lock(&mbox->f2hq_lock); in octep_ctrl_mbox_recv()
236 q = &mbox->f2hq; in octep_ctrl_mbox_recv()
242 mutex_unlock(&mbox->f2hq_lock); in octep_ctrl_mbox_recv()
255 mutex_unlock(&mbox->f2hq_lock); in octep_ctrl_mbox_recv()
260 int octep_ctrl_mbox_uninit(struct octep_ctrl_mbox *mbox) in octep_ctrl_mbox_uninit() argument
262 if (!mbox) in octep_ctrl_mbox_uninit()
264 if (!mbox->barmem) in octep_ctrl_mbox_uninit()
267 writeq(0, OCTEP_CTRL_MBOX_INFO_HOST_VERSION(mbox->barmem)); in octep_ctrl_mbox_uninit()
269 OCTEP_CTRL_MBOX_INFO_HOST_STATUS(mbox->barmem)); in octep_ctrl_mbox_uninit()
273 mutex_destroy(&mbox->h2fq_lock); in octep_ctrl_mbox_uninit()
274 mutex_destroy(&mbox->f2hq_lock); in octep_ctrl_mbox_uninit()
276 pr_info("Octep ctrl mbox : Uninit successful.\n"); in octep_ctrl_mbox_uninit()