Lines Matching refs:xfer

384 				struct spi_transfer *xfer)  in atmel_spi_use_dma()  argument
386 return as->use_dma && xfer->len >= DMA_MIN_BYTES; in atmel_spi_use_dma()
508 struct spi_transfer *xfer) in atmel_spi_next_xfer_pio() argument
511 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_next_xfer_pio()
522 if (xfer->tx_buf) { in atmel_spi_next_xfer_pio()
523 if (xfer->bits_per_word > 8) in atmel_spi_next_xfer_pio()
524 spi_writel(as, TDR, *(u16 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_pio()
526 spi_writel(as, TDR, *(u8 *)(xfer->tx_buf + xfer_pos)); in atmel_spi_next_xfer_pio()
533 xfer, xfer->len, xfer->tx_buf, xfer->rx_buf, in atmel_spi_next_xfer_pio()
534 xfer->bits_per_word); in atmel_spi_next_xfer_pio()
544 struct spi_transfer *xfer, in atmel_spi_next_xfer_dma_submit() argument
567 if (xfer->rx_buf) { in atmel_spi_next_xfer_dma_submit()
568 as->dma.sgrx.dma_address = xfer->rx_dma + xfer->len - *plen; in atmel_spi_next_xfer_dma_submit()
577 if (xfer->tx_buf) { in atmel_spi_next_xfer_dma_submit()
578 as->dma.sgtx.dma_address = xfer->tx_dma + xfer->len - *plen; in atmel_spi_next_xfer_dma_submit()
609 xfer, xfer->len, xfer->tx_buf, (unsigned long long)xfer->tx_dma, in atmel_spi_next_xfer_dma_submit()
610 xfer->rx_buf, (unsigned long long)xfer->rx_dma); in atmel_spi_next_xfer_dma_submit()
642 struct spi_transfer *xfer, in atmel_spi_next_xfer_data() argument
651 if (xfer->rx_buf) in atmel_spi_next_xfer_data()
652 *rx_dma = xfer->rx_dma + xfer->len - *plen; in atmel_spi_next_xfer_data()
659 if (xfer->tx_buf) in atmel_spi_next_xfer_data()
660 *tx_dma = xfer->tx_dma + xfer->len - *plen; in atmel_spi_next_xfer_data()
675 struct spi_transfer *xfer) in atmel_spi_set_xfer_speed() argument
689 if (xfer->speed_hz) in atmel_spi_set_xfer_speed()
690 scbr = DIV_ROUND_UP(bus_hz, xfer->speed_hz); in atmel_spi_set_xfer_speed()
705 xfer->speed_hz, scbr, bus_hz/255); in atmel_spi_set_xfer_speed()
711 xfer->speed_hz, scbr, bus_hz); in atmel_spi_set_xfer_speed()
727 struct spi_transfer *xfer) in atmel_spi_pdc_next_xfer() argument
736 atmel_spi_next_xfer_data(master, xfer, &tx_dma, &rx_dma, &len); in atmel_spi_pdc_next_xfer()
749 xfer, xfer->len, xfer->tx_buf, in atmel_spi_pdc_next_xfer()
750 (unsigned long long)xfer->tx_dma, xfer->rx_buf, in atmel_spi_pdc_next_xfer()
751 (unsigned long long)xfer->rx_dma); in atmel_spi_pdc_next_xfer()
755 atmel_spi_next_xfer_data(master, xfer, &tx_dma, &rx_dma, &len); in atmel_spi_pdc_next_xfer()
768 xfer, xfer->len, xfer->tx_buf, in atmel_spi_pdc_next_xfer()
769 (unsigned long long)xfer->tx_dma, xfer->rx_buf, in atmel_spi_pdc_next_xfer()
770 (unsigned long long)xfer->rx_dma); in atmel_spi_pdc_next_xfer()
795 atmel_spi_dma_map_xfer(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_dma_map_xfer() argument
799 xfer->tx_dma = xfer->rx_dma = INVALID_DMA_ADDRESS; in atmel_spi_dma_map_xfer()
800 if (xfer->tx_buf) { in atmel_spi_dma_map_xfer()
803 void *nonconst_tx = (void *)xfer->tx_buf; in atmel_spi_dma_map_xfer()
805 xfer->tx_dma = dma_map_single(dev, in atmel_spi_dma_map_xfer()
806 nonconst_tx, xfer->len, in atmel_spi_dma_map_xfer()
808 if (dma_mapping_error(dev, xfer->tx_dma)) in atmel_spi_dma_map_xfer()
811 if (xfer->rx_buf) { in atmel_spi_dma_map_xfer()
812 xfer->rx_dma = dma_map_single(dev, in atmel_spi_dma_map_xfer()
813 xfer->rx_buf, xfer->len, in atmel_spi_dma_map_xfer()
815 if (dma_mapping_error(dev, xfer->rx_dma)) { in atmel_spi_dma_map_xfer()
816 if (xfer->tx_buf) in atmel_spi_dma_map_xfer()
818 xfer->tx_dma, xfer->len, in atmel_spi_dma_map_xfer()
827 struct spi_transfer *xfer) in atmel_spi_dma_unmap_xfer() argument
829 if (xfer->tx_dma != INVALID_DMA_ADDRESS) in atmel_spi_dma_unmap_xfer()
830 dma_unmap_single(master->dev.parent, xfer->tx_dma, in atmel_spi_dma_unmap_xfer()
831 xfer->len, DMA_TO_DEVICE); in atmel_spi_dma_unmap_xfer()
832 if (xfer->rx_dma != INVALID_DMA_ADDRESS) in atmel_spi_dma_unmap_xfer()
833 dma_unmap_single(master->dev.parent, xfer->rx_dma, in atmel_spi_dma_unmap_xfer()
834 xfer->len, DMA_FROM_DEVICE); in atmel_spi_dma_unmap_xfer()
848 atmel_spi_pump_pio_data(struct atmel_spi *as, struct spi_transfer *xfer) in atmel_spi_pump_pio_data() argument
852 unsigned long xfer_pos = xfer->len - as->current_remaining_bytes; in atmel_spi_pump_pio_data()
854 if (xfer->rx_buf) { in atmel_spi_pump_pio_data()
855 if (xfer->bits_per_word > 8) { in atmel_spi_pump_pio_data()
856 rxp16 = (u16 *)(((u8 *)xfer->rx_buf) + xfer_pos); in atmel_spi_pump_pio_data()
859 rxp = ((u8 *)xfer->rx_buf) + xfer_pos; in atmel_spi_pump_pio_data()
865 if (xfer->bits_per_word > 8) { in atmel_spi_pump_pio_data()
886 struct spi_transfer *xfer; in atmel_spi_pio_interrupt() local
920 xfer = as->current_transfer; in atmel_spi_pio_interrupt()
921 atmel_spi_pump_pio_data(as, xfer); in atmel_spi_pio_interrupt()
1046 struct spi_transfer *xfer) in atmel_spi_one_transfer() argument
1059 if (!(xfer->tx_buf || xfer->rx_buf) && xfer->len) { in atmel_spi_one_transfer()
1064 if (xfer->bits_per_word) { in atmel_spi_one_transfer()
1067 if (bits != xfer->bits_per_word - 8) { in atmel_spi_one_transfer()
1079 && (atmel_spi_use_dma(as, xfer) || as->use_pdc)) { in atmel_spi_one_transfer()
1080 if (atmel_spi_dma_map_xfer(as, xfer) < 0) in atmel_spi_one_transfer()
1084 atmel_spi_set_xfer_speed(as, msg->spi, xfer); in atmel_spi_one_transfer()
1087 as->current_transfer = xfer; in atmel_spi_one_transfer()
1088 as->current_remaining_bytes = xfer->len; in atmel_spi_one_transfer()
1093 atmel_spi_pdc_next_xfer(master, msg, xfer); in atmel_spi_one_transfer()
1094 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1097 xfer, &len); in atmel_spi_one_transfer()
1101 atmel_spi_next_xfer_pio(master, xfer); in atmel_spi_one_transfer()
1108 atmel_spi_next_xfer_pio(master, xfer); in atmel_spi_one_transfer()
1151 } else if (atmel_spi_use_dma(as, xfer)) { in atmel_spi_one_transfer()
1156 && (atmel_spi_use_dma(as, xfer) || as->use_pdc)) in atmel_spi_one_transfer()
1157 atmel_spi_dma_unmap_xfer(master, xfer); in atmel_spi_one_transfer()
1163 msg->actual_length += xfer->len; in atmel_spi_one_transfer()
1167 && (atmel_spi_use_dma(as, xfer) || as->use_pdc)) in atmel_spi_one_transfer()
1168 atmel_spi_dma_unmap_xfer(master, xfer); in atmel_spi_one_transfer()
1170 if (xfer->delay_usecs) in atmel_spi_one_transfer()
1171 udelay(xfer->delay_usecs); in atmel_spi_one_transfer()
1173 if (xfer->cs_change) { in atmel_spi_one_transfer()
1174 if (list_is_last(&xfer->transfer_list, in atmel_spi_one_transfer()
1193 struct spi_transfer *xfer; in atmel_spi_transfer_one_message() local
1211 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in atmel_spi_transfer_one_message()
1212 ret = atmel_spi_one_transfer(master, msg, xfer); in atmel_spi_transfer_one_message()
1220 list_for_each_entry(xfer, &msg->transfers, transfer_list) { in atmel_spi_transfer_one_message()
1223 xfer, xfer->len, in atmel_spi_transfer_one_message()
1224 xfer->tx_buf, &xfer->tx_dma, in atmel_spi_transfer_one_message()
1225 xfer->rx_buf, &xfer->rx_dma); in atmel_spi_transfer_one_message()