Lines Matching refs:xfer

293 				       struct spi_transfer *xfer,  in spi_statistics_add_transfer_stats()  argument
297 int l2len = min(fls(xfer->len), SPI_STATISTICS_HISTO_SIZE) - 1; in spi_statistics_add_transfer_stats()
307 stats->bytes += xfer->len; in spi_statistics_add_transfer_stats()
308 if ((xfer->tx_buf) && in spi_statistics_add_transfer_stats()
309 (xfer->tx_buf != ctlr->dummy_tx)) in spi_statistics_add_transfer_stats()
310 stats->bytes_tx += xfer->len; in spi_statistics_add_transfer_stats()
311 if ((xfer->rx_buf) && in spi_statistics_add_transfer_stats()
312 (xfer->rx_buf != ctlr->dummy_rx)) in spi_statistics_add_transfer_stats()
313 stats->bytes_rx += xfer->len; in spi_statistics_add_transfer_stats()
899 struct spi_transfer *xfer; in __spi_map_msg() local
915 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in __spi_map_msg()
916 if (!ctlr->can_dma(ctlr, msg->spi, xfer)) in __spi_map_msg()
919 if (xfer->tx_buf != NULL) { in __spi_map_msg()
920 ret = spi_map_buf(ctlr, tx_dev, &xfer->tx_sg, in __spi_map_msg()
921 (void *)xfer->tx_buf, xfer->len, in __spi_map_msg()
927 if (xfer->rx_buf != NULL) { in __spi_map_msg()
928 ret = spi_map_buf(ctlr, rx_dev, &xfer->rx_sg, in __spi_map_msg()
929 xfer->rx_buf, xfer->len, in __spi_map_msg()
932 spi_unmap_buf(ctlr, tx_dev, &xfer->tx_sg, in __spi_map_msg()
946 struct spi_transfer *xfer; in __spi_unmap_msg() local
962 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in __spi_unmap_msg()
963 if (!ctlr->can_dma(ctlr, msg->spi, xfer)) in __spi_unmap_msg()
966 spi_unmap_buf(ctlr, rx_dev, &xfer->rx_sg, DMA_FROM_DEVICE); in __spi_unmap_msg()
967 spi_unmap_buf(ctlr, tx_dev, &xfer->tx_sg, DMA_TO_DEVICE); in __spi_unmap_msg()
989 struct spi_transfer *xfer; in spi_unmap_msg() local
991 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in spi_unmap_msg()
996 if (xfer->tx_buf == ctlr->dummy_tx) in spi_unmap_msg()
997 xfer->tx_buf = NULL; in spi_unmap_msg()
998 if (xfer->rx_buf == ctlr->dummy_rx) in spi_unmap_msg()
999 xfer->rx_buf = NULL; in spi_unmap_msg()
1007 struct spi_transfer *xfer; in spi_map_msg() local
1015 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in spi_map_msg()
1017 !xfer->tx_buf) in spi_map_msg()
1018 max_tx = max(xfer->len, max_tx); in spi_map_msg()
1020 !xfer->rx_buf) in spi_map_msg()
1021 max_rx = max(xfer->len, max_rx); in spi_map_msg()
1042 list_for_each_entry(xfer, &msg->transfers, in spi_map_msg()
1044 if (!xfer->len) in spi_map_msg()
1046 if (!xfer->tx_buf) in spi_map_msg()
1047 xfer->tx_buf = ctlr->dummy_tx; in spi_map_msg()
1048 if (!xfer->rx_buf) in spi_map_msg()
1049 xfer->rx_buf = ctlr->dummy_rx; in spi_map_msg()
1059 struct spi_transfer *xfer) in spi_transfer_wait() argument
1071 ms = 8LL * 1000LL * xfer->len; in spi_transfer_wait()
1072 do_div(ms, xfer->speed_hz); in spi_transfer_wait()
1110 struct spi_transfer *xfer) in _spi_transfer_cs_change_delay() argument
1112 u32 delay = xfer->cs_change_delay; in _spi_transfer_cs_change_delay()
1113 u32 unit = xfer->cs_change_delay_unit; in _spi_transfer_cs_change_delay()
1134 hz = xfer->effective_speed_hz ?: xfer->speed_hz / 2; in _spi_transfer_cs_change_delay()
1140 xfer->cs_change_delay_unit); in _spi_transfer_cs_change_delay()
1157 struct spi_transfer *xfer; in spi_transfer_one_message() local
1168 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in spi_transfer_one_message()
1169 trace_spi_transfer_start(msg, xfer); in spi_transfer_one_message()
1171 spi_statistics_add_transfer_stats(statm, xfer, ctlr); in spi_transfer_one_message()
1172 spi_statistics_add_transfer_stats(stats, xfer, ctlr); in spi_transfer_one_message()
1174 if (xfer->tx_buf || xfer->rx_buf) { in spi_transfer_one_message()
1177 ret = ctlr->transfer_one(ctlr, msg->spi, xfer); in spi_transfer_one_message()
1189 ret = spi_transfer_wait(ctlr, msg, xfer); in spi_transfer_one_message()
1194 if (xfer->len) in spi_transfer_one_message()
1197 xfer->len); in spi_transfer_one_message()
1200 trace_spi_transfer_stop(msg, xfer); in spi_transfer_one_message()
1205 if (xfer->delay_usecs) in spi_transfer_one_message()
1206 _spi_transfer_delay_ns(xfer->delay_usecs * 1000); in spi_transfer_one_message()
1208 if (xfer->cs_change) { in spi_transfer_one_message()
1209 if (list_is_last(&xfer->transfer_list, in spi_transfer_one_message()
1214 _spi_transfer_cs_change_delay(msg, xfer); in spi_transfer_one_message()
1219 msg->actual_length += xfer->len; in spi_transfer_one_message()
2807 struct spi_transfer *xfer; in spi_replace_transfers() local
2866 xfer = &rxfer->inserted_transfers[insert - 1 - i]; in spi_replace_transfers()
2869 memcpy(xfer, xfer_first, sizeof(*xfer)); in spi_replace_transfers()
2872 list_add(&xfer->transfer_list, rxfer->replaced_after); in spi_replace_transfers()
2876 xfer->cs_change = false; in spi_replace_transfers()
2877 xfer->delay_usecs = 0; in spi_replace_transfers()
2897 struct spi_transfer *xfer = *xferp, *xfers; in __spi_split_transfer_maxsize() local
2903 count = DIV_ROUND_UP(xfer->len, maxsize); in __spi_split_transfer_maxsize()
2906 srt = spi_replace_transfers(msg, xfer, 1, count, NULL, 0, gfp); in __spi_split_transfer_maxsize()
2924 xfers[0].len = min_t(size_t, maxsize, xfer[0].len); in __spi_split_transfer_maxsize()
2972 struct spi_transfer *xfer; in spi_split_transfers_maxsize() local
2981 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in spi_split_transfers_maxsize()
2982 if (xfer->len > maxsize) { in spi_split_transfers_maxsize()
2983 ret = __spi_split_transfer_maxsize(ctlr, msg, &xfer, in spi_split_transfers_maxsize()
3132 struct spi_transfer *xfer; in __spi_validate() local
3160 list_for_each_entry(xfer, &message->transfers, transfer_list) { in __spi_validate()
3162 if (list_is_last(&xfer->transfer_list, &message->transfers)) in __spi_validate()
3164 xfer->cs_change = 1; in __spi_validate()
3177 list_for_each_entry(xfer, &message->transfers, transfer_list) { in __spi_validate()
3178 if (xfer->rx_buf && xfer->tx_buf) in __spi_validate()
3180 if ((flags & SPI_CONTROLLER_NO_TX) && xfer->tx_buf) in __spi_validate()
3182 if ((flags & SPI_CONTROLLER_NO_RX) && xfer->rx_buf) in __spi_validate()
3196 list_for_each_entry(xfer, &message->transfers, transfer_list) { in __spi_validate()
3197 xfer->effective_speed_hz = 0; in __spi_validate()
3198 message->frame_length += xfer->len; in __spi_validate()
3199 if (!xfer->bits_per_word) in __spi_validate()
3200 xfer->bits_per_word = spi->bits_per_word; in __spi_validate()
3202 if (!xfer->speed_hz) in __spi_validate()
3203 xfer->speed_hz = spi->max_speed_hz; in __spi_validate()
3205 if (ctlr->max_speed_hz && xfer->speed_hz > ctlr->max_speed_hz) in __spi_validate()
3206 xfer->speed_hz = ctlr->max_speed_hz; in __spi_validate()
3208 if (__spi_validate_bits_per_word(ctlr, xfer->bits_per_word)) in __spi_validate()
3215 if (xfer->bits_per_word <= 8) in __spi_validate()
3217 else if (xfer->bits_per_word <= 16) in __spi_validate()
3223 if (xfer->len % w_size) in __spi_validate()
3226 if (xfer->speed_hz && ctlr->min_speed_hz && in __spi_validate()
3227 xfer->speed_hz < ctlr->min_speed_hz) in __spi_validate()
3230 if (xfer->tx_buf && !xfer->tx_nbits) in __spi_validate()
3231 xfer->tx_nbits = SPI_NBITS_SINGLE; in __spi_validate()
3232 if (xfer->rx_buf && !xfer->rx_nbits) in __spi_validate()
3233 xfer->rx_nbits = SPI_NBITS_SINGLE; in __spi_validate()
3238 if (xfer->tx_buf) { in __spi_validate()
3239 if (xfer->tx_nbits != SPI_NBITS_SINGLE && in __spi_validate()
3240 xfer->tx_nbits != SPI_NBITS_DUAL && in __spi_validate()
3241 xfer->tx_nbits != SPI_NBITS_QUAD) in __spi_validate()
3243 if ((xfer->tx_nbits == SPI_NBITS_DUAL) && in __spi_validate()
3246 if ((xfer->tx_nbits == SPI_NBITS_QUAD) && in __spi_validate()
3251 if (xfer->rx_buf) { in __spi_validate()
3252 if (xfer->rx_nbits != SPI_NBITS_SINGLE && in __spi_validate()
3253 xfer->rx_nbits != SPI_NBITS_DUAL && in __spi_validate()
3254 xfer->rx_nbits != SPI_NBITS_QUAD) in __spi_validate()
3256 if ((xfer->rx_nbits == SPI_NBITS_DUAL) && in __spi_validate()
3259 if ((xfer->rx_nbits == SPI_NBITS_QUAD) && in __spi_validate()
3264 if (xfer->word_delay_usecs < spi->word_delay_usecs) in __spi_validate()
3265 xfer->word_delay_usecs = spi->word_delay_usecs; in __spi_validate()