Lines Matching refs:xfer

196 	struct hci_xfer *xfer;
206 xfer = hci_alloc_xfer(nxfers);
207 if (!xfer)
211 xfer->data = NULL;
212 xfer->data_len = 0;
213 xfer->rnw = false;
214 hci->cmd->prep_ccc(hci, xfer, I3C_BROADCAST_ADDR,
216 xfer++;
220 xfer[i].data = ccc->dests[i].payload.data;
221 xfer[i].data_len = ccc->dests[i].payload.len;
222 xfer[i].rnw = ccc->rnw;
223 ret = hci->cmd->prep_ccc(hci, &xfer[i], ccc->dests[i].addr,
227 xfer[i].cmd_desc[0] |= CMD_0_ROC;
230 xfer[last].cmd_desc[0] |= CMD_0_TOC;
231 xfer[last].completion = &done;
234 xfer--;
236 ret = hci->io->queue_xfer(hci, xfer, nxfers);
240 hci->io->dequeue_xfer(hci, xfer, nxfers)) {
247 RESP_DATA_LENGTH(xfer[i].response);
248 switch (RESP_STATUS(xfer[i].response)) {
266 hci_free_xfer(xfer, nxfers);
280 struct hci_xfer *xfer)
283 xfer->data == NULL || !is_vmalloc_addr(xfer->data))
286 if (xfer->rnw)
287 xfer->bounce_buf = kzalloc(xfer->data_len, GFP_KERNEL);
289 xfer->bounce_buf = kmemdup(xfer->data,
290 xfer->data_len, GFP_KERNEL);
292 return xfer->bounce_buf == NULL ? -ENOMEM : 0;
296 struct hci_xfer *xfer)
298 if (hci->io != &mipi_i3c_hci_dma || xfer->bounce_buf == NULL)
301 if (xfer->rnw)
302 memcpy(xfer->data, xfer->bounce_buf, xfer->data_len);
304 kfree(xfer->bounce_buf);
313 struct hci_xfer *xfer;
320 xfer = hci_alloc_xfer(nxfers);
321 if (!xfer)
327 xfer[i].data_len = i3c_xfers[i].len;
329 if (xfer[i].data_len >= size_limit)
331 xfer[i].rnw = i3c_xfers[i].rnw;
333 xfer[i].data = i3c_xfers[i].data.in;
336 xfer[i].data = (void *) i3c_xfers[i].data.out;
338 hci->cmd->prep_i3c_xfer(hci, dev, &xfer[i]);
339 xfer[i].cmd_desc[0] |= CMD_0_ROC;
340 ret = i3c_hci_alloc_safe_xfer_buf(hci, &xfer[i]);
345 xfer[last].cmd_desc[0] |= CMD_0_TOC;
346 xfer[last].completion = &done;
348 ret = hci->io->queue_xfer(hci, xfer, nxfers);
352 hci->io->dequeue_xfer(hci, xfer, nxfers)) {
358 i3c_xfers[i].len = RESP_DATA_LENGTH(xfer[i].response);
359 if (RESP_STATUS(xfer[i].response) != RESP_SUCCESS) {
367 i3c_hci_free_safe_xfer_buf(hci, &xfer[i]);
369 hci_free_xfer(xfer, nxfers);
378 struct hci_xfer *xfer;
384 xfer = hci_alloc_xfer(nxfers);
385 if (!xfer)
389 xfer[i].data = i2c_xfers[i].buf;
390 xfer[i].data_len = i2c_xfers[i].len;
391 xfer[i].rnw = i2c_xfers[i].flags & I2C_M_RD;
392 hci->cmd->prep_i2c_xfer(hci, dev, &xfer[i]);
393 xfer[i].cmd_desc[0] |= CMD_0_ROC;
394 ret = i3c_hci_alloc_safe_xfer_buf(hci, &xfer[i]);
399 xfer[last].cmd_desc[0] |= CMD_0_TOC;
400 xfer[last].completion = &done;
402 ret = hci->io->queue_xfer(hci, xfer, nxfers);
406 hci->io->dequeue_xfer(hci, xfer, nxfers)) {
411 if (RESP_STATUS(xfer[i].response) != RESP_SUCCESS) {
419 i3c_hci_free_safe_xfer_buf(hci, &xfer[i]);
421 hci_free_xfer(xfer, nxfers);