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()
298 struct mei_cl *cl = cldev->cl; in mei_cldev_send_vtag_timeout() local
300 return __mei_cl_send_timeout(cl, buf, length, vtag, MEI_CL_IO_TX_BLOCKING, timeout); in mei_cldev_send_vtag_timeout()
320 struct mei_cl *cl = cldev->cl; in mei_cldev_recv_vtag() local
322 return __mei_cl_recv(cl, buf, length, vtag, 0, 0); in mei_cldev_recv_vtag()
362 struct mei_cl *cl = cldev->cl; in mei_cldev_recv_vtag_timeout() local
364 return __mei_cl_recv(cl, buf, length, vtag, 0, timeout); in mei_cldev_recv_vtag_timeout()
437 if (mei_cl_is_connected(cldev->cl)) in mei_cl_bus_rx_work()
438 mei_cl_read_start(cldev->cl, mei_cl_mtu(cldev->cl), NULL); in mei_cl_bus_rx_work()
465 bool mei_cl_bus_notify_event(struct mei_cl *cl) in mei_cl_bus_notify_event() argument
467 struct mei_cl_device *cldev = cl->cldev; in mei_cl_bus_notify_event()
472 if (!cl->notify_ev) in mei_cl_bus_notify_event()
477 cl->notify_ev = false; in mei_cl_bus_notify_event()
490 bool mei_cl_bus_rx_event(struct mei_cl *cl) in mei_cl_bus_rx_event() argument
492 struct mei_cl_device *cldev = cl->cldev; in mei_cl_bus_rx_event()
526 if (mei_cl_is_connected(cldev->cl)) in mei_cldev_register_rx_cb()
527 ret = mei_cl_read_start(cldev->cl, mei_cl_mtu(cldev->cl), NULL); in mei_cldev_register_rx_cb()
567 ret = mei_cl_notify_request(cldev->cl, NULL, 1); in mei_cldev_register_notif_cb()
626 return mei_cl_is_connected(cldev->cl); in mei_cldev_enabled()
661 static inline struct mei_cl_vtag *mei_cl_bus_vtag(struct mei_cl *cl) in mei_cl_bus_vtag() argument
663 return list_first_entry_or_null(&cl->vtag_map, in mei_cl_bus_vtag()
678 struct mei_cl *cl = cldev->cl; in mei_cl_bus_vtag_alloc() local
685 if (mei_cl_vt_support_check(cl) || mei_cl_bus_vtag(cl)) in mei_cl_bus_vtag_alloc()
692 list_add_tail(&cl_vtag->list, &cl->vtag_map); in mei_cl_bus_vtag_alloc()
704 struct mei_cl *cl = cldev->cl; in mei_cl_bus_vtag_free() local
707 cl_vtag = mei_cl_bus_vtag(cl); in mei_cl_bus_vtag_free()
718 struct mei_cl *cl; in mei_cldev_dma_map() local
730 cl = cldev->cl; in mei_cldev_dma_map()
734 if (cl->state == MEI_FILE_UNINITIALIZED) { in mei_cldev_dma_map()
735 ret = mei_cl_link(cl); in mei_cldev_dma_map()
739 cl->cldev = cldev; in mei_cldev_dma_map()
742 ret = mei_cl_dma_alloc_and_map(cl, NULL, buffer_id, size); in mei_cldev_dma_map()
744 mei_cl_unlink(cl); in mei_cldev_dma_map()
749 return cl->dma.vaddr; in mei_cldev_dma_map()
756 struct mei_cl *cl; in mei_cldev_dma_unmap() local
762 cl = cldev->cl; in mei_cldev_dma_unmap()
766 ret = mei_cl_dma_unmap(cl, NULL); in mei_cldev_dma_unmap()
768 mei_cl_flush_queues(cl, NULL); in mei_cldev_dma_unmap()
769 mei_cl_unlink(cl); in mei_cldev_dma_unmap()
786 struct mei_cl *cl; in mei_cldev_enable() local
789 cl = cldev->cl; in mei_cldev_enable()
792 if (cl->state == MEI_FILE_UNINITIALIZED) { in mei_cldev_enable()
793 ret = mei_cl_link(cl); in mei_cldev_enable()
797 cl->cldev = cldev; in mei_cldev_enable()
800 if (mei_cl_is_connected(cl)) { in mei_cldev_enable()
815 ret = mei_cl_connect(cl, cldev->me_cl, NULL); in mei_cldev_enable()
823 mei_cl_unlink(cl); in mei_cldev_enable()
861 struct mei_cl *cl; in mei_cldev_disable() local
867 cl = cldev->cl; in mei_cldev_disable()
877 if (!mei_cl_is_connected(cl)) { in mei_cldev_disable()
883 err = mei_cl_disconnect(cl); in mei_cldev_disable()
889 if (!cl->dma_mapped) { in mei_cldev_disable()
890 mei_cl_flush_queues(cl, NULL); in mei_cldev_disable()
891 mei_cl_unlink(cl); in mei_cldev_disable()
920 struct mei_cl *cl; in mei_cldev_send_gsc_command() local
935 cl = cldev->cl; in mei_cldev_send_gsc_command()
984 ret = __mei_cl_send(cl, (u8 *)ext_hdr, buf_sz, 0, MEI_CL_IO_SGL); in mei_cldev_send_gsc_command()
997 ret = __mei_cl_recv(cl, (u8 *)&rx_msg, sizeof(rx_msg), NULL, MEI_CL_IO_SGL, 0); in mei_cldev_send_gsc_command()
1303 struct mei_device *mdev = cldev->cl->dev; in mei_cl_bus_dev_release()
1304 struct mei_cl *cl; in mei_cl_bus_dev_release() local
1306 mei_cl_flush_queues(cldev->cl, NULL); in mei_cl_bus_dev_release()
1310 list_for_each_entry(cl, &mdev->file_list, link) in mei_cl_bus_dev_release()
1311 WARN_ON(cl == cldev->cl); in mei_cl_bus_dev_release()
1313 kfree(cldev->cl); in mei_cl_bus_dev_release()
1347 struct mei_cl *cl; in mei_cl_bus_dev_alloc() local
1353 cl = mei_cl_allocate(bus); in mei_cl_bus_dev_alloc()
1354 if (!cl) { in mei_cl_bus_dev_alloc()
1365 cldev->cl = cl; in mei_cl_bus_dev_alloc()