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

Andy Shevchenko andriy.shevchenko at linux.intel.com
Wed Nov 4 08:57:14 PST 2026


On Wed, Nov 04, 2026 at 10:22:45AM -0500, Frank.Li at oss.nxp.com wrote:
> 
> 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.

Reviewed-by: Andy Shevchenko <andriy.shevchenko at linux.intel.com> # dw, pxa2xx, topcliff-pch

(Note, you forgot to add the list of the drivers to the Rb trailers of other reviewers)

>  drivers/spi/spi-dw-dma.c          | 6 ++----
>  drivers/spi/spi-pxa2xx-dma.c      | 3 +--
>  drivers/spi/spi-topcliff-pch.c    | 6 ++----

> --- 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);

> --- 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);

> --- a/drivers/spi/spi-topcliff-pch.c
> +++ b/drivers/spi/spi-topcliff-pch.c
> @@ -1022,8 +1022,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;
>  
> @@ -1084,8 +1083,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);

Yeah, data can be replaced by NULL as has been already mentioned.

>  	dma->nent = num;
>  	dma->desc_tx = desc_tx;
>  

-- 
With Best Regards,
Andy Shevchenko





More information about the linux-riscv mailing list