Lines Matching refs:xfer

198 	struct spi_transfer *xfer; /* Store xfer temporarily */  member
384 struct spi_transfer *xfer) in rockchip_spi_prepare_irq() argument
386 rs->tx = xfer->tx_buf; in rockchip_spi_prepare_irq()
387 rs->rx = xfer->rx_buf; in rockchip_spi_prepare_irq()
388 rs->tx_left = rs->tx ? xfer->len / rs->n_bytes : 0; in rockchip_spi_prepare_irq()
389 rs->rx_left = xfer->len / rs->n_bytes; in rockchip_spi_prepare_irq()
453 struct spi_controller *ctlr, struct spi_transfer *xfer) in rockchip_spi_prepare_dma() argument
459 rs->tx = xfer->tx_buf; in rockchip_spi_prepare_dma()
460 rs->rx = xfer->rx_buf; in rockchip_spi_prepare_dma()
463 if (xfer->rx_buf) { in rockchip_spi_prepare_dma()
468 .src_maxburst = rockchip_spi_calc_burst_size(xfer->len / rs->n_bytes), in rockchip_spi_prepare_dma()
475 xfer->rx_sg.sgl, xfer->rx_sg.nents, in rockchip_spi_prepare_dma()
485 if (xfer->tx_buf) { in rockchip_spi_prepare_dma()
497 xfer->tx_sg.sgl, xfer->tx_sg.nents, in rockchip_spi_prepare_dma()
532 struct spi_device *spi, struct spi_transfer *xfer, in rockchip_spi_config() argument
553 if (xfer->rx_buf && xfer->tx_buf) in rockchip_spi_config()
555 else if (xfer->rx_buf) in rockchip_spi_config()
560 switch (xfer->bits_per_word) { in rockchip_spi_config()
563 cr1 = xfer->len - 1; in rockchip_spi_config()
567 cr1 = xfer->len - 1; in rockchip_spi_config()
571 cr1 = xfer->len / 2 - 1; in rockchip_spi_config()
579 xfer->bits_per_word); in rockchip_spi_config()
584 if (xfer->tx_buf) in rockchip_spi_config()
586 if (xfer->rx_buf) in rockchip_spi_config()
597 if ((xfer->len / rs->n_bytes) < rs->fifo_len) in rockchip_spi_config()
598 writel_relaxed(xfer->len / rs->n_bytes - 1, rs->regs + ROCKCHIP_SPI_RXFTLR); in rockchip_spi_config()
603 writel_relaxed(rockchip_spi_calc_burst_size(xfer->len / rs->n_bytes) - 1, in rockchip_spi_config()
611 writel_relaxed(2 * DIV_ROUND_UP(rs->freq, 2 * xfer->speed_hz), in rockchip_spi_config()
634 rs->rx = rs->xfer->rx_buf; in rockchip_spi_target_abort()
635 rs->xfer->len = 0; in rockchip_spi_target_abort()
641 rs->rx += rs->xfer->len - rs->n_bytes * state.residue; in rockchip_spi_target_abort()
657 rs->xfer->len = (unsigned int)(rs->rx - rs->xfer->rx_buf); in rockchip_spi_target_abort()
676 struct spi_transfer *xfer) in rockchip_spi_transfer_one() argument
683 if (!xfer->len) { in rockchip_spi_transfer_one()
691 if (!xfer->tx_buf && !xfer->rx_buf) { in rockchip_spi_transfer_one()
696 if (xfer->len > ROCKCHIP_SPI_MAX_TRANLEN) { in rockchip_spi_transfer_one()
697 dev_err(rs->dev, "Transfer is too long (%d)\n", xfer->len); in rockchip_spi_transfer_one()
701 rs->n_bytes = xfer->bits_per_word <= 8 ? 1 : 2; in rockchip_spi_transfer_one()
702 rs->xfer = xfer; in rockchip_spi_transfer_one()
703 use_dma = ctlr->can_dma ? ctlr->can_dma(ctlr, spi, xfer) : false; in rockchip_spi_transfer_one()
705 ret = rockchip_spi_config(rs, spi, xfer, use_dma, ctlr->target); in rockchip_spi_transfer_one()
710 return rockchip_spi_prepare_dma(rs, ctlr, xfer); in rockchip_spi_transfer_one()
712 return rockchip_spi_prepare_irq(rs, ctlr, xfer); in rockchip_spi_transfer_one()
717 struct spi_transfer *xfer) in rockchip_spi_can_dma() argument
720 unsigned int bytes_per_word = xfer->bits_per_word <= 8 ? 1 : 2; in rockchip_spi_can_dma()
726 return xfer->len / bytes_per_word >= rs->fifo_len; in rockchip_spi_can_dma()