Lines Matching refs:xfer
147 struct spi_transfer *xfer)
155 if (xfer->rx_buf)
157 if (xfer->tx_buf)
161 cnt = xfer->len / 4;
162 if (xfer->tx_buf)
164 xfer->tx_buf, cnt);
166 remainder = xfer->len % 4;
167 if (xfer->tx_buf && remainder > 0) {
169 memcpy(®_val, xfer->tx_buf + cnt * 4, remainder);
184 struct spi_transfer *xfer)
192 if (xfer->tx_buf) {
196 void *nonconst_tx = (void *)xfer->tx_buf;
198 xfer->tx_dma = dma_map_single(dev, nonconst_tx,
199 xfer->len, DMA_TO_DEVICE);
200 if (dma_mapping_error(dev, xfer->tx_dma)) {
206 if (xfer->rx_buf) {
207 xfer->rx_dma = dma_map_single(dev, xfer->rx_buf,
208 xfer->len, DMA_FROM_DEVICE);
209 if (dma_mapping_error(dev, xfer->rx_dma)) {
215 writel(xfer->tx_dma, mdata->base + SPIS_TX_SRC_REG);
216 writel(xfer->rx_dma, mdata->base + SPIS_RX_DST_REG);
222 if (xfer->tx_buf)
224 if (xfer->rx_buf)
230 reg_val |= (xfer->len - 1) & TX_DMA_LEN;
234 if (xfer->tx_buf)
236 if (xfer->rx_buf)
248 if (xfer->rx_buf)
249 dma_unmap_single(dev, xfer->rx_dma,
250 xfer->len, DMA_FROM_DEVICE);
253 if (xfer->tx_buf)
254 dma_unmap_single(dev, xfer->tx_dma,
255 xfer->len, DMA_TO_DEVICE);
267 struct spi_transfer *xfer)
273 mdata->cur_transfer = xfer;
275 if (xfer->len > MTK_SPI_SLAVE_MAX_FIFO_SIZE)
276 return mtk_spi_slave_dma_transfer(ctlr, spi, xfer);
278 return mtk_spi_slave_fifo_transfer(ctlr, spi, xfer);