Re: [PATCH 1/1] spi: use dmaengine_desc_set_callback()

From: Lad, Prabhakar

Date: Tue Nov 03 2026 - 09:27:35 EST


On Mon, Nov 2, 2026 at 5:41 PM <Frank.Li@xxxxxxxxxxx> wrote:
>
> From: Frank Li <Frank.Li@xxxxxxx>
>
> Replace open-coded assignments to callback and callback_param fields
> of struct dma_async_tx_descriptor with calls to the
> dmaengine_desc_set_callback() helper across SPI bus drivers.
>
> No functional change intended. Prepare make to struct
> dma_async_tx_descriptor private to the DMA engine.
>
> Signed-off-by: Frank Li <Frank.Li@xxxxxxx>
> ---
> drivers/spi/atmel-quadspi.c | 3 +--
> drivers/spi/spi-at91-usart.c | 3 +--
> drivers/spi/spi-atcspi200.c | 3 +--
> drivers/spi/spi-atmel.c | 3 +--
> drivers/spi/spi-bcm2835.c | 6 ++----
> drivers/spi/spi-cadence-quadspi.c | 3 +--
> drivers/spi/spi-davinci.c | 6 ++----
> drivers/spi/spi-dw-dma.c | 6 ++----
> drivers/spi/spi-ep93xx.c | 3 +--
> drivers/spi/spi-fsl-dspi.c | 6 ++----
> drivers/spi/spi-fsl-lpspi.c | 6 ++----
> drivers/spi/spi-geni-qcom.c | 3 +--
> drivers/spi/spi-img-spfi.c | 6 ++----
> drivers/spi/spi-imx.c | 6 ++----
> drivers/spi/spi-ingenic.c | 3 +--
> drivers/spi/spi-mxs.c | 3 +--
> drivers/spi/spi-nxp-xspi.c | 3 +--
> drivers/spi/spi-omap2-mcspi.c | 6 ++----
> drivers/spi/spi-pic32.c | 3 +--
> drivers/spi/spi-pl022.c | 3 +--
> drivers/spi/spi-pxa2xx-dma.c | 3 +--
> drivers/spi/spi-qup.c | 3 +--
> drivers/spi/spi-rockchip.c | 6 ++----
> drivers/spi/spi-rspi.c | 6 ++----
> drivers/spi/spi-rzv2h-rspi.c | 3 +--
For the two files above,

Reviewed-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>

Cheers,
Prabhakar

