Home
last modified time | relevance | path

Searched refs:xfer (Results 1 – 25 of 285) sorted by relevance

12345678910>>...12

/linux/drivers/i3c/master/mipi-i3c-hci/
H A Dcmd_v2.c91 struct hci_xfer *xfer, in hci_cmd_v2_prep_private_xfer() argument
95 u8 *data = xfer->data; in hci_cmd_v2_prep_private_xfer()
96 unsigned int data_len = xfer->data_len; in hci_cmd_v2_prep_private_xfer()
97 bool rnw = xfer->rnw; in hci_cmd_v2_prep_private_xfer()
99 xfer->cmd_tid = hci_get_tid(); in hci_cmd_v2_prep_private_xfer()
102 xfer->cmd_desc[0] = in hci_cmd_v2_prep_private_xfer()
104 CMD_U0_TID(xfer->cmd_tid) | in hci_cmd_v2_prep_private_xfer()
109 xfer->cmd_desc[1] = in hci_cmd_v2_prep_private_xfer()
111 xfer->cmd_desc[2] = 0; in hci_cmd_v2_prep_private_xfer()
112 xfer->cmd_desc[3] = 0; in hci_cmd_v2_prep_private_xfer()
[all …]
H A Dcmd_v1.c144 static void fill_data_bytes(struct hci_xfer *xfer, u8 *data, in fill_data_bytes() argument
147 xfer->cmd_desc[1] = 0; in fill_data_bytes()
150 xfer->cmd_desc[1] |= CMD_I1_DATA_BYTE_4(data[3]); in fill_data_bytes()
153 xfer->cmd_desc[1] |= CMD_I1_DATA_BYTE_3(data[2]); in fill_data_bytes()
156 xfer->cmd_desc[1] |= CMD_I1_DATA_BYTE_2(data[1]); in fill_data_bytes()
159 xfer->cmd_desc[1] |= CMD_I1_DATA_BYTE_1(data[0]); in fill_data_bytes()
165 xfer->data = NULL; in fill_data_bytes()
169 struct hci_xfer *xfer, in hci_cmd_v1_prep_ccc() argument
174 u8 *data = xfer->data; in hci_cmd_v1_prep_ccc()
175 unsigned int data_len = xfer->data_len; in hci_cmd_v1_prep_ccc()
[all …]
H A Dpio.c247 static void hci_pio_write_cmd(struct i3c_hci *hci, struct hci_xfer *xfer) in hci_pio_write_cmd() argument
250 0, xfer->cmd_desc[0]); in hci_pio_write_cmd()
252 1, xfer->cmd_desc[1]); in hci_pio_write_cmd()
253 pio_reg_write(COMMAND_QUEUE_PORT, xfer->cmd_desc[0]); in hci_pio_write_cmd()
254 pio_reg_write(COMMAND_QUEUE_PORT, xfer->cmd_desc[1]); in hci_pio_write_cmd()
257 2, xfer->cmd_desc[2]); in hci_pio_write_cmd()
259 3, xfer->cmd_desc[3]); in hci_pio_write_cmd()
260 pio_reg_write(COMMAND_QUEUE_PORT, xfer->cmd_desc[2]); in hci_pio_write_cmd()
261 pio_reg_write(COMMAND_QUEUE_PORT, xfer->cmd_desc[3]); in hci_pio_write_cmd()
267 struct hci_xfer *xfer = pio->curr_rx; in hci_pio_do_rx() local
[all …]
H A Dcore.c249 int i3c_hci_process_xfer(struct i3c_hci *hci, struct hci_xfer *xfer, int n) in i3c_hci_process_xfer() argument
251 struct completion *done = xfer[n - 1].completion; in i3c_hci_process_xfer()
252 unsigned long timeout = xfer[n - 1].timeout; in i3c_hci_process_xfer()
255 ret = hci->io->queue_xfer(hci, xfer, n); in i3c_hci_process_xfer()
260 if (hci->io->dequeue_xfer(hci, xfer, n)) { in i3c_hci_process_xfer()
271 error = RESP_STATUS(xfer[i].response); in i3c_hci_process_xfer()
273 return hci->io->handle_error(hci, xfer, n); in i3c_hci_process_xfer()
283 struct hci_xfer *xfer; in i3c_hci_send_ccc_cmd() local
293 xfer = hci_alloc_xfer(nxfers); in i3c_hci_send_ccc_cmd()
294 if (!xfer) in i3c_hci_send_ccc_cmd()
[all …]
H A Ddma.c128 void *xfer, *resp, *ibi_status, *ibi_data; member
188 if (rh->xfer) in hci_dma_free()
191 rh->xfer, rh->xfer_dma); in hci_dma_free()
360 rh->xfer = dma_alloc_coherent(rings->sysdev, xfers_sz, in hci_dma_init()
367 if (!rh->xfer || !rh->resp || !rh->src_xfers) in hci_dma_init()
430 struct hci_xfer *xfer; in hci_dma_unmap_xfer() local
434 xfer = xfer_list + i; in hci_dma_unmap_xfer()
435 if (!xfer->data) in hci_dma_unmap_xfer()
437 i3c_master_dma_unmap_single(xfer->dma); in hci_dma_unmap_xfer()
441 static struct i3c_dma *hci_dma_map_xfer(struct device *dev, struct hci_xfer *xfer) in hci_dma_map_xfer() argument
[all …]
/linux/drivers/firmware/
H A Dti_sci.c242 struct ti_sci_xfer *xfer; in ti_sci_rx_callback() local
256 xfer = &minfo->xfer_block[xfer_id]; in ti_sci_rx_callback()
265 if (mbox_msg->len < xfer->rx_len) { in ti_sci_rx_callback()
267 mbox_msg->len, xfer->rx_len); in ti_sci_rx_callback()
274 memcpy(xfer->xfer_buf, mbox_msg->buf, xfer->rx_len); in ti_sci_rx_callback()
275 complete(&xfer->done); in ti_sci_rx_callback()
301 struct ti_sci_xfer *xfer; in ti_sci_get_one_xfer() local
341 xfer = &minfo->xfer_block[xfer_id]; in ti_sci_get_one_xfer()
343 hdr = (struct ti_sci_msg_hdr *)xfer->tx_message.buf; in ti_sci_get_one_xfer()
344 xfer->tx_message.len = tx_message_size; in ti_sci_get_one_xfer()
[all …]
/linux/drivers/spi/
H A Dspi-atmel.c480 static inline bool atmel_spi_is_vmalloc_xfer(struct spi_transfer *xfer) in atmel_spi_is_vmalloc_xfer() argument
482 return is_vmalloc_addr(xfer->tx_buf) || is_vmalloc_addr(xfer->rx_buf); in atmel_spi_is_vmalloc_xfer()
486 struct spi_transfer *xfer) in atmel_spi_use_dma() argument
488 return as->use_dma && xfer->len >= DMA_MIN_BYTES; in atmel_spi_use_dma()
493 struct spi_transfer *xfer) in atmel_spi_can_dma() argument
498 return atmel_spi_use_dma(as, xfer) && in atmel_spi_can_dma()
499 !atmel_spi_is_vmalloc_xfer(xfer); in atmel_spi_can_dma()
501 return atmel_spi_use_dma(as, xfer); in atmel_spi_can_dma()
644 struct spi_transfer *xfer) in atmel_spi_next_xfer_single() argument
647 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_single()
[all …]
H A Dspi-axi-spi-engine.c229 struct spi_transfer *xfer, u32 num_lanes) in spi_engine_gen_xfer() argument
233 if (xfer->bits_per_word <= 8) in spi_engine_gen_xfer()
234 len = xfer->len; in spi_engine_gen_xfer()
235 else if (xfer->bits_per_word <= 16) in spi_engine_gen_xfer()
236 len = xfer->len / 2; in spi_engine_gen_xfer()
238 len = xfer->len / 4; in spi_engine_gen_xfer()
240 if (xfer->multi_lane_mode == SPI_MULTI_LANE_MODE_STRIPE) in spi_engine_gen_xfer()
247 if (xfer->tx_buf || (xfer->offload_flags & SPI_OFFLOAD_XFER_TX_STREAM)) in spi_engine_gen_xfer()
249 if (xfer->rx_buf || (xfer->offload_flags & SPI_OFFLOAD_XFER_RX_STREAM)) in spi_engine_gen_xfer()
307 struct spi_transfer *xfer; in spi_engine_precompile_message() local
[all …]
H A Dspi.c308 struct spi_transfer *xfer, in spi_statistics_add_transfer_stats() argument
311 int l2len = min(fls(xfer->len), SPI_STATISTICS_HISTO_SIZE) - 1; in spi_statistics_add_transfer_stats()
324 u64_stats_add(&stats->bytes, xfer->len); in spi_statistics_add_transfer_stats()
325 if (spi_valid_txbuf(msg, xfer)) in spi_statistics_add_transfer_stats()
326 u64_stats_add(&stats->bytes_tx, xfer->len); in spi_statistics_add_transfer_stats()
327 if (spi_valid_rxbuf(msg, xfer)) in spi_statistics_add_transfer_stats()
328 u64_stats_add(&stats->bytes_rx, xfer->len); in spi_statistics_add_transfer_stats()
1220 struct spi_transfer *xfer; in __spi_map_msg() local
1241 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in __spi_map_msg()
1245 if (!ctlr->can_dma(ctlr, msg->spi, xfer)) in __spi_map_msg()
[all …]
H A Dspi-amlogic-spisg.c220 struct spi_transfer *xfer) in aml_spisg_can_dma() argument
249 struct spi_transfer *xfer, in aml_spisg_setup_transfer() argument
263 aml_spisg_set_speed(spisg, xfer->speed_hz); in aml_spisg_setup_transfer()
264 xfer->effective_speed_hz = spisg->effective_speed_hz; in aml_spisg_setup_transfer()
269 block_size = xfer->bits_per_word >> 3; in aml_spisg_setup_transfer()
270 blocks = xfer->len / block_size; in aml_spisg_setup_transfer()
273 desc->cfg_bus |= FIELD_PREP(CFG_KEEP_SS, !xfer->cs_change); in aml_spisg_setup_transfer()
276 if (xfer->tx_buf || xfer->tx_dma) { in aml_spisg_setup_transfer()
277 desc->cfg_bus |= FIELD_PREP(CFG_LANE, nbits_to_lane[xfer->tx_nbits]); in aml_spisg_setup_transfer()
280 if (xfer->rx_buf || xfer->rx_dma) { in aml_spisg_setup_transfer()
[all …]
H A Dspi-geni-qcom.c154 const struct spi_transfer *xfer; in handle_se_timeout() local
160 xfer = mas->cur_xfer; in handle_se_timeout()
194 if (xfer) { in handle_se_timeout()
195 if (xfer->tx_buf) { in handle_se_timeout()
204 if (xfer->rx_buf) { in handle_se_timeout()
394 static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas, in setup_gsi_xfer() argument
407 if (xfer->bits_per_word != mas->cur_bits_per_word || in setup_gsi_xfer()
408 xfer->speed_hz != mas->cur_speed_hz) { in setup_gsi_xfer()
409 mas->cur_bits_per_word = xfer->bits_per_word; in setup_gsi_xfer()
410 mas->cur_speed_hz = xfer->speed_hz; in setup_gsi_xfer()
[all …]
/linux/drivers/firmware/arm_scmi/
H A Dmsg.c33 static size_t msg_command_size(struct scmi_xfer *xfer) in msg_command_size() argument
35 return sizeof(struct scmi_msg_payld) + xfer->tx.len; in msg_command_size()
45 static size_t msg_response_size(struct scmi_xfer *xfer) in msg_response_size() argument
47 return sizeof(struct scmi_msg_payld) + sizeof(__le32) + xfer->rx.len; in msg_response_size()
56 static void msg_tx_prepare(struct scmi_msg_payld *msg, struct scmi_xfer *xfer) in msg_tx_prepare() argument
58 msg->msg_header = cpu_to_le32(pack_scmi_header(&xfer->hdr)); in msg_tx_prepare()
59 if (xfer->tx.buf) in msg_tx_prepare()
60 memcpy(msg->msg_payload, xfer->tx.buf, xfer->tx.len); in msg_tx_prepare()
83 size_t len, struct scmi_xfer *xfer) in msg_fetch_response() argument
87 xfer->hdr.status = le32_to_cpu(msg->msg_payload[0]); in msg_fetch_response()
[all …]
H A Draw_mode.c206 struct scmi_xfer *xfer; member
336 scmi_xfer_raw_waiter_get(struct scmi_raw_mode_info *raw, struct scmi_xfer *xfer, in scmi_xfer_raw_waiter_get() argument
349 xfer->async_done = &rw->async_response; in scmi_xfer_raw_waiter_get()
353 rw->xfer = xfer; in scmi_xfer_raw_waiter_get()
363 if (rw->xfer) { in scmi_xfer_raw_waiter_put()
364 rw->xfer->async_done = NULL; in scmi_xfer_raw_waiter_put()
365 rw->xfer = NULL; in scmi_xfer_raw_waiter_put()
379 trace_scmi_xfer_response_wait(rw->xfer->transfer_id, rw->xfer->hdr.id, in scmi_xfer_raw_waiter_enqueue()
380 rw->xfer->hdr.protocol_id, in scmi_xfer_raw_waiter_enqueue()
381 rw->xfer->hdr.seq, in scmi_xfer_raw_waiter_enqueue()
[all …]
/linux/drivers/dma/dw-edma/
H A Ddw-edma-core.c351 dw_edma_device_transfer(struct dw_edma_transfer *xfer) in dw_edma_device_transfer() argument
353 struct dw_edma_chan *chan = dchan2dw_edma_chan(xfer->dchan); in dw_edma_device_transfer()
354 enum dma_transfer_direction dir = xfer->direction; in dw_edma_device_transfer()
403 if (xfer->type == EDMA_XFER_CYCLIC) { in dw_edma_device_transfer()
404 if (!xfer->xfer.cyclic.len || !xfer->xfer.cyclic.cnt) in dw_edma_device_transfer()
406 } else if (xfer->type == EDMA_XFER_SCATTER_GATHER) { in dw_edma_device_transfer()
407 if (xfer->xfer.sg.len < 1) in dw_edma_device_transfer()
409 } else if (xfer->type == EDMA_XFER_INTERLEAVED) { in dw_edma_device_transfer()
410 if (!xfer->xfer.il->numf || xfer->xfer.il->frame_size < 1) in dw_edma_device_transfer()
412 if (!xfer->xfer.il->src_inc || !xfer->xfer.il->dst_inc) in dw_edma_device_transfer()
[all …]
/linux/include/trace/events/
H A Dspi.h174 #define spi_valid_txbuf(msg, xfer) \ argument
175 (xfer->tx_buf && xfer->tx_buf != msg->spi->controller->dummy_tx)
176 #define spi_valid_rxbuf(msg, xfer) \ argument
177 (xfer->rx_buf && xfer->rx_buf != msg->spi->controller->dummy_rx)
181 TP_PROTO(struct spi_message *msg, struct spi_transfer *xfer),
183 TP_ARGS(msg, xfer),
188 __field( struct spi_transfer *, xfer )
191 spi_valid_rxbuf(msg, xfer) ?
192 (xfer->len < 64 ? xfer->len : 64) : 0)
194 spi_valid_txbuf(msg, xfer) ?
[all …]
/linux/drivers/iio/imu/
H A Dadis_buffer.c36 adis->xfer = kzalloc_objs(*adis->xfer, 2); in adis_update_scan_mode_burst()
37 if (!adis->xfer) in adis_update_scan_mode_burst()
42 kfree(adis->xfer); in adis_update_scan_mode_burst()
43 adis->xfer = NULL; in adis_update_scan_mode_burst()
51 adis->xfer[0].tx_buf = tx; in adis_update_scan_mode_burst()
52 adis->xfer[0].len = 2; in adis_update_scan_mode_burst()
54 adis->xfer[0].speed_hz = adis->data->burst_max_speed_hz; in adis_update_scan_mode_burst()
55 adis->xfer[1].rx_buf = adis->buffer; in adis_update_scan_mode_burst()
56 adis->xfer[1].len = burst_length; in adis_update_scan_mode_burst()
58 adis->xfer[1].speed_hz = adis->data->burst_max_speed_hz; in adis_update_scan_mode_burst()
[all …]
/linux/drivers/staging/greybus/
H A Dspilib.c151 static struct spi_transfer *get_next_xfer(struct spi_transfer *xfer, in get_next_xfer() argument
154 if (xfer == list_last_entry(&msg->transfers, struct spi_transfer, in get_next_xfer()
158 return list_next_entry(xfer, transfer_list); in get_next_xfer()
167 struct spi_transfer *xfer; in gb_spi_operation_create() local
178 xfer = spi->first_xfer; in gb_spi_operation_create()
184 spi->last_xfer = xfer; in gb_spi_operation_create()
186 if (!xfer->tx_buf && !xfer->rx_buf) { in gb_spi_operation_create()
188 "bufferless transfer, length %u\n", xfer->len); in gb_spi_operation_create()
196 if (xfer->tx_buf) { in gb_spi_operation_create()
197 len = xfer->len - spi->tx_xfer_offset; in gb_spi_operation_create()
[all …]
/linux/drivers/firmware/samsung/
H A Dexynos-acpm-dvfs.c23 static void acpm_dvfs_set_xfer(struct acpm_xfer *xfer, u32 *cmd, size_t cmdlen, in acpm_dvfs_set_xfer() argument
26 xfer->acpm_chan_id = acpm_chan_id; in acpm_dvfs_set_xfer()
27 xfer->txd = cmd; in acpm_dvfs_set_xfer()
28 xfer->txlen = cmdlen; in acpm_dvfs_set_xfer()
31 xfer->rxd = cmd; in acpm_dvfs_set_xfer()
32 xfer->rxlen = cmdlen; in acpm_dvfs_set_xfer()
49 struct acpm_xfer xfer = {0}; in acpm_dvfs_set_rate() local
53 acpm_dvfs_set_xfer(&xfer, cmd, sizeof(cmd), acpm_chan_id, false); in acpm_dvfs_set_rate()
55 return acpm_do_xfer(handle, &xfer); in acpm_dvfs_set_rate()
68 struct acpm_xfer xfer; in acpm_dvfs_get_rate() local
[all …]
/linux/drivers/i2c/busses/
H A Di2c-cgbc.c179 static unsigned int cgbc_i2c_xfer_to_cmd(struct cgbc_i2c_transfer xfer, u8 *cmd) in cgbc_i2c_xfer_to_cmd() argument
183 cmd[i++] = CGBC_I2C_CMD_START | xfer.bus_id; in cgbc_i2c_xfer_to_cmd()
185 cmd[i] = (xfer.start) ? CGBC_I2C_START : 0x00; in cgbc_i2c_xfer_to_cmd()
186 if (xfer.stop) in cgbc_i2c_xfer_to_cmd()
188 cmd[i++] |= (xfer.start) ? xfer.write + 1 : xfer.write; in cgbc_i2c_xfer_to_cmd()
190 cmd[i++] = (xfer.last_ack) ? (xfer.read | CGBC_I2C_LAST_ACK) : xfer.read; in cgbc_i2c_xfer_to_cmd()
192 if (xfer.start) in cgbc_i2c_xfer_to_cmd()
193 cmd[i++] = xfer.addr; in cgbc_i2c_xfer_to_cmd()
195 if (xfer.write > 0) in cgbc_i2c_xfer_to_cmd()
196 memcpy(&cmd[i], &xfer.data, xfer.write); in cgbc_i2c_xfer_to_cmd()
[all …]
/linux/drivers/input/touchscreen/
H A Dad7877.c147 struct spi_transfer xfer[6]; member
177 struct spi_transfer xfer[AD7877_NR_SENSE + 2]; member
212 req->xfer[0].tx_buf = &req->command; in ad7877_read()
213 req->xfer[0].len = 2; in ad7877_read()
214 req->xfer[0].cs_change = 1; in ad7877_read()
216 req->xfer[1].rx_buf = &req->sample; in ad7877_read()
217 req->xfer[1].len = 2; in ad7877_read()
219 spi_message_add_tail(&req->xfer[0], &req->msg); in ad7877_read()
220 spi_message_add_tail(&req->xfer[1], &req->msg); in ad7877_read()
242 req->xfer[0].tx_buf = &req->command; in ad7877_write()
[all …]
H A Dcyttsp_spi.c40 struct spi_transfer xfer[2]; in cyttsp_spi_xfer() local
62 memset(xfer, 0, sizeof(xfer)); in cyttsp_spi_xfer()
69 xfer[0].tx_buf = wr_buf; in cyttsp_spi_xfer()
70 xfer[0].rx_buf = rd_buf; in cyttsp_spi_xfer()
73 xfer[0].len = length + CY_SPI_CMD_BYTES; in cyttsp_spi_xfer()
74 spi_message_add_tail(&xfer[0], &msg); in cyttsp_spi_xfer()
78 xfer[0].len = CY_SPI_CMD_BYTES; in cyttsp_spi_xfer()
79 spi_message_add_tail(&xfer[0], &msg); in cyttsp_spi_xfer()
81 xfer[1].rx_buf = buf; in cyttsp_spi_xfer()
82 xfer[1].len = length; in cyttsp_spi_xfer()
[all …]
/linux/drivers/i3c/master/
H A Drenesas-i3c.c346 struct renesas_i3c_xfer *xfer; in renesas_i3c_alloc_xfer() local
348 xfer = kzalloc_flex(*xfer, cmds, ncmds); in renesas_i3c_alloc_xfer()
349 if (!xfer) in renesas_i3c_alloc_xfer()
352 INIT_LIST_HEAD(&xfer->node); in renesas_i3c_alloc_xfer()
353 xfer->ncmds = ncmds; in renesas_i3c_alloc_xfer()
354 xfer->ret = -ETIMEDOUT; in renesas_i3c_alloc_xfer()
356 return xfer; in renesas_i3c_alloc_xfer()
361 struct renesas_i3c_xfer *xfer = i3c->xferqueue.cur; in renesas_i3c_start_xfer_locked() local
365 if (!xfer) in renesas_i3c_start_xfer_locked()
368 cmd = xfer->cmds; in renesas_i3c_start_xfer_locked()
[all …]
H A Dadi-i3c-master.c188 struct adi_i3c_xfer *xfer; in adi_i3c_master_alloc_xfer() local
190 xfer = kzalloc_flex(*xfer, cmds, ncmds); in adi_i3c_master_alloc_xfer()
191 if (!xfer) in adi_i3c_master_alloc_xfer()
194 INIT_LIST_HEAD(&xfer->node); in adi_i3c_master_alloc_xfer()
195 xfer->ncmds = ncmds; in adi_i3c_master_alloc_xfer()
196 xfer->ret = -ETIMEDOUT; in adi_i3c_master_alloc_xfer()
198 return xfer; in adi_i3c_master_alloc_xfer()
203 struct adi_i3c_xfer *xfer = master->xferqueue.cur; in adi_i3c_master_start_xfer_locked() local
206 if (!xfer) in adi_i3c_master_start_xfer_locked()
209 for (i = 0; i < xfer->ncmds; i++) { in adi_i3c_master_start_xfer_locked()
[all …]
/linux/drivers/net/ethernet/asix/
H A Dax88796c_spi.c48 struct spi_transfer *xfer = ax_spi->spi_rx_xfer; in axspi_read_rxq() local
53 xfer->tx_buf = ax_spi->cmd_buf; in axspi_read_rxq()
54 xfer->rx_buf = NULL; in axspi_read_rxq()
55 xfer->len = ax_spi->comp ? 2 : 5; in axspi_read_rxq()
56 xfer->bits_per_word = 8; in axspi_read_rxq()
57 spi_message_add_tail(xfer, &ax_spi->rx_msg); in axspi_read_rxq()
59 xfer++; in axspi_read_rxq()
60 xfer->rx_buf = data; in axspi_read_rxq()
61 xfer->tx_buf = NULL; in axspi_read_rxq()
62 xfer->len = len; in axspi_read_rxq()
[all …]
/linux/sound/soc/codecs/
H A Drl6347a.c62 struct i2c_msg xfer[2]; in rl6347a_hw_read() local
83 xfer[0].addr = client->addr; in rl6347a_hw_read()
84 xfer[0].flags = 0; in rl6347a_hw_read()
85 xfer[0].len = 4; in rl6347a_hw_read()
86 xfer[0].buf = (u8 *)&be_reg; in rl6347a_hw_read()
89 xfer[1].addr = client->addr; in rl6347a_hw_read()
90 xfer[1].flags = I2C_M_RD; in rl6347a_hw_read()
91 xfer[1].len = 4; in rl6347a_hw_read()
92 xfer[1].buf = (u8 *)&buf; in rl6347a_hw_read()
94 ret = i2c_transfer(client->adapter, xfer, 2); in rl6347a_hw_read()

12345678910>>...12