Lines Matching refs:xfer
360 struct dw_i3c_xfer *xfer; in dw_i3c_master_alloc_xfer() local
362 xfer = kzalloc(struct_size(xfer, cmds, ncmds), GFP_KERNEL); in dw_i3c_master_alloc_xfer()
363 if (!xfer) in dw_i3c_master_alloc_xfer()
366 INIT_LIST_HEAD(&xfer->node); in dw_i3c_master_alloc_xfer()
367 xfer->ncmds = ncmds; in dw_i3c_master_alloc_xfer()
368 xfer->ret = -ETIMEDOUT; in dw_i3c_master_alloc_xfer()
370 return xfer; in dw_i3c_master_alloc_xfer()
373 static void dw_i3c_master_free_xfer(struct dw_i3c_xfer *xfer) in dw_i3c_master_free_xfer() argument
375 kfree(xfer); in dw_i3c_master_free_xfer()
380 struct dw_i3c_xfer *xfer = master->xferqueue.cur; in dw_i3c_master_start_xfer_locked() local
384 if (!xfer) in dw_i3c_master_start_xfer_locked()
387 for (i = 0; i < xfer->ncmds; i++) { in dw_i3c_master_start_xfer_locked()
388 struct dw_i3c_cmd *cmd = &xfer->cmds[i]; in dw_i3c_master_start_xfer_locked()
395 thld_ctrl |= QUEUE_THLD_CTRL_RESP_BUF(xfer->ncmds); in dw_i3c_master_start_xfer_locked()
398 for (i = 0; i < xfer->ncmds; i++) { in dw_i3c_master_start_xfer_locked()
399 struct dw_i3c_cmd *cmd = &xfer->cmds[i]; in dw_i3c_master_start_xfer_locked()
407 struct dw_i3c_xfer *xfer) in dw_i3c_master_enqueue_xfer() argument
411 init_completion(&xfer->comp); in dw_i3c_master_enqueue_xfer()
414 list_add_tail(&xfer->node, &master->xferqueue.list); in dw_i3c_master_enqueue_xfer()
416 master->xferqueue.cur = xfer; in dw_i3c_master_enqueue_xfer()
423 struct dw_i3c_xfer *xfer) in dw_i3c_master_dequeue_xfer_locked() argument
425 if (master->xferqueue.cur == xfer) { in dw_i3c_master_dequeue_xfer_locked()
437 list_del_init(&xfer->node); in dw_i3c_master_dequeue_xfer_locked()
442 struct dw_i3c_xfer *xfer) in dw_i3c_master_dequeue_xfer() argument
447 dw_i3c_master_dequeue_xfer_locked(master, xfer); in dw_i3c_master_dequeue_xfer()
453 struct dw_i3c_xfer *xfer = master->xferqueue.cur; in dw_i3c_master_end_xfer_locked() local
457 if (!xfer) in dw_i3c_master_end_xfer_locked()
469 cmd = &xfer->cmds[RESPONSE_PORT_TID(resp)]; in dw_i3c_master_end_xfer_locked()
478 switch (xfer->cmds[i].error) { in dw_i3c_master_end_xfer_locked()
499 xfer->ret = ret; in dw_i3c_master_end_xfer_locked()
500 complete(&xfer->comp); in dw_i3c_master_end_xfer_locked()
503 dw_i3c_master_dequeue_xfer_locked(master, xfer); in dw_i3c_master_end_xfer_locked()
508 xfer = list_first_entry_or_null(&master->xferqueue.list, in dw_i3c_master_end_xfer_locked()
511 if (xfer) in dw_i3c_master_end_xfer_locked()
512 list_del_init(&xfer->node); in dw_i3c_master_end_xfer_locked()
514 master->xferqueue.cur = xfer; in dw_i3c_master_end_xfer_locked()
665 struct dw_i3c_xfer *xfer; in dw_i3c_ccc_set() local
675 xfer = dw_i3c_master_alloc_xfer(master, 1); in dw_i3c_ccc_set()
676 if (!xfer) in dw_i3c_ccc_set()
679 cmd = xfer->cmds; in dw_i3c_ccc_set()
692 dw_i3c_master_enqueue_xfer(master, xfer); in dw_i3c_ccc_set()
693 if (!wait_for_completion_timeout(&xfer->comp, XFER_TIMEOUT)) in dw_i3c_ccc_set()
694 dw_i3c_master_dequeue_xfer(master, xfer); in dw_i3c_ccc_set()
696 ret = xfer->ret; in dw_i3c_ccc_set()
697 if (xfer->cmds[0].error == RESPONSE_ERROR_IBA_NACK) in dw_i3c_ccc_set()
700 dw_i3c_master_free_xfer(xfer); in dw_i3c_ccc_set()
707 struct dw_i3c_xfer *xfer; in dw_i3c_ccc_get() local
715 xfer = dw_i3c_master_alloc_xfer(master, 1); in dw_i3c_ccc_get()
716 if (!xfer) in dw_i3c_ccc_get()
719 cmd = xfer->cmds; in dw_i3c_ccc_get()
733 dw_i3c_master_enqueue_xfer(master, xfer); in dw_i3c_ccc_get()
734 if (!wait_for_completion_timeout(&xfer->comp, XFER_TIMEOUT)) in dw_i3c_ccc_get()
735 dw_i3c_master_dequeue_xfer(master, xfer); in dw_i3c_ccc_get()
737 ret = xfer->ret; in dw_i3c_ccc_get()
738 if (xfer->cmds[0].error == RESPONSE_ERROR_IBA_NACK) in dw_i3c_ccc_get()
740 dw_i3c_master_free_xfer(xfer); in dw_i3c_ccc_get()
765 struct dw_i3c_xfer *xfer; in dw_i3c_master_daa() local
792 xfer = dw_i3c_master_alloc_xfer(master, 1); in dw_i3c_master_daa()
793 if (!xfer) in dw_i3c_master_daa()
798 dw_i3c_master_free_xfer(xfer); in dw_i3c_master_daa()
801 cmd = &xfer->cmds[0]; in dw_i3c_master_daa()
810 dw_i3c_master_enqueue_xfer(master, xfer); in dw_i3c_master_daa()
811 if (!wait_for_completion_timeout(&xfer->comp, XFER_TIMEOUT)) in dw_i3c_master_daa()
812 dw_i3c_master_dequeue_xfer(master, xfer); in dw_i3c_master_daa()
822 dw_i3c_master_free_xfer(xfer); in dw_i3c_master_daa()
835 struct dw_i3c_xfer *xfer; in dw_i3c_master_priv_xfers() local
855 xfer = dw_i3c_master_alloc_xfer(master, i3c_nxfers); in dw_i3c_master_priv_xfers()
856 if (!xfer) in dw_i3c_master_priv_xfers()
860 struct dw_i3c_cmd *cmd = &xfer->cmds[i]; in dw_i3c_master_priv_xfers()
886 dw_i3c_master_enqueue_xfer(master, xfer); in dw_i3c_master_priv_xfers()
887 if (!wait_for_completion_timeout(&xfer->comp, XFER_TIMEOUT)) in dw_i3c_master_priv_xfers()
888 dw_i3c_master_dequeue_xfer(master, xfer); in dw_i3c_master_priv_xfers()
890 ret = xfer->ret; in dw_i3c_master_priv_xfers()
891 dw_i3c_master_free_xfer(xfer); in dw_i3c_master_priv_xfers()
979 struct dw_i3c_xfer *xfer; in dw_i3c_master_i2c_xfers() local
999 xfer = dw_i3c_master_alloc_xfer(master, i2c_nxfers); in dw_i3c_master_i2c_xfers()
1000 if (!xfer) in dw_i3c_master_i2c_xfers()
1004 struct dw_i3c_cmd *cmd = &xfer->cmds[i]; in dw_i3c_master_i2c_xfers()
1026 dw_i3c_master_enqueue_xfer(master, xfer); in dw_i3c_master_i2c_xfers()
1027 if (!wait_for_completion_timeout(&xfer->comp, XFER_TIMEOUT)) in dw_i3c_master_i2c_xfers()
1028 dw_i3c_master_dequeue_xfer(master, xfer); in dw_i3c_master_i2c_xfers()
1030 ret = xfer->ret; in dw_i3c_master_i2c_xfers()
1031 dw_i3c_master_free_xfer(xfer); in dw_i3c_master_i2c_xfers()