Lines Matching refs:t
268 tegra_qspi_calculate_curr_xfer_param(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_calculate_curr_xfer_param() argument
271 unsigned int remain_len = t->len - tqspi->cur_pos; in tegra_qspi_calculate_curr_xfer_param()
272 unsigned int bits_per_word = t->bits_per_word; in tegra_qspi_calculate_curr_xfer_param()
284 bits_per_word == 32) && t->len > 3) { in tegra_qspi_calculate_curr_xfer_param()
307 tegra_qspi_fill_tx_fifo_from_client_txbuf(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_fill_tx_fifo_from_client_txbuf() argument
311 u8 *tx_buf = (u8 *)t->tx_buf + tqspi->cur_tx_pos; in tegra_qspi_fill_tx_fifo_from_client_txbuf()
338 if (len > t->len - tqspi->cur_pos) in tegra_qspi_fill_tx_fifo_from_client_txbuf()
339 len = t->len - tqspi->cur_pos; in tegra_qspi_fill_tx_fifo_from_client_txbuf()
356 tegra_qspi_read_rx_fifo_to_client_rxbuf(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_read_rx_fifo_to_client_rxbuf() argument
358 u8 *rx_buf = (u8 *)t->rx_buf + tqspi->cur_rx_pos; in tegra_qspi_read_rx_fifo_to_client_rxbuf()
377 u32 rx_mask = ((u32)1 << t->bits_per_word) - 1; in tegra_qspi_read_rx_fifo_to_client_rxbuf()
382 if (len > t->len - tqspi->cur_pos) in tegra_qspi_read_rx_fifo_to_client_rxbuf()
383 len = t->len - tqspi->cur_pos; in tegra_qspi_read_rx_fifo_to_client_rxbuf()
400 tegra_qspi_copy_client_txbuf_to_qspi_txbuf(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_copy_client_txbuf_to_qspi_txbuf() argument
416 u8 *tx_buf = (u8 *)t->tx_buf + tqspi->cur_tx_pos; in tegra_qspi_copy_client_txbuf_to_qspi_txbuf()
424 if (consume > t->len - tqspi->cur_pos) in tegra_qspi_copy_client_txbuf_to_qspi_txbuf()
425 consume = t->len - tqspi->cur_pos; in tegra_qspi_copy_client_txbuf_to_qspi_txbuf()
443 tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf() argument
451 unsigned char *rx_buf = t->rx_buf + tqspi->cur_rx_pos; in tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf()
452 u32 rx_mask = ((u32)1 << t->bits_per_word) - 1; in tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf()
461 if (consume > t->len - tqspi->cur_pos) in tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf()
462 consume = t->len - tqspi->cur_pos; in tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf()
485 static int tegra_qspi_start_tx_dma(struct tegra_qspi *tqspi, struct spi_transfer *t, int len) in tegra_qspi_start_tx_dma() argument
492 tx_dma_phys = t->tx_dma; in tegra_qspi_start_tx_dma()
513 static int tegra_qspi_start_rx_dma(struct tegra_qspi *tqspi, struct spi_transfer *t, int len) in tegra_qspi_start_rx_dma() argument
520 rx_dma_phys = t->rx_dma; in tegra_qspi_start_rx_dma()
572 static int tegra_qspi_dma_map_xfer(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_dma_map_xfer() argument
574 u8 *tx_buf = (u8 *)t->tx_buf + tqspi->cur_tx_pos; in tegra_qspi_dma_map_xfer()
575 u8 *rx_buf = (u8 *)t->rx_buf + tqspi->cur_rx_pos; in tegra_qspi_dma_map_xfer()
580 if (t->tx_buf) { in tegra_qspi_dma_map_xfer()
581 t->tx_dma = dma_map_single(tqspi->dev, (void *)tx_buf, len, DMA_TO_DEVICE); in tegra_qspi_dma_map_xfer()
582 if (dma_mapping_error(tqspi->dev, t->tx_dma)) in tegra_qspi_dma_map_xfer()
586 if (t->rx_buf) { in tegra_qspi_dma_map_xfer()
587 t->rx_dma = dma_map_single(tqspi->dev, (void *)rx_buf, len, DMA_FROM_DEVICE); in tegra_qspi_dma_map_xfer()
588 if (dma_mapping_error(tqspi->dev, t->rx_dma)) { in tegra_qspi_dma_map_xfer()
589 dma_unmap_single(tqspi->dev, t->tx_dma, len, DMA_TO_DEVICE); in tegra_qspi_dma_map_xfer()
597 static void tegra_qspi_dma_unmap_xfer(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_dma_unmap_xfer() argument
603 dma_unmap_single(tqspi->dev, t->tx_dma, len, DMA_TO_DEVICE); in tegra_qspi_dma_unmap_xfer()
604 dma_unmap_single(tqspi->dev, t->rx_dma, len, DMA_FROM_DEVICE); in tegra_qspi_dma_unmap_xfer()
607 static int tegra_qspi_start_dma_based_transfer(struct tegra_qspi *tqspi, struct spi_transfer *t) in tegra_qspi_start_dma_based_transfer() argument
616 ret = tegra_qspi_dma_map_xfer(tqspi, t); in tegra_qspi_start_dma_based_transfer()
658 tegra_qspi_copy_client_txbuf_to_qspi_txbuf(tqspi, t); in tegra_qspi_start_dma_based_transfer()
659 ret = tegra_qspi_start_tx_dma(tqspi, t, len); in tegra_qspi_start_dma_based_transfer()
680 ret = tegra_qspi_start_rx_dma(tqspi, t, len); in tegra_qspi_start_dma_based_transfer()
699 static int tegra_qspi_start_cpu_based_transfer(struct tegra_qspi *qspi, struct spi_transfer *t) in tegra_qspi_start_cpu_based_transfer() argument
705 cur_words = tegra_qspi_fill_tx_fifo_from_client_txbuf(qspi, t); in tegra_qspi_start_cpu_based_transfer()
809 static u32 tegra_qspi_setup_transfer_one(struct spi_device *spi, struct spi_transfer *t, in tegra_qspi_setup_transfer_one() argument
814 u32 command1, command2, speed = t->speed_hz; in tegra_qspi_setup_transfer_one()
815 u8 bits_per_word = t->bits_per_word; in tegra_qspi_setup_transfer_one()
827 tqspi->curr_xfer = t; in tegra_qspi_setup_transfer_one()
871 struct spi_transfer *t, u32 command1) in tegra_qspi_start_transfer_one() argument
878 total_fifo_words = tegra_qspi_calculate_curr_xfer_param(tqspi, t); in tegra_qspi_start_transfer_one()
888 if (t->rx_buf) { in tegra_qspi_start_transfer_one()
891 bus_width = t->rx_nbits; in tegra_qspi_start_transfer_one()
894 if (t->tx_buf) { in tegra_qspi_start_transfer_one()
897 bus_width = t->tx_nbits; in tegra_qspi_start_transfer_one()
918 ret = tegra_qspi_start_dma_based_transfer(tqspi, t); in tegra_qspi_start_transfer_one()
920 ret = tegra_qspi_start_cpu_based_transfer(tqspi, t); in tegra_qspi_start_transfer_one()
1337 struct spi_transfer *t = tqspi->curr_xfer; in handle_cpu_based_xfer() local
1349 tegra_qspi_read_rx_fifo_to_client_rxbuf(tqspi, t); in handle_cpu_based_xfer()
1356 if (tqspi->cur_pos == t->len) { in handle_cpu_based_xfer()
1361 tegra_qspi_calculate_curr_xfer_param(tqspi, t); in handle_cpu_based_xfer()
1362 tegra_qspi_start_cpu_based_transfer(tqspi, t); in handle_cpu_based_xfer()
1370 struct spi_transfer *t = tqspi->curr_xfer; in handle_dma_based_xfer() local
1409 tegra_qspi_dma_unmap_xfer(tqspi, t); in handle_dma_based_xfer()
1416 tegra_qspi_copy_qspi_rxbuf_to_client_rxbuf(tqspi, t); in handle_dma_based_xfer()
1423 if (tqspi->cur_pos == t->len) { in handle_dma_based_xfer()
1424 tegra_qspi_dma_unmap_xfer(tqspi, t); in handle_dma_based_xfer()
1429 tegra_qspi_dma_unmap_xfer(tqspi, t); in handle_dma_based_xfer()
1432 total_fifo_words = tegra_qspi_calculate_curr_xfer_param(tqspi, t); in handle_dma_based_xfer()
1434 err = tegra_qspi_start_dma_based_transfer(tqspi, t); in handle_dma_based_xfer()
1436 err = tegra_qspi_start_cpu_based_transfer(tqspi, t); in handle_dma_based_xfer()