Lines Matching refs:cb

144 	struct mei_cl_cb *cb;
148 list_for_each_entry_safe(cb, next, &list->list, list) {
149 if (!cl || (cb->cl && mei_cl_cmp_id(cl, cb->cl))) {
150 list_del(&cb->list);
152 mei_io_cb_free(cb);
170 * mei_io_list_free - removes cb belonging to cl and free them
183 * @cb: mei callback struct
185 void mei_io_cb_free(struct mei_cl_cb *cb)
187 if (cb == NULL)
190 kfree(cb->request_buffer.data);
191 kfree(cb->response_buffer.data);
192 kfree(cb);
205 struct mei_cl_cb *cb;
207 cb = kzalloc(sizeof(struct mei_cl_cb), GFP_KERNEL);
208 if (!cb)
211 mei_io_list_init(cb);
213 cb->file_object = fp;
214 cb->cl = cl;
215 cb->buf_idx = 0;
216 return cb;
222 * @cb: io callback structure
226 * -EINVAL if cb is NULL
229 int mei_io_cb_alloc_req_buf(struct mei_cl_cb *cb, size_t length)
231 if (!cb)
237 cb->request_buffer.data = kmalloc(length, GFP_KERNEL);
238 if (!cb->request_buffer.data)
240 cb->request_buffer.size = length;
246 * @cb: io callback structure
250 * -EINVAL if cb is NULL
253 int mei_io_cb_alloc_resp_buf(struct mei_cl_cb *cb, size_t length)
255 if (!cb)
261 cb->response_buffer.data = kmalloc(length, GFP_KERNEL);
262 if (!cb->response_buffer.data)
264 cb->response_buffer.size = length;
341 * Return: cb on success, NULL on error
346 struct mei_cl_cb *cb;
348 list_for_each_entry(cb, &dev->read_list.list, list)
349 if (mei_cl_cmp_id(cl, cb->cl))
350 return cb;
508 struct mei_cl_cb *cb;
528 cb = mei_io_cb_init(cl, NULL);
529 if (!cb) {
534 cb->fop_type = MEI_FOP_DISCONNECT;
544 list_add_tail(&cb->list, &dev->ctrl_rd_list.list);
546 cl_dbg(dev, cl, "add disconnect cb to control write list\n");
547 list_add_tail(&cb->list, &dev->ctrl_wr_list.list);
573 mei_io_cb_free(cb);
620 struct mei_cl_cb *cb;
635 cb = mei_io_cb_init(cl, file);
636 if (!cb) {
641 cb->fop_type = MEI_FOP_CONNECT;
651 list_add_tail(&cb->list, &dev->ctrl_rd_list.list);
654 list_add_tail(&cb->list, &dev->ctrl_wr_list.list);
681 mei_io_cb_free(cb);
770 struct mei_cl_cb *cb;
799 cb = mei_io_cb_init(cl, NULL);
800 if (!cb) {
807 rets = mei_io_cb_alloc_resp_buf(cb, length);
811 cb->fop_type = MEI_FOP_READ;
817 list_add_tail(&cb->list, &dev->read_list.list);
819 list_add_tail(&cb->list, &dev->ctrl_wr_list.list);
822 cl->read_cb = cb;
830 mei_io_cb_free(cb);
840 * @cb: callback block.
845 int mei_cl_irq_write(struct mei_cl *cl, struct mei_cl_cb *cb,
861 buf = &cb->request_buffer;
873 len = buf->size - cb->buf_idx;
879 mei_hdr.internal = cb->internal;
896 cb->request_buffer.size, cb->buf_idx);
898 rets = mei_write_message(dev, &mei_hdr, buf->data + cb->buf_idx);
901 list_move_tail(&cb->list, &cmpl_list->list);
907 cb->buf_idx += mei_hdr.length;
912 list_move_tail(&cb->list, &dev->write_waiting_list.list);
919 * mei_cl_write - submit a write cb to mei device
923 * @cb: write callback with filled data
928 int mei_cl_write(struct mei_cl *cl, struct mei_cl_cb *cb, bool blocking)
939 if (WARN_ON(!cb))
945 buf = &cb->request_buffer;
956 cb->fop_type = MEI_FOP_WRITE;
957 cb->buf_idx = 0;
964 mei_hdr.internal = cb->internal;
995 cb->buf_idx = mei_hdr.length;
1003 list_add_tail(&cb->list, &dev->write_waiting_list.list);
1005 list_add_tail(&cb->list, &dev->write_list.list);
1037 * @cb: callback block.
1039 void mei_cl_complete(struct mei_cl *cl, struct mei_cl_cb *cb)
1041 if (cb->fop_type == MEI_FOP_WRITE) {
1042 mei_io_cb_free(cb);
1043 cb = NULL;
1048 } else if (cb->fop_type == MEI_FOP_READ &&