Lines Matching refs:cl
35 ssize_t __mei_cl_send(struct mei_cl *cl, const u8 *buf, size_t length, u8 vtag, in __mei_cl_send() argument
38 return __mei_cl_send_timeout(cl, buf, length, vtag, mode, MAX_SCHEDULE_TIMEOUT); in __mei_cl_send()
55 ssize_t __mei_cl_send_timeout(struct mei_cl *cl, const u8 *buf, size_t length, u8 vtag, in __mei_cl_send_timeout() argument
62 if (WARN_ON(!cl || !cl->dev)) in __mei_cl_send_timeout()
65 bus = cl->dev; in __mei_cl_send_timeout()
74 if (!mei_cl_is_connected(cl)) { in __mei_cl_send_timeout()
80 if (!mei_me_cl_is_active(cl->me_cl)) { in __mei_cl_send_timeout()
87 rets = mei_cl_vt_support_check(cl); in __mei_cl_send_timeout()
92 if (length > mei_cl_mtu(cl)) { in __mei_cl_send_timeout()
97 while (cl->tx_cb_queued >= bus->tx_queue_limit) { in __mei_cl_send_timeout()
99 rets = wait_event_interruptible(cl->tx_wait, in __mei_cl_send_timeout()
100 cl->writing_state == MEI_WRITE_COMPLETE || in __mei_cl_send_timeout()
101 (!mei_cl_is_connected(cl))); in __mei_cl_send_timeout()
108 if (!mei_cl_is_connected(cl)) { in __mei_cl_send_timeout()
114 cb = mei_cl_alloc_cb(cl, length, MEI_FOP_WRITE, NULL); in __mei_cl_send_timeout()
131 rets = mei_cl_write(cl, cb, timeout); in __mei_cl_send_timeout()
154 ssize_t __mei_cl_recv(struct mei_cl *cl, u8 *buf, size_t length, u8 *vtag, in __mei_cl_recv() argument
163 if (WARN_ON(!cl || !cl->dev)) in __mei_cl_recv()
166 bus = cl->dev; in __mei_cl_recv()
175 cb = mei_cl_read_cb(cl, NULL); in __mei_cl_recv()
179 rets = mei_cl_read_start(cl, length, NULL); in __mei_cl_recv()
190 if (!waitqueue_active(&cl->rx_wait)) { in __mei_cl_recv()
196 (cl->rx_wait, in __mei_cl_recv()
197 mei_cl_read_cb(cl, NULL) || in __mei_cl_recv()
198 (!mei_cl_is_connected(cl)), in __mei_cl_recv()
209 (cl->rx_wait, in __mei_cl_recv()
210 mei_cl_read_cb(cl, NULL) || in __mei_cl_recv()
211 (!mei_cl_is_connected(cl)))) { in __mei_cl_recv()
220 if (!mei_cl_is_connected(cl)) { in __mei_cl_recv()
226 cb = mei_cl_read_cb(cl, NULL); in __mei_cl_recv()
252 mei_cl_del_rd_completed(cl, cb); in __mei_cl_recv()
275 struct mei_cl *cl = cldev->cl; in mei_cldev_send_vtag() local
277 return __mei_cl_send(cl, buf, length, vtag, MEI_CL_IO_TX_BLOCKING); in mei_cldev_send_vtag()
297 struct mei_cl *cl = cldev->cl; in mei_cldev_recv_vtag() local
299 return __mei_cl_recv(cl, buf, length, vtag, 0, 0); in mei_cldev_recv_vtag()
319 struct mei_cl *cl = cldev->cl; in mei_cldev_recv_nonblock_vtag() local
321 return __mei_cl_recv(cl, buf, length, vtag, MEI_CL_IO_RX_NONBLOCK, 0); in mei_cldev_recv_nonblock_vtag()
392 if (mei_cl_is_connected(cldev->cl)) in mei_cl_bus_rx_work()
393 mei_cl_read_start(cldev->cl, mei_cl_mtu(cldev->cl), NULL); in mei_cl_bus_rx_work()
420 bool mei_cl_bus_notify_event(struct mei_cl *cl) in mei_cl_bus_notify_event() argument
422 struct mei_cl_device *cldev = cl->cldev; in mei_cl_bus_notify_event()
427 if (!cl->notify_ev) in mei_cl_bus_notify_event()
432 cl->notify_ev = false; in mei_cl_bus_notify_event()
445 bool mei_cl_bus_rx_event(struct mei_cl *cl) in mei_cl_bus_rx_event() argument
447 struct mei_cl_device *cldev = cl->cldev; in mei_cl_bus_rx_event()
481 if (mei_cl_is_connected(cldev->cl)) in mei_cldev_register_rx_cb()
482 ret = mei_cl_read_start(cldev->cl, mei_cl_mtu(cldev->cl), NULL); in mei_cldev_register_rx_cb()
522 ret = mei_cl_notify_request(cldev->cl, NULL, 1); in mei_cldev_register_notif_cb()
594 return mei_cl_is_connected(cldev->cl); in mei_cldev_enabled()
629 static inline struct mei_cl_vtag *mei_cl_bus_vtag(struct mei_cl *cl) in mei_cl_bus_vtag() argument
631 return list_first_entry_or_null(&cl->vtag_map, in mei_cl_bus_vtag()
646 struct mei_cl *cl = cldev->cl; in mei_cl_bus_vtag_alloc() local
653 if (mei_cl_vt_support_check(cl) || mei_cl_bus_vtag(cl)) in mei_cl_bus_vtag_alloc()
660 list_add_tail(&cl_vtag->list, &cl->vtag_map); in mei_cl_bus_vtag_alloc()
672 struct mei_cl *cl = cldev->cl; in mei_cl_bus_vtag_free() local
675 cl_vtag = mei_cl_bus_vtag(cl); in mei_cl_bus_vtag_free()
686 struct mei_cl *cl; in mei_cldev_dma_map() local
698 cl = cldev->cl; in mei_cldev_dma_map()
702 if (cl->state == MEI_FILE_UNINITIALIZED) { in mei_cldev_dma_map()
703 ret = mei_cl_link(cl); in mei_cldev_dma_map()
707 cl->cldev = cldev; in mei_cldev_dma_map()
710 ret = mei_cl_dma_alloc_and_map(cl, NULL, buffer_id, size); in mei_cldev_dma_map()
712 mei_cl_unlink(cl); in mei_cldev_dma_map()
717 return cl->dma.vaddr; in mei_cldev_dma_map()
724 struct mei_cl *cl; in mei_cldev_dma_unmap() local
730 cl = cldev->cl; in mei_cldev_dma_unmap()
734 ret = mei_cl_dma_unmap(cl, NULL); in mei_cldev_dma_unmap()
736 mei_cl_flush_queues(cl, NULL); in mei_cldev_dma_unmap()
737 mei_cl_unlink(cl); in mei_cldev_dma_unmap()
754 struct mei_cl *cl; in mei_cldev_enable() local
757 cl = cldev->cl; in mei_cldev_enable()
760 if (cl->state == MEI_FILE_UNINITIALIZED) { in mei_cldev_enable()
761 ret = mei_cl_link(cl); in mei_cldev_enable()
765 cl->cldev = cldev; in mei_cldev_enable()
768 if (mei_cl_is_connected(cl)) { in mei_cldev_enable()
783 ret = mei_cl_connect(cl, cldev->me_cl, NULL); in mei_cldev_enable()
791 mei_cl_unlink(cl); in mei_cldev_enable()
829 struct mei_cl *cl; in mei_cldev_disable() local
835 cl = cldev->cl; in mei_cldev_disable()
845 if (!mei_cl_is_connected(cl)) { in mei_cldev_disable()
851 err = mei_cl_disconnect(cl); in mei_cldev_disable()
857 if (!cl->dma_mapped) { in mei_cldev_disable()
858 mei_cl_flush_queues(cl, NULL); in mei_cldev_disable()
859 mei_cl_unlink(cl); in mei_cldev_disable()
888 struct mei_cl *cl; in mei_cldev_send_gsc_command() local
903 cl = cldev->cl; in mei_cldev_send_gsc_command()
952 ret = __mei_cl_send(cl, (u8 *)ext_hdr, buf_sz, 0, MEI_CL_IO_SGL); in mei_cldev_send_gsc_command()
965 ret = __mei_cl_recv(cl, (u8 *)&rx_msg, sizeof(rx_msg), NULL, MEI_CL_IO_SGL, 0); in mei_cldev_send_gsc_command()
1273 mei_cl_flush_queues(cldev->cl, NULL); in mei_cl_bus_dev_release()
1276 kfree(cldev->cl); in mei_cl_bus_dev_release()
1310 struct mei_cl *cl; in mei_cl_bus_dev_alloc() local
1316 cl = mei_cl_allocate(bus); in mei_cl_bus_dev_alloc()
1317 if (!cl) { in mei_cl_bus_dev_alloc()
1328 cldev->cl = cl; in mei_cl_bus_dev_alloc()