Lines Matching refs:xfer
793 struct exynos_dsi_transfer *xfer) in exynos_dsi_send_to_fifo() argument
796 const u8 *payload = xfer->tx_payload + xfer->tx_done; in exynos_dsi_send_to_fifo()
797 u16 length = xfer->tx_len - xfer->tx_done; in exynos_dsi_send_to_fifo()
798 bool first = !xfer->tx_done; in exynos_dsi_send_to_fifo()
802 xfer, xfer->tx_len, xfer->tx_done, xfer->rx_len, xfer->rx_done); in exynos_dsi_send_to_fifo()
807 xfer->tx_done += length; in exynos_dsi_send_to_fifo()
839 reg = (xfer->data[1] << 16) | (xfer->data[0] << 8) | xfer->data_id; in exynos_dsi_send_to_fifo()
845 if (NEQV(xfer->flags & MIPI_DSI_MSG_USE_LPM, in exynos_dsi_send_to_fifo()
847 exynos_dsi_set_cmd_lpm(dsi, xfer->flags & MIPI_DSI_MSG_USE_LPM); in exynos_dsi_send_to_fifo()
853 if (xfer->flags & MIPI_DSI_MSG_REQ_ACK) in exynos_dsi_send_to_fifo()
858 struct exynos_dsi_transfer *xfer) in exynos_dsi_read_from_fifo() argument
860 u8 *payload = xfer->rx_payload + xfer->rx_done; in exynos_dsi_read_from_fifo()
861 bool first = !xfer->rx_done; in exynos_dsi_read_from_fifo()
872 if (xfer->rx_len >= 2) { in exynos_dsi_read_from_fifo()
874 ++xfer->rx_done; in exynos_dsi_read_from_fifo()
880 ++xfer->rx_done; in exynos_dsi_read_from_fifo()
881 xfer->rx_len = xfer->rx_done; in exynos_dsi_read_from_fifo()
882 xfer->result = 0; in exynos_dsi_read_from_fifo()
887 xfer->result = 0; in exynos_dsi_read_from_fifo()
892 if (length > xfer->rx_len) { in exynos_dsi_read_from_fifo()
895 xfer->rx_len, length); in exynos_dsi_read_from_fifo()
896 length = xfer->rx_len; in exynos_dsi_read_from_fifo()
897 } else if (length < xfer->rx_len) in exynos_dsi_read_from_fifo()
898 xfer->rx_len = length; in exynos_dsi_read_from_fifo()
901 length = xfer->rx_len - xfer->rx_done; in exynos_dsi_read_from_fifo()
902 xfer->rx_done += length; in exynos_dsi_read_from_fifo()
929 if (xfer->rx_done == xfer->rx_len) in exynos_dsi_read_from_fifo()
930 xfer->result = 0; in exynos_dsi_read_from_fifo()
944 struct exynos_dsi_transfer *xfer; in exynos_dsi_transfer_start() local
955 xfer = list_first_entry(&dsi->transfer_list, in exynos_dsi_transfer_start()
960 if (xfer->tx_len && xfer->tx_done == xfer->tx_len) in exynos_dsi_transfer_start()
964 exynos_dsi_send_to_fifo(dsi, xfer); in exynos_dsi_transfer_start()
966 if (xfer->tx_len || xfer->rx_len) in exynos_dsi_transfer_start()
969 xfer->result = 0; in exynos_dsi_transfer_start()
970 complete(&xfer->completed); in exynos_dsi_transfer_start()
974 list_del_init(&xfer->list); in exynos_dsi_transfer_start()
985 struct exynos_dsi_transfer *xfer; in exynos_dsi_transfer_finish() local
996 xfer = list_first_entry(&dsi->transfer_list, in exynos_dsi_transfer_finish()
1003 xfer, xfer->tx_len, xfer->tx_done, xfer->rx_len, xfer->rx_done); in exynos_dsi_transfer_finish()
1005 if (xfer->tx_done != xfer->tx_len) in exynos_dsi_transfer_finish()
1008 if (xfer->rx_done != xfer->rx_len) in exynos_dsi_transfer_finish()
1009 exynos_dsi_read_from_fifo(dsi, xfer); in exynos_dsi_transfer_finish()
1011 if (xfer->rx_done != xfer->rx_len) in exynos_dsi_transfer_finish()
1016 list_del_init(&xfer->list); in exynos_dsi_transfer_finish()
1021 if (!xfer->rx_len) in exynos_dsi_transfer_finish()
1022 xfer->result = 0; in exynos_dsi_transfer_finish()
1023 complete(&xfer->completed); in exynos_dsi_transfer_finish()
1029 struct exynos_dsi_transfer *xfer) in exynos_dsi_remove_transfer() argument
1037 xfer == list_first_entry(&dsi->transfer_list, in exynos_dsi_remove_transfer()
1039 list_del_init(&xfer->list); in exynos_dsi_remove_transfer()
1047 list_del_init(&xfer->list); in exynos_dsi_remove_transfer()
1053 struct exynos_dsi_transfer *xfer) in exynos_dsi_transfer() argument
1058 xfer->tx_done = 0; in exynos_dsi_transfer()
1059 xfer->rx_done = 0; in exynos_dsi_transfer()
1060 xfer->result = -ETIMEDOUT; in exynos_dsi_transfer()
1061 init_completion(&xfer->completed); in exynos_dsi_transfer()
1066 list_add_tail(&xfer->list, &dsi->transfer_list); in exynos_dsi_transfer()
1073 wait_for_completion_timeout(&xfer->completed, in exynos_dsi_transfer()
1075 if (xfer->result == -ETIMEDOUT) { in exynos_dsi_transfer()
1076 exynos_dsi_remove_transfer(dsi, xfer); in exynos_dsi_transfer()
1077 dev_err(dsi->dev, "xfer timed out: %*ph %*ph\n", 2, xfer->data, in exynos_dsi_transfer()
1078 xfer->tx_len, xfer->tx_payload); in exynos_dsi_transfer()
1083 return xfer->result; in exynos_dsi_transfer()
1251 struct exynos_dsi_transfer xfer; in exynos_dsi_host_transfer() local
1264 xfer.data_id = msg->type | (msg->channel << 6); in exynos_dsi_host_transfer()
1271 xfer.tx_len = 0; in exynos_dsi_host_transfer()
1272 xfer.data[0] = tx_buf[0]; in exynos_dsi_host_transfer()
1273 xfer.data[1] = (msg->tx_len == 2) ? tx_buf[1] : 0; in exynos_dsi_host_transfer()
1275 xfer.tx_len = msg->tx_len; in exynos_dsi_host_transfer()
1276 xfer.data[0] = msg->tx_len & 0xff; in exynos_dsi_host_transfer()
1277 xfer.data[1] = msg->tx_len >> 8; in exynos_dsi_host_transfer()
1278 xfer.tx_payload = msg->tx_buf; in exynos_dsi_host_transfer()
1281 xfer.rx_len = msg->rx_len; in exynos_dsi_host_transfer()
1282 xfer.rx_payload = msg->rx_buf; in exynos_dsi_host_transfer()
1283 xfer.flags = msg->flags; in exynos_dsi_host_transfer()
1285 ret = exynos_dsi_transfer(dsi, &xfer); in exynos_dsi_host_transfer()
1286 return (ret < 0) ? ret : xfer.rx_done; in exynos_dsi_host_transfer()