Lines Matching defs:xfer

314 					      struct spi_transfer *xfer,
317 int l2len = min(fls(xfer->len), SPI_STATISTICS_HISTO_SIZE) - 1;
330 u64_stats_add(&stats->bytes, xfer->len);
331 if (spi_valid_txbuf(msg, xfer))
332 u64_stats_add(&stats->bytes_tx, xfer->len);
333 if (spi_valid_rxbuf(msg, xfer))
334 u64_stats_add(&stats->bytes_rx, xfer->len);
1226 struct spi_transfer *xfer;
1246 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
1250 if (!ctlr->can_dma(ctlr, msg->spi, xfer))
1253 if (xfer->tx_buf != NULL) {
1254 ret = spi_map_buf_attrs(ctlr, tx_dev, &xfer->tx_sg,
1255 (void *)xfer->tx_buf,
1256 xfer->len, DMA_TO_DEVICE,
1262 if (xfer->rx_buf != NULL) {
1263 ret = spi_map_buf_attrs(ctlr, rx_dev, &xfer->rx_sg,
1264 xfer->rx_buf, xfer->len,
1268 &xfer->tx_sg, DMA_TO_DEVICE,
1287 struct spi_transfer *xfer;
1292 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
1296 if (!ctlr->can_dma(ctlr, msg->spi, xfer))
1299 spi_unmap_buf_attrs(ctlr, rx_dev, &xfer->rx_sg,
1301 spi_unmap_buf_attrs(ctlr, tx_dev, &xfer->tx_sg,
1311 struct spi_transfer *xfer)
1319 dma_sync_sgtable_for_device(tx_dev, &xfer->tx_sg, DMA_TO_DEVICE);
1320 dma_sync_sgtable_for_device(rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE);
1324 struct spi_transfer *xfer)
1332 dma_sync_sgtable_for_cpu(rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE);
1333 dma_sync_sgtable_for_cpu(tx_dev, &xfer->tx_sg, DMA_TO_DEVICE);
1349 struct spi_transfer *xfer)
1354 struct spi_transfer *xfer)
1362 struct spi_transfer *xfer;
1364 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
1369 if (xfer->tx_buf == ctlr->dummy_tx)
1370 xfer->tx_buf = NULL;
1371 if (xfer->rx_buf == ctlr->dummy_rx)
1372 xfer->rx_buf = NULL;
1380 struct spi_transfer *xfer;
1389 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
1391 !xfer->tx_buf)
1392 max_tx = max(xfer->len, max_tx);
1394 !xfer->rx_buf)
1395 max_rx = max(xfer->len, max_rx);
1415 list_for_each_entry(xfer, &msg->transfers,
1417 if (!xfer->len)
1419 if (!xfer->tx_buf)
1420 xfer->tx_buf = ctlr->dummy_tx;
1421 if (!xfer->rx_buf)
1422 xfer->rx_buf = ctlr->dummy_rx;
1432 struct spi_transfer *xfer)
1436 u32 speed_hz = xfer->speed_hz;
1454 ms = 8LL * MSEC_PER_SEC * xfer->len;
1476 if (xfer->error & SPI_TRANS_FAIL_IO)
1499 int spi_delay_to_ns(struct spi_delay *_delay, struct spi_transfer *xfer)
1517 if (!xfer)
1523 hz = xfer->effective_speed_hz ?: xfer->speed_hz / 2;
1538 int spi_delay_exec(struct spi_delay *_delay, struct spi_transfer *xfer)
1547 delay = spi_delay_to_ns(_delay, xfer);
1558 struct spi_transfer *xfer)
1561 u32 delay = xfer->cs_change_delay.value;
1562 u32 unit = xfer->cs_change_delay.unit;
1572 ret = spi_delay_exec(&xfer->cs_change_delay, xfer);
1582 struct spi_transfer *xfer)
1584 _spi_transfer_cs_change_delay(msg, xfer);
1598 struct spi_transfer *xfer;
1604 xfer = list_first_entry(&msg->transfers, struct spi_transfer, transfer_list);
1605 spi_set_cs(msg->spi, !xfer->cs_off, false);
1610 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
1611 trace_spi_transfer_start(msg, xfer);
1613 spi_statistics_add_transfer_stats(statm, xfer, msg);
1614 spi_statistics_add_transfer_stats(stats, xfer, msg);
1617 xfer->ptp_sts_word_pre = 0;
1618 ptp_read_system_prets(xfer->ptp_sts);
1621 if ((xfer->tx_buf || xfer->rx_buf) && xfer->len) {
1625 spi_dma_sync_for_device(ctlr, xfer);
1626 ret = ctlr->transfer_one(ctlr, msg->spi, xfer);
1628 spi_dma_sync_for_cpu(ctlr, xfer);
1631 (xfer->error & SPI_TRANS_FAIL_NO_START)) {
1634 xfer->error &= ~SPI_TRANS_FAIL_NO_START;
1648 ret = spi_transfer_wait(ctlr, msg, xfer);
1653 spi_dma_sync_for_cpu(ctlr, xfer);
1655 if (xfer->len)
1658 xfer->len);
1662 ptp_read_system_postts(xfer->ptp_sts);
1663 xfer->ptp_sts_word_post = xfer->len;
1666 trace_spi_transfer_stop(msg, xfer);
1671 spi_transfer_delay_exec(xfer);
1673 if (xfer->cs_change) {
1674 if (list_is_last(&xfer->transfer_list,
1678 if (!xfer->cs_off)
1680 _spi_transfer_cs_change_delay(msg, xfer);
1681 if (!list_next_entry(xfer, transfer_list)->cs_off)
1684 } else if (!list_is_last(&xfer->transfer_list, &msg->transfers) &&
1685 xfer->cs_off != list_next_entry(xfer, transfer_list)->cs_off) {
1686 spi_set_cs(msg->spi, xfer->cs_off, false);
1689 msg->actual_length += xfer->len;
1732 struct spi_transfer *xfer;
1791 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
1792 xfer->ptp_sts_word_pre = 0;
1793 ptp_read_system_prets(xfer->ptp_sts);
1943 * @xfer: Pointer to the transfer being timestamped
1961 struct spi_transfer *xfer,
1964 if (!xfer->ptp_sts)
1967 if (xfer->timestamped)
1970 if (progress > xfer->ptp_sts_word_pre)
1974 xfer->ptp_sts_word_pre = progress;
1981 ptp_read_system_prets(xfer->ptp_sts);
1988 * @xfer: Pointer to the transfer being timestamped
1998 struct spi_transfer *xfer,
2001 if (!xfer->ptp_sts)
2004 if (xfer->timestamped)
2007 if (progress < xfer->ptp_sts_word_post)
2010 ptp_read_system_postts(xfer->ptp_sts);
2018 xfer->ptp_sts_word_post = progress;
2020 xfer->timestamped = 1;
2144 struct spi_transfer *xfer;
2151 list_for_each_entry(xfer, &mesg->transfers, transfer_list) {
2152 ptp_read_system_postts(xfer->ptp_sts);
2153 xfer->ptp_sts_word_post = xfer->len;
2158 list_for_each_entry(xfer, &mesg->transfers, transfer_list)
2159 WARN_ON_ONCE(xfer->ptp_sts && !xfer->timestamped);
3597 struct spi_transfer *xfer;
3655 * Create copy of the given xfer with identical settings
3660 xfer = &rxfer->inserted_transfers[insert - 1 - i];
3663 memcpy(xfer, xfer_first, sizeof(*xfer));
3666 list_add(&xfer->transfer_list, rxfer->replaced_after);
3670 xfer->cs_change = false;
3671 xfer->delay.value = 0;
3689 struct spi_transfer *xfer = *xferp, *xfers;
3695 count = DIV_ROUND_UP(xfer->len, maxsize);
3698 srt = spi_replace_transfers(msg, xfer, 1, count, NULL, 0, GFP_KERNEL);
3715 xfers[0].len = min_t(size_t, maxsize, xfer[0].len);
3762 struct spi_transfer *xfer;
3767 * but note that xfer is advanced to the last transfer inserted
3768 * to avoid checking sizes again unnecessarily (also xfer does
3772 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
3773 if (xfer->len > maxsize) {
3774 ret = __spi_split_transfer_maxsize(ctlr, msg, &xfer,
3804 struct spi_transfer *xfer;
3808 * but note that xfer is advanced to the last transfer inserted
3809 * to avoid checking sizes again unnecessarily (also xfer does
3813 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
3817 maxsize = maxwords * roundup_pow_of_two(BITS_TO_BYTES(xfer->bits_per_word));
3818 if (xfer->len > maxsize) {
3819 ret = __spi_split_transfer_maxsize(ctlr, msg, &xfer,
4030 static int _spi_xfer_word_delay_update(struct spi_transfer *xfer,
4035 delay1 = spi_delay_to_ns(&xfer->word_delay, xfer);
4039 delay2 = spi_delay_to_ns(&spi->word_delay, xfer);
4044 memcpy(&xfer->word_delay, &spi->word_delay,
4045 sizeof(xfer->word_delay));
4053 struct spi_transfer *xfer;
4071 list_for_each_entry(xfer, &message->transfers, transfer_list) {
4072 if (xfer->rx_buf && xfer->tx_buf)
4074 if ((flags & SPI_CONTROLLER_NO_TX) && xfer->tx_buf)
4076 if ((flags & SPI_CONTROLLER_NO_RX) && xfer->rx_buf)
4090 list_for_each_entry(xfer, &message->transfers, transfer_list) {
4091 xfer->effective_speed_hz = 0;
4092 message->frame_length += xfer->len;
4093 if (!xfer->bits_per_word)
4094 xfer->bits_per_word = spi->bits_per_word;
4096 if (!xfer->speed_hz)
4097 xfer->speed_hz = spi->max_speed_hz;
4099 if (ctlr->max_speed_hz && xfer->speed_hz > ctlr->max_speed_hz)
4100 xfer->speed_hz = ctlr->max_speed_hz;
4102 if (__spi_validate_bits_per_word(ctlr, xfer->bits_per_word))
4109 if (xfer->bits_per_word <= 8)
4111 else if (xfer->bits_per_word <= 16)
4117 if (xfer->len % w_size)
4120 if (xfer->speed_hz && ctlr->min_speed_hz &&
4121 xfer->speed_hz < ctlr->min_speed_hz)
4124 if (xfer->tx_buf && !xfer->tx_nbits)
4125 xfer->tx_nbits = SPI_NBITS_SINGLE;
4126 if (xfer->rx_buf && !xfer->rx_nbits)
4127 xfer->rx_nbits = SPI_NBITS_SINGLE;
4133 if (xfer->tx_buf) {
4136 if (xfer->tx_nbits != SPI_NBITS_SINGLE &&
4137 xfer->tx_nbits != SPI_NBITS_DUAL &&
4138 xfer->tx_nbits != SPI_NBITS_QUAD)
4140 if ((xfer->tx_nbits == SPI_NBITS_DUAL) &&
4143 if ((xfer->tx_nbits == SPI_NBITS_QUAD) &&
4148 if (xfer->rx_buf) {
4151 if (xfer->rx_nbits != SPI_NBITS_SINGLE &&
4152 xfer->rx_nbits != SPI_NBITS_DUAL &&
4153 xfer->rx_nbits != SPI_NBITS_QUAD)
4155 if ((xfer->rx_nbits == SPI_NBITS_DUAL) &&
4158 if ((xfer->rx_nbits == SPI_NBITS_QUAD) &&
4163 if (_spi_xfer_word_delay_update(xfer, spi))
4190 struct spi_transfer *xfer;
4206 list_for_each_entry(xfer, &msg->transfers, transfer_list) {
4208 if (list_is_last(&xfer->transfer_list, &msg->transfers))
4211 xfer->cs_change = 1;
4289 * of updating the contents of any xfer->tx_buf (the pointer can't be changed,
4336 struct spi_transfer *xfer;
4351 list_for_each_entry(xfer, &message->transfers, transfer_list) {
4352 xfer->ptp_sts_word_pre = 0;
4353 ptp_read_system_prets(xfer->ptp_sts);