> drivers/spi/spi-s3c64xx.c | 3 +--
> drivers/spi/spi-sh-msiof.c | 6 ++----
> drivers/spi/spi-spacemit-k1.c | 3 +--
> drivers/spi/spi-stm32-ospi.c | 3 +--
> drivers/spi/spi-stm32-qspi.c | 3 +--
> drivers/spi/spi-stm32.c | 9 +++------
> drivers/spi/spi-sun6i.c | 3 +--
> drivers/spi/spi-tegra114.c | 6 ++----
> drivers/spi/spi-tegra20-slink.c | 6 ++----
> drivers/spi/spi-tegra210-quad.c | 6 ++----
> drivers/spi/spi-ti-qspi.c | 3 +--
> drivers/spi/spi-topcliff-pch.c | 6 ++----
> drivers/spi/spi-uniphier.c | 6 ++----
> 38 files changed, 56 insertions(+), 112 deletions(-)
>
> diff --git a/drivers/spi/atmel-quadspi.c b/drivers/spi/atmel-quadspi.c
> index 762a3fb0fca81..de205e04a8600 100644
> --- a/drivers/spi/atmel-quadspi.c
> +++ b/drivers/spi/atmel-quadspi.c
> @@ -790,8 +790,7 @@ static int atmel_qspi_dma_xfer(struct atmel_qspi *aq, struct dma_chan *chan,
> }
>
> reinit_completion(&aq->dma_completion);
> - tx->callback = atmel_qspi_dma_callback;
> - tx->callback_param = aq;
> + dmaengine_desc_set_callback(tx, atmel_qspi_dma_callback, NULL, aq);
> cookie = dmaengine_submit(tx);
> ret = dma_submit_error(cookie);
> if (ret) {
> diff --git a/drivers/spi/spi-at91-usart.c b/drivers/spi/spi-at91-usart.c
> index aadcdf734fb03..8b56ac1dcad8e 100644
> --- a/drivers/spi/spi-at91-usart.c
> +++ b/drivers/spi/spi-at91-usart.c
> @@ -228,8 +228,7 @@ static int at91_usart_spi_dma_transfer(struct spi_controller *ctlr,
> if (!txdesc)
> goto at91_usart_spi_err_dma;
>
> - rxdesc->callback = dma_callback;
> - rxdesc->callback_param = ctlr;
> + dmaengine_desc_set_callback(rxdesc, dma_callback, NULL, ctlr);
>
> cookie = dmaengine_submit(rxdesc);
> if (dma_submit_error(cookie))
> diff --git a/drivers/spi/spi-atcspi200.c b/drivers/spi/spi-atcspi200.c
> index b532c58c0ab91..c807e730ca94c 100644
> --- a/drivers/spi/spi-atcspi200.c
> +++ b/drivers/spi/spi-atcspi200.c
> @@ -340,8 +340,7 @@ static int atcspi_dma_trans(struct atcspi_dev *spi,
> }
>
> reinit_completion(&spi->dma_completion);
> - desc->callback = atcspi_dma_callback;
> - desc->callback_param = &spi->dma_completion;
> + dmaengine_desc_set_callback(desc, atcspi_dma_callback, NULL, &spi->dma_completion);
> cookie = dmaengine_submit(desc);
> ret = dma_submit_error(cookie);
> if (ret)
> diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
> index ffc896e4621ac..ffc1292b08c10 100644
> --- a/drivers/spi/spi-atmel.c
> +++ b/drivers/spi/spi-atmel.c
> @@ -867,8 +867,7 @@ static int atmel_spi_next_xfer_dma_submit(struct spi_controller *host,
> spi_writel(as, IER, SPI_BIT(OVRES));
>
> /* Put the callback on the RX transfer only, that should finish last */
> - rxdesc->callback = dma_callback;
> - rxdesc->callback_param = host;
> + dmaengine_desc_set_callback(rxdesc, dma_callback, NULL, host);
>
> /* Submit and fire RX and TX with TX last so we're ready to read! */
> cookie = dmaengine_submit(rxdesc);
> diff --git a/drivers/spi/spi-bcm2835.c b/drivers/spi/spi-bcm2835.c
> index cc57489732816..a71048a88c58a 100644
> --- a/drivers/spi/spi-bcm2835.c
> +++ b/drivers/spi/spi-bcm2835.c
> @@ -706,11 +706,9 @@ static int bcm2835_spi_prepare_sg(struct spi_controller *ctlr,
> * RX-only transfers; else by the TX channel for TX-only transfers.
> */
> if (!is_tx) {
> - desc->callback = bcm2835_spi_dma_rx_done;
> - desc->callback_param = ctlr;
> + dmaengine_desc_set_callback(desc, bcm2835_spi_dma_rx_done, NULL, ctlr);
> } else if (!tfr->rx_buf) {
> - desc->callback = bcm2835_spi_dma_tx_done;
> - desc->callback_param = ctlr;
> + dmaengine_desc_set_callback(desc, bcm2835_spi_dma_tx_done, NULL, ctlr);
> bs->target = target;
> }
>
> diff --git a/drivers/spi/spi-cadence-quadspi.c b/drivers/spi/spi-cadence-quadspi.c
> index 73ea51c41f955..6e7c8b54e0377 100644
> --- a/drivers/spi/spi-cadence-quadspi.c
> +++ b/drivers/spi/spi-cadence-quadspi.c
> @@ -1395,8 +1395,7 @@ static int cqspi_direct_read_execute(struct cqspi_flash_pdata *f_pdata,
> goto err_unmap;
> }
>
> - tx->callback = cqspi_rx_dma_callback;
> - tx->callback_param = cqspi;
> + dmaengine_desc_set_callback(tx, cqspi_rx_dma_callback, NULL, cqspi);
> cookie = dmaengine_submit(tx);
> reinit_completion(&cqspi->rx_dma_complete);
>
> diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c
> index 087735ed9c80c..b115daf2c76f3 100644
> --- a/drivers/spi/spi-davinci.c
> +++ b/drivers/spi/spi-davinci.c
> @@ -703,10 +703,8 @@ static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t)
> if (!txdesc)
> goto err_desc;
>
> - rxdesc->callback = davinci_spi_dma_rx_callback;
> - rxdesc->callback_param = (void *)dspi;
> - txdesc->callback = davinci_spi_dma_tx_callback;
> - txdesc->callback_param = (void *)dspi;
> + dmaengine_desc_set_callback(rxdesc, davinci_spi_dma_rx_callback, NULL, (void *)dspi);
> + dmaengine_desc_set_callback(txdesc, davinci_spi_dma_tx_callback, NULL, (void *)dspi);
>
> if (pdata->cshold_bug)
> iowrite16(spidat1 >> 16, dspi->base + SPIDAT1 + 2);
> diff --git a/drivers/spi/spi-dw-dma.c b/drivers/spi/spi-dw-dma.c
> index b706770334a61..94810f9dd5c5d 100644
> --- a/drivers/spi/spi-dw-dma.c
> +++ b/drivers/spi/spi-dw-dma.c
> @@ -397,8 +397,7 @@ static int dw_spi_dma_submit_tx(struct dw_spi *dws, struct scatterlist *sgl,
> if (!txdesc)
> return -ENOMEM;
>
> - txdesc->callback = dw_spi_dma_tx_done;
> - txdesc->callback_param = dws;
> + dmaengine_desc_set_callback(txdesc, dw_spi_dma_tx_done, NULL, dws);
>
> cookie = dmaengine_submit(txdesc);
> ret = dma_submit_error(cookie);
> @@ -498,8 +497,7 @@ static int dw_spi_dma_submit_rx(struct dw_spi *dws, struct scatterlist *sgl,
> if (!rxdesc)
> return -ENOMEM;
>
> - rxdesc->callback = dw_spi_dma_rx_done;
> - rxdesc->callback_param = dws;
> + dmaengine_desc_set_callback(rxdesc, dw_spi_dma_rx_done, NULL, dws);
>
> cookie = dmaengine_submit(rxdesc);
> ret = dma_submit_error(cookie);
> diff --git a/drivers/spi/spi-ep93xx.c b/drivers/spi/spi-ep93xx.c
> index d8f4aa38685f5..6832869bc73bf 100644
> --- a/drivers/spi/spi-ep93xx.c
> +++ b/drivers/spi/spi-ep93xx.c
> @@ -418,8 +418,7 @@ static int ep93xx_spi_dma_transfer(struct spi_controller *host)
> }
>
> /* We are ready when RX is done */
> - rxd->callback = ep93xx_spi_dma_callback;
> - rxd->callback_param = host;
> + dmaengine_desc_set_callback(rxd, ep93xx_spi_dma_callback, NULL, host);
>
> /* Now submit both descriptors and start DMA */
> dmaengine_submit(rxd);
> diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
> index f03488870d024..aee0393f9a832 100644
> --- a/drivers/spi/spi-fsl-dspi.c
> +++ b/drivers/spi/spi-fsl-dspi.c
> @@ -581,8 +581,7 @@ static int dspi_next_xfer_dma_submit(struct fsl_dspi *dspi)
> return -EIO;
> }
>
> - dma->tx_desc->callback = dspi_tx_dma_callback;
> - dma->tx_desc->callback_param = dspi;
> + dmaengine_desc_set_callback(dma->tx_desc, dspi_tx_dma_callback, NULL, dspi);
> if (dma_submit_error(dmaengine_submit(dma->tx_desc))) {
> dev_err(dev, "DMA submit failed\n");
> return -EINVAL;
> @@ -600,8 +599,7 @@ static int dspi_next_xfer_dma_submit(struct fsl_dspi *dspi)
> return -EIO;
> }
>
> - dma->rx_desc->callback = dspi_rx_dma_callback;
> - dma->rx_desc->callback_param = dspi;
> + dmaengine_desc_set_callback(dma->rx_desc, dspi_rx_dma_callback, NULL, dspi);
> if (dma_submit_error(dmaengine_submit(dma->rx_desc))) {
> dev_err(dev, "DMA submit failed\n");
> return -EINVAL;
> diff --git a/drivers/spi/spi-fsl-lpspi.c b/drivers/spi/spi-fsl-lpspi.c
> index b25f94b2ef738..7798197d5b350 100644
> --- a/drivers/spi/spi-fsl-lpspi.c
> +++ b/drivers/spi/spi-fsl-lpspi.c
> @@ -634,8 +634,7 @@ static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
> if (!desc_rx)
> return -EINVAL;
>
> - desc_rx->callback = fsl_lpspi_dma_rx_callback;
> - desc_rx->callback_param = (void *)fsl_lpspi;
> + dmaengine_desc_set_callback(desc_rx, fsl_lpspi_dma_rx_callback, NULL, (void *)fsl_lpspi);
> dmaengine_submit(desc_rx);
> reinit_completion(&fsl_lpspi->dma_rx_completion);
> dma_async_issue_pending(controller->dma_rx);
> @@ -648,8 +647,7 @@ static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
> return -EINVAL;
> }
>
> - desc_tx->callback = fsl_lpspi_dma_tx_callback;
> - desc_tx->callback_param = (void *)fsl_lpspi;
> + dmaengine_desc_set_callback(desc_tx, fsl_lpspi_dma_tx_callback, NULL, (void *)fsl_lpspi);
> dmaengine_submit(desc_tx);
> reinit_completion(&fsl_lpspi->dma_tx_completion);
> dma_async_issue_pending(controller->dma_tx);
> diff --git a/drivers/spi/spi-geni-qcom.c b/drivers/spi/spi-geni-qcom.c
> index 91e75e213f929..e239c4333055b 100644
> --- a/drivers/spi/spi-geni-qcom.c
> +++ b/drivers/spi/spi-geni-qcom.c
> @@ -506,8 +506,7 @@ static int setup_gsi_xfer(struct spi_transfer *xfer, struct spi_geni_master *mas
> return -EIO;
> }
>
> - tx_desc->callback_result = spi_gsi_callback_result;
> - tx_desc->callback_param = spi;
> + dmaengine_desc_set_callback(tx_desc, NULL, spi_gsi_callback_result, spi);
>
> if (peripheral.cmd & SPI_RX)
> dmaengine_submit(rx_desc);
> diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c
> index 76dcb283d1225..53370cff7e2cd 100644
> --- a/drivers/spi/spi-img-spfi.c
> +++ b/drivers/spi/spi-img-spfi.c
> @@ -334,8 +334,7 @@ static int img_spfi_start_dma(struct spi_controller *host,
> if (!rxdesc)
> goto stop_dma;
>
> - rxdesc->callback = img_spfi_dma_rx_cb;
> - rxdesc->callback_param = spfi;
> + dmaengine_desc_set_callback(rxdesc, img_spfi_dma_rx_cb, NULL, spfi);
> }
>
> if (xfer->tx_buf) {
> @@ -358,8 +357,7 @@ static int img_spfi_start_dma(struct spi_controller *host,
> if (!txdesc)
> goto stop_dma;
>
> - txdesc->callback = img_spfi_dma_tx_cb;
> - txdesc->callback_param = spfi;
> + dmaengine_desc_set_callback(txdesc, img_spfi_dma_tx_cb, NULL, spfi);
> }
>
> if (xfer->rx_buf) {
> diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c
> index cadf0b93f4403..f8a3ac11f49d0 100644
> --- a/drivers/spi/spi-imx.c
> +++ b/drivers/spi/spi-imx.c
> @@ -1738,8 +1738,7 @@ static int spi_imx_dma_submit(struct spi_imx_data *spi_imx,
> return -EINVAL;
> }
>
> - desc_rx->callback = spi_imx_dma_rx_callback;
> - desc_rx->callback_param = (void *)spi_imx;
> + dmaengine_desc_set_callback(desc_rx, spi_imx_dma_rx_callback, NULL, (void *)spi_imx);
> cookie = dmaengine_submit(desc_rx);
> if (dma_submit_error(cookie)) {
> dev_err(spi_imx->dev, "submitting DMA RX failed\n");
> @@ -1756,8 +1755,7 @@ static int spi_imx_dma_submit(struct spi_imx_data *spi_imx,
> if (!desc_tx)
> goto dmaengine_terminate_rx;
>
> - desc_tx->callback = spi_imx_dma_tx_callback;
> - desc_tx->callback_param = (void *)spi_imx;
> + dmaengine_desc_set_callback(desc_tx, spi_imx_dma_tx_callback, NULL, (void *)spi_imx);
> cookie = dmaengine_submit(desc_tx);
> if (dma_submit_error(cookie)) {
> dev_err(spi_imx->dev, "submitting DMA TX failed\n");
> diff --git a/drivers/spi/spi-ingenic.c b/drivers/spi/spi-ingenic.c
> index a0a047510611e..9567ddde06ef0 100644
> --- a/drivers/spi/spi-ingenic.c
> +++ b/drivers/spi/spi-ingenic.c
> @@ -157,8 +157,7 @@ spi_ingenic_prepare_dma(struct spi_controller *ctlr, struct dma_chan *chan,
> return ERR_PTR(-ENOMEM);
>
> if (dir == DMA_DEV_TO_MEM) {
> - desc->callback = spi_ingenic_finalize_transfer;
> - desc->callback_param = ctlr;
> + dmaengine_desc_set_callback(desc, spi_ingenic_finalize_transfer, NULL, ctlr);
> }
>
> cookie = dmaengine_submit(desc);
> diff --git a/drivers/spi/spi-mxs.c b/drivers/spi/spi-mxs.c
> index fda1d260b2966..eabea73a19fc7 100644
> --- a/drivers/spi/spi-mxs.c
> +++ b/drivers/spi/spi-mxs.c
> @@ -267,8 +267,7 @@ static int mxs_spi_txrx_dma(struct mxs_spi *spi,
> * The last descriptor must have this callback,
> * to finish the DMA transaction.
> */
> - desc->callback = mxs_ssp_dma_irq_callback;
> - desc->callback_param = spi;
> + dmaengine_desc_set_callback(desc, mxs_ssp_dma_irq_callback, NULL, spi);
>
> /* Start the transfer. */
> dmaengine_submit(desc);
> diff --git a/drivers/spi/spi-nxp-xspi.c b/drivers/spi/spi-nxp-xspi.c
> index 38c8d6269aadd..e532b2da54835 100644
> --- a/drivers/spi/spi-nxp-xspi.c
> +++ b/drivers/spi/spi-nxp-xspi.c
> @@ -872,8 +872,7 @@ static int nxp_xspi_ahb_dma_read(struct nxp_xspi *xspi,
> goto err_unmap_src;
> }
>
> - desc->callback = nxp_xspi_dma_rx_callback;
> - desc->callback_param = xspi;
> + dmaengine_desc_set_callback(desc, nxp_xspi_dma_rx_callback, NULL, xspi);
> reinit_completion(&xspi->dma_rx_c);
> dmaengine_submit(desc);
> dma_async_issue_pending(chan);
> diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c
> index e46b1d9c8cd08..56fc8211a752f 100644
> --- a/drivers/spi/spi-omap2-mcspi.c
> +++ b/drivers/spi/spi-omap2-mcspi.c
> @@ -436,8 +436,7 @@ static int omap2_mcspi_tx_dma(struct spi_device *spi,
> if (!tx)
> return -EIO;
>
> - tx->callback = omap2_mcspi_tx_callback;
> - tx->callback_param = spi;
> + dmaengine_desc_set_callback(tx, omap2_mcspi_tx_callback, NULL, spi);
>
> return dma_submit_error(dmaengine_submit(tx));
> }
> @@ -525,8 +524,7 @@ omap2_mcspi_rx_dma(struct spi_device *spi, struct spi_transfer *xfer,
> goto out_free_sg;
> }
>
> - tx->callback = omap2_mcspi_rx_callback;
> - tx->callback_param = spi;
> + dmaengine_desc_set_callback(tx, omap2_mcspi_rx_callback, NULL, spi);
> ret = dma_submit_error(dmaengine_submit(tx));
> if (ret)
> goto out_free_sg;
> diff --git a/drivers/spi/spi-pic32.c b/drivers/spi/spi-pic32.c
> index 8363bc873b03a..b6a6929cbb0c2 100644
> --- a/drivers/spi/spi-pic32.c
> +++ b/drivers/spi/spi-pic32.c
> @@ -330,8 +330,7 @@ static int pic32_spi_dma_transfer(struct pic32_spi *pic32s,
> }
>
> /* Put callback on the RX transfer, that should finish last */
> - desc_rx->callback = pic32_spi_dma_rx_notify;
> - desc_rx->callback_param = pic32s;
> + dmaengine_desc_set_callback(desc_rx, pic32_spi_dma_rx_notify, NULL, pic32s);
>
> cookie = dmaengine_submit(desc_rx);
> ret = dma_submit_error(cookie);
> diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c
> index 3ff30486b2892..9f98f95bb534c 100644
> --- a/drivers/spi/spi-pl022.c
> +++ b/drivers/spi/spi-pl022.c
> @@ -956,8 +956,7 @@ static int configure_dma(struct pl022 *pl022)
> goto err_txdesc;
>
> /* Put the callback on the RX transfer only, that should finish last */
> - rxdesc->callback = dma_callback;
> - rxdesc->callback_param = pl022;
> + dmaengine_desc_set_callback(rxdesc, dma_callback, NULL, pl022);
>
> /* Submit and fire RX and TX with TX last so we're ready to read! */
> dmaengine_submit(rxdesc);
> diff --git a/drivers/spi/spi-pxa2xx-dma.c b/drivers/spi/spi-pxa2xx-dma.c
> index c94d1d192e743..0e7ad7fb48eb2 100644
> --- a/drivers/spi/spi-pxa2xx-dma.c
> +++ b/drivers/spi/spi-pxa2xx-dma.c
> @@ -154,8 +154,7 @@ int pxa2xx_spi_dma_prepare(struct driver_data *drv_data,
> }
>
> /* We are ready when RX completes */
> - rx_desc->callback = pxa2xx_spi_dma_callback;
> - rx_desc->callback_param = drv_data;
> + dmaengine_desc_set_callback(rx_desc, pxa2xx_spi_dma_callback, NULL, drv_data);
>
> dmaengine_submit(rx_desc);
> dmaengine_submit(tx_desc);
> diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c
> index e8b076b1622d3..6be0b942d7c4e 100644
> --- a/drivers/spi/spi-qup.c
> +++ b/drivers/spi/spi-qup.c
> @@ -429,8 +429,7 @@ static int spi_qup_prep_sg(struct spi_controller *host, struct scatterlist *sgl,
> if (IS_ERR_OR_NULL(desc))
> return desc ? PTR_ERR(desc) : -EINVAL;
>
> - desc->callback = callback;
> - desc->callback_param = qup;
> + dmaengine_desc_set_callback(desc, callback, NULL, qup);
>
> cookie = dmaengine_submit(desc);
>
> diff --git a/drivers/spi/spi-rockchip.c b/drivers/spi/spi-rockchip.c
> index 1a81fd94b4396..f8d6cea2f3dad 100644
> --- a/drivers/spi/spi-rockchip.c
> +++ b/drivers/spi/spi-rockchip.c
> @@ -475,8 +475,7 @@ static int rockchip_spi_prepare_dma(struct rockchip_spi *rs,
> if (!rxdesc)
> return -EINVAL;
>
> - rxdesc->callback = rockchip_spi_dma_rxcb;
> - rxdesc->callback_param = ctlr;
> + dmaengine_desc_set_callback(rxdesc, rockchip_spi_dma_rxcb, NULL, ctlr);
> }
>
> txdesc = NULL;
> @@ -500,8 +499,7 @@ static int rockchip_spi_prepare_dma(struct rockchip_spi *rs,
> return -EINVAL;
> }
>
> - txdesc->callback = rockchip_spi_dma_txcb;
> - txdesc->callback_param = ctlr;
> + dmaengine_desc_set_callback(txdesc, rockchip_spi_dma_txcb, NULL, ctlr);
> }
>
> /* rx must be started before tx due to spi instinct */
> diff --git a/drivers/spi/spi-rspi.c b/drivers/spi/spi-rspi.c
> index c61edd1c1353b..5e03a186e9e79 100644
> --- a/drivers/spi/spi-rspi.c
> +++ b/drivers/spi/spi-rspi.c
> @@ -553,8 +553,7 @@ static int rspi_dma_transfer(struct rspi_data *rspi, struct sg_table *tx,
> goto no_dma_rx;
> }
>
> - desc_rx->callback = rspi_dma_complete;
> - desc_rx->callback_param = rspi;
> + dmaengine_desc_set_callback(desc_rx, rspi_dma_complete, NULL, rspi);
> cookie = dmaengine_submit(desc_rx);
> if (dma_submit_error(cookie)) {
> ret = cookie;
> @@ -577,8 +576,7 @@ static int rspi_dma_transfer(struct rspi_data *rspi, struct sg_table *tx,
> /* No callback */
> desc_tx->callback = NULL;
> } else {
> - desc_tx->callback = rspi_dma_complete;
> - desc_tx->callback_param = rspi;
> + dmaengine_desc_set_callback(desc_tx, rspi_dma_complete, NULL, rspi);
> }
> cookie = dmaengine_submit(desc_tx);
> if (dma_submit_error(cookie)) {
> diff --git a/drivers/spi/spi-rzv2h-rspi.c b/drivers/spi/spi-rzv2h-rspi.c
> index daa4239b0fe04..f17b6d3da5de7 100644
> --- a/drivers/spi/spi-rzv2h-rspi.c
> +++ b/drivers/spi/spi-rzv2h-rspi.c
> @@ -295,8 +295,7 @@ rzv2h_rspi_setup_dma_channel(struct rzv2h_rspi_priv *rspi,
> return ERR_PTR(-EAGAIN);
>
> if (direction == DMA_DEV_TO_MEM) {
> - desc->callback = rzv2h_rspi_dma_complete;
> - desc->callback_param = rspi;
> + dmaengine_desc_set_callback(desc, rzv2h_rspi_dma_complete, NULL, rspi);
> }
>
> return desc;
> diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
> index 58e306cc730fc..d24b95212ecd8 100644
> --- a/drivers/spi/spi-s3c64xx.c
> +++ b/drivers/spi/spi-s3c64xx.c
> @@ -338,8 +338,7 @@ static int s3c64xx_prepare_dma(struct s3c64xx_spi_dma_data *dma,
> return -ENOMEM;
> }
>
> - desc->callback = s3c64xx_spi_dmacb;
> - desc->callback_param = dma;
> + dmaengine_desc_set_callback(desc, s3c64xx_spi_dmacb, NULL, dma);
>
> dma->cookie = dmaengine_submit(desc);
> ret = dma_submit_error(dma->cookie);
> diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c
> index 89fbdde46cfe9..557c645fcebc6 100644
> --- a/drivers/spi/spi-sh-msiof.c
> +++ b/drivers/spi/spi-sh-msiof.c
> @@ -665,8 +665,7 @@ static int sh_msiof_dma_once(struct sh_msiof_spi_priv *p, const void *tx,
> if (!desc_rx)
> return -EAGAIN;
>
> - desc_rx->callback = sh_msiof_dma_complete;
> - desc_rx->callback_param = &p->done;
> + dmaengine_desc_set_callback(desc_rx, sh_msiof_dma_complete, NULL, &p->done);
> cookie = dmaengine_submit(desc_rx);
> if (dma_submit_error(cookie))
> return cookie;
> @@ -684,8 +683,7 @@ static int sh_msiof_dma_once(struct sh_msiof_spi_priv *p, const void *tx,
> goto no_dma_tx;
> }
>
> - desc_tx->callback = sh_msiof_dma_complete;
> - desc_tx->callback_param = &p->done_txdma;
> + dmaengine_desc_set_callback(desc_tx, sh_msiof_dma_complete, NULL, &p->done_txdma);
> cookie = dmaengine_submit(desc_tx);
> if (dma_submit_error(cookie)) {
> ret = cookie;
> diff --git a/drivers/spi/spi-spacemit-k1.c b/drivers/spi/spi-spacemit-k1.c
> index d03a93d149ecc..c9bf925ee3521 100644
> --- a/drivers/spi/spi-spacemit-k1.c
> +++ b/drivers/spi/spi-spacemit-k1.c
> @@ -294,8 +294,7 @@ static int k1_spi_dma_one(struct spi_controller *host, struct spi_device *spi,
> }
>
> /* When RX is complete we also know TX has completed */
> - rxdesc->callback = k1_spi_dma_callback;
> - rxdesc->callback_param = drv_data;
> + dmaengine_desc_set_callback(rxdesc, k1_spi_dma_callback, NULL, drv_data);
>
> dmaengine_submit(txdesc);
> dmaengine_submit(rxdesc);
> diff --git a/drivers/spi/spi-stm32-ospi.c b/drivers/spi/spi-stm32-ospi.c
> index fa0e8e83cb1be..4e202d74c9926 100644
> --- a/drivers/spi/spi-stm32-ospi.c
> +++ b/drivers/spi/spi-stm32-ospi.c
> @@ -374,8 +374,7 @@ static int stm32_ospi_tx_dma(struct stm32_ospi *ospi,
> cr = readl_relaxed(regs_base + OSPI_CR);
>
> reinit_completion(&ospi->dma_completion);
> - desc->callback = stm32_ospi_dma_callback;
> - desc->callback_param = &ospi->dma_completion;
> + dmaengine_desc_set_callback(desc, stm32_ospi_dma_callback, NULL, &ospi->dma_completion);
> cookie = dmaengine_submit(desc);
> err = dma_submit_error(cookie);
> if (err)
> diff --git a/drivers/spi/spi-stm32-qspi.c b/drivers/spi/spi-stm32-qspi.c
> index b77daba6db83a..f9865720c6dd3 100644
> --- a/drivers/spi/spi-stm32-qspi.c
> +++ b/drivers/spi/spi-stm32-qspi.c
> @@ -265,8 +265,7 @@ static int stm32_qspi_tx_dma(struct stm32_qspi *qspi,
> cr = readl_relaxed(qspi->io_base + QSPI_CR);
>
> reinit_completion(&qspi->dma_completion);
> - desc->callback = stm32_qspi_dma_callback;
> - desc->callback_param = &qspi->dma_completion;
> + dmaengine_desc_set_callback(desc, stm32_qspi_dma_callback, NULL, &qspi->dma_completion);
> cookie = dmaengine_submit(desc);
> err = dma_submit_error(cookie);
> if (err)
> diff --git a/drivers/spi/spi-stm32.c b/drivers/spi/spi-stm32.c
> index 4c3ae546afc05..66932400cf570 100644
> --- a/drivers/spi/spi-stm32.c
> +++ b/drivers/spi/spi-stm32.c
> @@ -1690,11 +1690,9 @@ static int stm32_spi_transfer_one_dma(struct stm32_spi *spi,
>
> if (rx_dma_desc) {
> if (rx_mdma_desc) {
> - rx_mdma_desc->callback = spi->cfg->dma_rx_cb;
> - rx_mdma_desc->callback_param = spi;
> + dmaengine_desc_set_callback(rx_mdma_desc, spi->cfg->dma_rx_cb, NULL, spi);
> } else {
> - rx_dma_desc->callback = spi->cfg->dma_rx_cb;
> - rx_dma_desc->callback_param = spi;
> + dmaengine_desc_set_callback(rx_dma_desc, spi->cfg->dma_rx_cb, NULL, spi);
> }
>
> /* Enable Rx DMA request */
> @@ -1719,8 +1717,7 @@ static int stm32_spi_transfer_one_dma(struct stm32_spi *spi,
> if (tx_dma_desc) {
> if (spi->cur_comm == SPI_SIMPLEX_TX ||
> spi->cur_comm == SPI_3WIRE_TX) {
> - tx_dma_desc->callback = spi->cfg->dma_tx_cb;
> - tx_dma_desc->callback_param = spi;
> + dmaengine_desc_set_callback(tx_dma_desc, spi->cfg->dma_tx_cb, NULL, spi);
> }
>
> if (dma_submit_error(dmaengine_submit(tx_dma_desc))) {
> diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c
> index 6b7a05dd0de8a..e9fce8618299a 100644
> --- a/drivers/spi/spi-sun6i.c
> +++ b/drivers/spi/spi-sun6i.c
> @@ -232,8 +232,7 @@ static int sun6i_spi_prepare_dma(struct sun6i_spi *sspi,
> DMA_PREP_INTERRUPT);
> if (!rxdesc)
> return -EINVAL;
> - rxdesc->callback_param = sspi;
> - rxdesc->callback = sun6i_spi_dma_rx_cb;
> + dmaengine_desc_set_callback(rxdesc, sun6i_spi_dma_rx_cb, NULL, sspi);
> }
>
> txdesc = NULL;
> diff --git a/drivers/spi/spi-tegra114.c b/drivers/spi/spi-tegra114.c
> index f43f2df478b45..ffe547d1e3af3 100644
> --- a/drivers/spi/spi-tegra114.c
> +++ b/drivers/spi/spi-tegra114.c
> @@ -480,8 +480,7 @@ static int tegra_spi_start_tx_dma(struct tegra_spi_data *tspi, int len)
> return -EIO;
> }
>
> - tspi->tx_dma_desc->callback = tegra_spi_dma_complete;
> - tspi->tx_dma_desc->callback_param = &tspi->tx_dma_complete;
> + dmaengine_desc_set_callback(tspi->tx_dma_desc, tegra_spi_dma_complete, NULL, &tspi->tx_dma_complete);
>
> dmaengine_submit(tspi->tx_dma_desc);
> dma_async_issue_pending(tspi->tx_dma_chan);
> @@ -499,8 +498,7 @@ static int tegra_spi_start_rx_dma(struct tegra_spi_data *tspi, int len)
> return -EIO;
> }
>
> - tspi->rx_dma_desc->callback = tegra_spi_dma_complete;
> - tspi->rx_dma_desc->callback_param = &tspi->rx_dma_complete;
> + dmaengine_desc_set_callback(tspi->rx_dma_desc, tegra_spi_dma_complete, NULL, &tspi->rx_dma_complete);
>
> dmaengine_submit(tspi->rx_dma_desc);
> dma_async_issue_pending(tspi->rx_dma_chan);
> diff --git a/drivers/spi/spi-tegra20-slink.c b/drivers/spi/spi-tegra20-slink.c
> index ed1fcf57dd30d..5aca26549e730 100644
> --- a/drivers/spi/spi-tegra20-slink.c
> +++ b/drivers/spi/spi-tegra20-slink.c
> @@ -440,8 +440,7 @@ static int tegra_slink_start_tx_dma(struct tegra_slink_data *tspi, int len)
> return -EIO;
> }
>
> - tspi->tx_dma_desc->callback = tegra_slink_dma_complete;
> - tspi->tx_dma_desc->callback_param = &tspi->tx_dma_complete;
> + dmaengine_desc_set_callback(tspi->tx_dma_desc, tegra_slink_dma_complete, NULL, &tspi->tx_dma_complete);
>
> dmaengine_submit(tspi->tx_dma_desc);
> dma_async_issue_pending(tspi->tx_dma_chan);
> @@ -459,8 +458,7 @@ static int tegra_slink_start_rx_dma(struct tegra_slink_data *tspi, int len)
> return -EIO;
> }
>
> - tspi->rx_dma_desc->callback = tegra_slink_dma_complete;
> - tspi->rx_dma_desc->callback_param = &tspi->rx_dma_complete;
> + dmaengine_desc_set_callback(tspi->rx_dma_desc, tegra_slink_dma_complete, NULL, &tspi->rx_dma_complete);
>
> dmaengine_submit(tspi->rx_dma_desc);
> dma_async_issue_pending(tspi->rx_dma_chan);
> diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c
> index d8cca3aa276b2..95132d8be9dd6 100644
> --- a/drivers/spi/spi-tegra210-quad.c
> +++ b/drivers/spi/spi-tegra210-quad.c
> @@ -522,8 +522,7 @@ static int tegra_qspi_start_tx_dma(struct tegra_qspi *tqspi, struct spi_transfer
> return -EIO;
> }
>
> - tqspi->tx_dma_desc->callback = tegra_qspi_dma_complete;
> - tqspi->tx_dma_desc->callback_param = &tqspi->tx_dma_complete;
> + dmaengine_desc_set_callback(tqspi->tx_dma_desc, tegra_qspi_dma_complete, NULL, &tqspi->tx_dma_complete);
> dmaengine_submit(tqspi->tx_dma_desc);
> dma_async_issue_pending(tqspi->tx_dma_chan);
>
> @@ -550,8 +549,7 @@ static int tegra_qspi_start_rx_dma(struct tegra_qspi *tqspi, struct spi_transfer
> return -EIO;
> }
>
> - tqspi->rx_dma_desc->callback = tegra_qspi_dma_complete;
> - tqspi->rx_dma_desc->callback_param = &tqspi->rx_dma_complete;
> + dmaengine_desc_set_callback(tqspi->rx_dma_desc, tegra_qspi_dma_complete, NULL, &tqspi->rx_dma_complete);
> dmaengine_submit(tqspi->rx_dma_desc);
> dma_async_issue_pending(tqspi->rx_dma_chan);
>
> diff --git a/drivers/spi/spi-ti-qspi.c b/drivers/spi/spi-ti-qspi.c
> index 091a8b8842f58..0083160c15fea 100644
> --- a/drivers/spi/spi-ti-qspi.c
> +++ b/drivers/spi/spi-ti-qspi.c
> @@ -452,8 +452,7 @@ static int ti_qspi_dma_xfer(struct ti_qspi *qspi, dma_addr_t dma_dst,
> return -EIO;
> }
>
> - tx->callback = ti_qspi_dma_callback;
> - tx->callback_param = qspi;
> + dmaengine_desc_set_callback(tx, ti_qspi_dma_callback, NULL, qspi);
> cookie = dmaengine_submit(tx);
> reinit_completion(&qspi->transfer_complete);
>
> diff --git a/drivers/spi/spi-topcliff-pch.c b/drivers/spi/spi-topcliff-pch.c
> index eb3485149e75a..fdda26eb311fb 100644
> --- a/drivers/spi/spi-topcliff-pch.c
> +++ b/drivers/spi/spi-topcliff-pch.c
> @@ -1021,8 +1021,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
> return;
> }
> dma_sync_sg_for_device(&data->host->dev, sg, num, DMA_FROM_DEVICE);
> - desc_rx->callback = pch_dma_rx_complete;
> - desc_rx->callback_param = data;
> + dmaengine_desc_set_callback(desc_rx, pch_dma_rx_complete, NULL, data);
> dma->nent = num;
> dma->desc_rx = desc_rx;
>
> @@ -1083,8 +1082,7 @@ static void pch_spi_handle_dma(struct pch_spi_data *data, int *bpw)
> return;
> }
> dma_sync_sg_for_device(&data->host->dev, sg, num, DMA_TO_DEVICE);
> - desc_tx->callback = NULL;
> - desc_tx->callback_param = data;
> + dmaengine_desc_set_callback(desc_tx, NULL, NULL, data);
> dma->nent = num;
> dma->desc_tx = desc_tx;
>
> diff --git a/drivers/spi/spi-uniphier.c b/drivers/spi/spi-uniphier.c
> index 86fce9a571dab..e8344a66e4361 100644
> --- a/drivers/spi/spi-uniphier.c
> +++ b/drivers/spi/spi-uniphier.c
> @@ -418,8 +418,7 @@ static int uniphier_spi_transfer_one_dma(struct spi_controller *host,
> if (!rxdesc)
> goto out_err_prep;
>
> - rxdesc->callback = uniphier_spi_dma_rxcb;
> - rxdesc->callback_param = host;
> + dmaengine_desc_set_callback(rxdesc, uniphier_spi_dma_rxcb, NULL, host);
>
> uniphier_spi_irq_enable(priv, SSI_IE_RXRE);
> atomic_or(SSI_DMA_RX_BUSY, &priv->dma_busy);
> @@ -445,8 +444,7 @@ static int uniphier_spi_transfer_one_dma(struct spi_controller *host,
> if (!txdesc)
> goto out_err_prep;
>
> - txdesc->callback = uniphier_spi_dma_txcb;
> - txdesc->callback_param = host;
> + dmaengine_desc_set_callback(txdesc, uniphier_spi_dma_txcb, NULL, host);
>
> uniphier_spi_irq_enable(priv, SSI_IE_TXRE);
> atomic_or(SSI_DMA_TX_BUSY, &priv->dma_busy);
> --
> 2.43.0
>
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@xxxxxxxxxxxxxxxxxxx
> http://lists.infradead.org/mailman/listinfo/linux-riscv