Lines Matching refs:cb
41 struct mei_cl_cb *cb, *next; in mei_irq_compl_handler() local
44 list_for_each_entry_safe(cb, next, &compl_list->list, list) { in mei_irq_compl_handler()
45 cl = cb->cl; in mei_irq_compl_handler()
46 list_del_init(&cb->list); in mei_irq_compl_handler()
50 mei_amthif_complete(dev, cb); in mei_irq_compl_handler()
52 mei_cl_complete(cl, cb); in mei_irq_compl_handler()
104 struct mei_cl_cb *cb; in mei_cl_irq_read_msg() local
107 cb = list_first_entry_or_null(&cl->rd_pending, struct mei_cl_cb, list); in mei_cl_irq_read_msg()
108 if (!cb) { in mei_cl_irq_read_msg()
115 cb->status = -ENODEV; in mei_cl_irq_read_msg()
119 if (cb->buf.size == 0 || cb->buf.data == NULL) { in mei_cl_irq_read_msg()
121 list_move_tail(&cb->list, &complete_list->list); in mei_cl_irq_read_msg()
122 cb->status = -ENOMEM; in mei_cl_irq_read_msg()
126 if (cb->buf.size < mei_hdr->length + cb->buf_idx) { in mei_cl_irq_read_msg()
128 cb->buf.size, mei_hdr->length, cb->buf_idx); in mei_cl_irq_read_msg()
129 buffer = krealloc(cb->buf.data, mei_hdr->length + cb->buf_idx, in mei_cl_irq_read_msg()
133 cb->status = -ENOMEM; in mei_cl_irq_read_msg()
134 list_move_tail(&cb->list, &complete_list->list); in mei_cl_irq_read_msg()
137 cb->buf.data = buffer; in mei_cl_irq_read_msg()
138 cb->buf.size = mei_hdr->length + cb->buf_idx; in mei_cl_irq_read_msg()
141 buffer = cb->buf.data + cb->buf_idx; in mei_cl_irq_read_msg()
144 cb->buf_idx += mei_hdr->length; in mei_cl_irq_read_msg()
147 cb->read_time = jiffies; in mei_cl_irq_read_msg()
148 cl_dbg(dev, cl, "completed read length = %lu\n", cb->buf_idx); in mei_cl_irq_read_msg()
149 list_move_tail(&cb->list, &complete_list->list); in mei_cl_irq_read_msg()
168 static int mei_cl_irq_disconnect_rsp(struct mei_cl *cl, struct mei_cl_cb *cb, in mei_cl_irq_disconnect_rsp() argument
186 mei_io_cb_free(cb); in mei_cl_irq_disconnect_rsp()
203 static int mei_cl_irq_disconnect(struct mei_cl *cl, struct mei_cl_cb *cb, in mei_cl_irq_disconnect() argument
218 cb->buf_idx = 0; in mei_cl_irq_disconnect()
219 list_move_tail(&cb->list, &cmpl_list->list); in mei_cl_irq_disconnect()
225 cb->buf_idx = 0; in mei_cl_irq_disconnect()
226 list_move_tail(&cb->list, &dev->ctrl_rd_list.list); in mei_cl_irq_disconnect()
243 static int mei_cl_irq_read(struct mei_cl *cl, struct mei_cl_cb *cb, in mei_cl_irq_read() argument
260 cb->buf_idx = 0; in mei_cl_irq_read()
261 list_move_tail(&cb->list, &cmpl_list->list); in mei_cl_irq_read()
265 list_move_tail(&cb->list, &cl->rd_pending); in mei_cl_irq_read()
280 static int mei_cl_irq_connect(struct mei_cl *cl, struct mei_cl_cb *cb, in mei_cl_irq_connect() argument
302 cb->buf_idx = 0; in mei_cl_irq_connect()
303 list_del_init(&cb->list); in mei_cl_irq_connect()
307 list_move_tail(&cb->list, &dev->ctrl_rd_list.list); in mei_cl_irq_connect()
418 struct mei_cl_cb *cb, *next; in mei_irq_write_handler() local
435 list_for_each_entry_safe(cb, next, &list->list, list) { in mei_irq_write_handler()
436 cl = cb->cl; in mei_irq_write_handler()
441 list_move_tail(&cb->list, &cmpl_list->list); in mei_irq_write_handler()
461 list_for_each_entry_safe(cb, next, &dev->ctrl_wr_list.list, list) { in mei_irq_write_handler()
462 cl = cb->cl; in mei_irq_write_handler()
463 switch (cb->fop_type) { in mei_irq_write_handler()
466 ret = mei_cl_irq_disconnect(cl, cb, cmpl_list); in mei_irq_write_handler()
473 ret = mei_cl_irq_read(cl, cb, cmpl_list); in mei_irq_write_handler()
480 ret = mei_cl_irq_connect(cl, cb, cmpl_list); in mei_irq_write_handler()
487 ret = mei_cl_irq_disconnect_rsp(cl, cb, cmpl_list); in mei_irq_write_handler()
498 list_for_each_entry_safe(cb, next, &dev->write_list.list, list) { in mei_irq_write_handler()
499 cl = cb->cl; in mei_irq_write_handler()
501 ret = mei_amthif_irq_write(cl, cb, cmpl_list); in mei_irq_write_handler()
503 ret = mei_cl_irq_write(cl, cb, cmpl_list); in mei_irq_write_handler()