Lines Matching refs:cb

99 	struct mei_cl_cb *cb;  in mei_amthif_find_read_list_entry()  local
101 list_for_each_entry(cb, &dev->amthif_rd_complete_list.list, list) in mei_amthif_find_read_list_entry()
102 if (cb->file_object == file) in mei_amthif_find_read_list_entry()
103 return cb; in mei_amthif_find_read_list_entry()
128 struct mei_cl_cb *cb; in mei_amthif_read() local
140 cb = mei_amthif_find_read_list_entry(dev, file); in mei_amthif_read()
143 if (cb == NULL && file->f_flags & O_NONBLOCK) in mei_amthif_read()
148 while (cb == NULL) { in mei_amthif_read()
153 (cb = mei_amthif_find_read_list_entry(dev, file))); in mei_amthif_read()
164 if (cb->status) { in mei_amthif_read()
165 rets = cb->status; in mei_amthif_read()
173 timeout = cb->read_time + in mei_amthif_read()
181 list_del_init(&cb->list); in mei_amthif_read()
186 if (cb->buf_idx >= *offset && length >= (cb->buf_idx - *offset)) in mei_amthif_read()
187 list_del_init(&cb->list); in mei_amthif_read()
188 else if (cb->buf_idx > 0 && cb->buf_idx <= *offset) { in mei_amthif_read()
190 list_del_init(&cb->list); in mei_amthif_read()
199 cb->buf.size); in mei_amthif_read()
200 dev_dbg(dev->dev, "amthif cb->buf_idx - %lu\n", cb->buf_idx); in mei_amthif_read()
204 length = min_t(size_t, length, (cb->buf_idx - *offset)); in mei_amthif_read()
206 if (copy_to_user(ubuf, cb->buf.data + *offset, length)) { in mei_amthif_read()
211 if ((*offset + length) < cb->buf_idx) { in mei_amthif_read()
219 mei_io_cb_free(cb); in mei_amthif_read()
235 struct mei_cl_cb *cb; in mei_amthif_read_start() local
238 cb = mei_io_cb_init(cl, MEI_FOP_READ, file); in mei_amthif_read_start()
239 if (!cb) { in mei_amthif_read_start()
244 rets = mei_io_cb_alloc_buf(cb, mei_cl_mtu(cl)); in mei_amthif_read_start()
248 list_add_tail(&cb->list, &dev->ctrl_wr_list.list); in mei_amthif_read_start()
251 dev->iamthif_file_object = cb->file_object; in mei_amthif_read_start()
252 dev->iamthif_current_cb = cb; in mei_amthif_read_start()
256 mei_io_cb_free(cb); in mei_amthif_read_start()
268 static int mei_amthif_send_cmd(struct mei_cl *cl, struct mei_cl_cb *cb) in mei_amthif_send_cmd() argument
273 if (!cl->dev || !cb) in mei_amthif_send_cmd()
279 dev->iamthif_current_cb = cb; in mei_amthif_send_cmd()
280 dev->iamthif_file_object = cb->file_object; in mei_amthif_send_cmd()
283 ret = mei_cl_write(cl, cb, false); in mei_amthif_send_cmd()
287 if (cb->completed) in mei_amthif_send_cmd()
288 cb->status = mei_amthif_read_start(cl, cb->file_object); in mei_amthif_send_cmd()
303 struct mei_cl_cb *cb; in mei_amthif_run_next_cmd() local
312 cb = list_first_entry_or_null(&dev->amthif_cmd_list.list, in mei_amthif_run_next_cmd()
313 typeof(*cb), list); in mei_amthif_run_next_cmd()
314 if (!cb) in mei_amthif_run_next_cmd()
317 list_del_init(&cb->list); in mei_amthif_run_next_cmd()
318 return mei_amthif_send_cmd(cl, cb); in mei_amthif_run_next_cmd()
329 int mei_amthif_write(struct mei_cl *cl, struct mei_cl_cb *cb) in mei_amthif_write() argument
337 if (WARN_ON(!cb)) in mei_amthif_write()
342 list_add_tail(&cb->list, &dev->amthif_cmd_list.list); in mei_amthif_write()
386 int mei_amthif_irq_write(struct mei_cl *cl, struct mei_cl_cb *cb, in mei_amthif_irq_write() argument
391 ret = mei_cl_irq_write(cl, cb, cmpl_list); in mei_amthif_irq_write()
395 if (cb->completed) in mei_amthif_irq_write()
396 cb->status = mei_amthif_read_start(cl, cb->file_object); in mei_amthif_irq_write()
445 void mei_amthif_complete(struct mei_device *dev, struct mei_cl_cb *cb) in mei_amthif_complete() argument
448 if (cb->fop_type == MEI_FOP_WRITE) { in mei_amthif_complete()
449 if (!cb->status) { in mei_amthif_complete()
451 mei_io_cb_free(cb); in mei_amthif_complete()
458 list_add_tail(&cb->list, &dev->amthif_rd_complete_list.list); in mei_amthif_complete()
466 list_add_tail(&cb->list, &dev->amthif_rd_complete_list.list); in mei_amthif_complete()
496 struct mei_cl_cb *cb, *next; in mei_clear_list() local
500 list_for_each_entry_safe(cb, next, mei_cb_list, list) { in mei_clear_list()
502 if (file == cb->file_object) { in mei_clear_list()
504 if (dev->iamthif_current_cb == cb) { in mei_clear_list()
510 mei_io_cb_free(cb); in mei_clear_list()