Re: [PATCH 1/1] mmc: use dmaengine_desc_set_callback()
From: Ulf Hansson
Date: Wed Nov 11 2026 - 07:45:31 EST
On Mon, Nov 2, 2026 at 6:21 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 MMC host 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>
Applied for next, thanks!
Kind regards
Uffe
> ---
> drivers/mmc/host/atmel-mci.c | 3 +--
> drivers/mmc/host/bcm2835.c | 3 +--
> drivers/mmc/host/dw_mmc.c | 3 +--
> drivers/mmc/host/moxart-mmc.c | 3 +--
> drivers/mmc/host/mxcmmc.c | 3 +--
> drivers/mmc/host/mxs-mmc.c | 3 +--
> drivers/mmc/host/omap.c | 3 +--
> drivers/mmc/host/omap_hsmmc.c | 3 +--
> drivers/mmc/host/owl-mmc.c | 3 +--
> drivers/mmc/host/pxamci.c | 3 +--
> drivers/mmc/host/renesas_sdhi_sys_dmac.c | 6 ++----
> drivers/mmc/host/sdhci.c | 3 +--
> drivers/mmc/host/sh_mmcif.c | 6 ++----
> drivers/mmc/host/uniphier-sd.c | 3 +--
> drivers/mmc/host/usdhi6rol0.c | 3 +--
> 15 files changed, 17 insertions(+), 34 deletions(-)
>
> diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
> index 98933be5f1744..de4ef7a675892 100644
> --- a/drivers/mmc/host/atmel-mci.c
> +++ b/drivers/mmc/host/atmel-mci.c
> @@ -1172,8 +1172,7 @@ atmci_prepare_data_dma(struct atmel_mci *host, struct mmc_data *data)
> goto unmap_exit;
>
> host->dma.data_desc = desc;
> - desc->callback = atmci_dma_complete;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, atmci_dma_complete, NULL, host);
>
> return iflags;
> unmap_exit:
> diff --git a/drivers/mmc/host/bcm2835.c b/drivers/mmc/host/bcm2835.c
> index efd1903c3ccd4..9a2c995577d46 100644
> --- a/drivers/mmc/host/bcm2835.c
> +++ b/drivers/mmc/host/bcm2835.c
> @@ -506,8 +506,7 @@ void bcm2835_prepare_dma(struct bcm2835_host *host, struct mmc_data *data)
> return;
> }
>
> - desc->callback = bcm2835_dma_complete;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, bcm2835_dma_complete, NULL, host);
> host->dma_desc = desc;
> host->dma_chan = dma_chan;
> host->dma_dir = dir_data;
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index ff0b25d287a94..15c65aeea8030 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -884,8 +884,7 @@ static int dw_mci_edmac_start_dma(struct dw_mci *host,
> }
>
> /* Set dw_mci_dmac_complete_dma as callback */
> - desc->callback = dw_mci_dmac_complete_dma;
> - desc->callback_param = (void *)host;
> + dmaengine_desc_set_callback(desc, dw_mci_dmac_complete_dma, NULL, (void *)host);
> dmaengine_submit(desc);
>
> /* Flush cache before write */
> diff --git a/drivers/mmc/host/moxart-mmc.c b/drivers/mmc/host/moxart-mmc.c
> index 28aed13549a64..15689717c76bf 100644
> --- a/drivers/mmc/host/moxart-mmc.c
> +++ b/drivers/mmc/host/moxart-mmc.c
> @@ -289,8 +289,7 @@ static void moxart_transfer_dma(struct mmc_data *data, struct moxart_host *host)
>
> if (desc) {
> host->tx_desc = desc;
> - desc->callback = moxart_dma_complete;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, moxart_dma_complete, NULL, host);
> dmaengine_submit(desc);
> dma_async_issue_pending(dma_chan);
> }
> diff --git a/drivers/mmc/host/mxcmmc.c b/drivers/mmc/host/mxcmmc.c
> index 097498a3f8ff4..e6271d67b6f6c 100644
> --- a/drivers/mmc/host/mxcmmc.c
> +++ b/drivers/mmc/host/mxcmmc.c
> @@ -394,8 +394,7 @@ static int mxcmci_start_cmd(struct mxcmci_host *host, struct mmc_command *cmd,
>
> if (mxcmci_use_dma(host)) {
> if (host->dma_dir == DMA_FROM_DEVICE) {
> - host->desc->callback = mxcmci_dma_callback;
> - host->desc->callback_param = host;
> + dmaengine_desc_set_callback(host->desc, mxcmci_dma_callback, NULL, host);
> } else {
> int_cntr |= INT_WRITE_OP_DONE_EN;
> }
> diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
> index 7c7c52d9e8e72..6a2b3e6d9a207 100644
> --- a/drivers/mmc/host/mxs-mmc.c
> +++ b/drivers/mmc/host/mxs-mmc.c
> @@ -234,8 +234,7 @@ static struct dma_async_tx_descriptor *mxs_mmc_prep_dma(
> desc = dmaengine_prep_slave_sg(ssp->dmach,
> sgl, sg_len, ssp->slave_dirn, flags);
> if (desc) {
> - desc->callback = mxs_mmc_dma_irq_callback;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, mxs_mmc_dma_irq_callback, NULL, host);
> } else {
> if (data)
> dma_unmap_sg(mmc_dev(host->mmc), data->sg,
> diff --git a/drivers/mmc/host/omap.c b/drivers/mmc/host/omap.c
> index 527b89a5ed707..4e72e57d11971 100644
> --- a/drivers/mmc/host/omap.c
> +++ b/drivers/mmc/host/omap.c
> @@ -1050,8 +1050,7 @@ mmc_omap_prepare_data(struct mmc_omap_host *host, struct mmc_request *req)
>
> OMAP_MMC_WRITE(host, BUF, buf);
>
> - tx->callback = mmc_omap_dma_callback;
> - tx->callback_param = host;
> + dmaengine_desc_set_callback(tx, mmc_omap_dma_callback, NULL, host);
> dmaengine_submit(tx);
> host->brs_received = 0;
> host->dma_done = 0;
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index de5a3b70107d8..ba60b81560fbd 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -1279,8 +1279,7 @@ static int omap_hsmmc_setup_dma_transfer(struct omap_hsmmc_host *host,
> return -1;
> }
>
> - tx->callback = omap_hsmmc_dma_callback;
> - tx->callback_param = host;
> + dmaengine_desc_set_callback(tx, omap_hsmmc_dma_callback, NULL, host);
>
> /* Does not fail */
> dmaengine_submit(tx);
> diff --git a/drivers/mmc/host/owl-mmc.c b/drivers/mmc/host/owl-mmc.c
> index d5b8a110267b8..8e0520d338c47 100644
> --- a/drivers/mmc/host/owl-mmc.c
> +++ b/drivers/mmc/host/owl-mmc.c
> @@ -329,8 +329,7 @@ static int owl_mmc_prepare_data(struct owl_mmc_host *owl_host,
>
> owl_host->data = data;
>
> - owl_host->desc->callback = owl_mmc_dma_complete;
> - owl_host->desc->callback_param = (void *)owl_host;
> + dmaengine_desc_set_callback(owl_host->desc, owl_mmc_dma_complete, NULL, (void *)owl_host);
> data->error = 0;
>
> return 0;
> diff --git a/drivers/mmc/host/pxamci.c b/drivers/mmc/host/pxamci.c
> index f8427f071c009..06483f7355206 100644
> --- a/drivers/mmc/host/pxamci.c
> +++ b/drivers/mmc/host/pxamci.c
> @@ -212,8 +212,7 @@ static void pxamci_setup_data(struct pxamci_host *host, struct mmc_data *data)
> }
>
> if (!(data->flags & MMC_DATA_READ)) {
> - tx->callback = pxamci_dma_irq;
> - tx->callback_param = host;
> + dmaengine_desc_set_callback(tx, pxamci_dma_irq, NULL, host);
> }
>
> host->dma_cookie = dmaengine_submit(tx);
> diff --git a/drivers/mmc/host/renesas_sdhi_sys_dmac.c b/drivers/mmc/host/renesas_sdhi_sys_dmac.c
> index 426308b73b490..e5ef3bae88d59 100644
> --- a/drivers/mmc/host/renesas_sdhi_sys_dmac.c
> +++ b/drivers/mmc/host/renesas_sdhi_sys_dmac.c
> @@ -196,8 +196,7 @@ static void renesas_sdhi_sys_dmac_start_dma_rx(struct tmio_mmc_host *host)
>
> if (desc) {
> reinit_completion(&priv->dma_priv.dma_dataend);
> - desc->callback = renesas_sdhi_sys_dmac_dma_callback;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, renesas_sdhi_sys_dmac_dma_callback, NULL, host);
>
> cookie = dmaengine_submit(desc);
> if (cookie < 0) {
> @@ -272,8 +271,7 @@ static void renesas_sdhi_sys_dmac_start_dma_tx(struct tmio_mmc_host *host)
>
> if (desc) {
> reinit_completion(&priv->dma_priv.dma_dataend);
> - desc->callback = renesas_sdhi_sys_dmac_dma_callback;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, renesas_sdhi_sys_dmac_dma_callback, NULL, host);
>
> cookie = dmaengine_submit(desc);
> if (cookie < 0) {
> diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
> index efb4c7742fe21..18aca84834fb6 100644
> --- a/drivers/mmc/host/sdhci.c
> +++ b/drivers/mmc/host/sdhci.c
> @@ -1298,8 +1298,7 @@ static int sdhci_external_dma_setup(struct sdhci_host *host,
> if (!desc)
> return -EINVAL;
>
> - desc->callback = NULL;
> - desc->callback_param = NULL;
> + dmaengine_desc_set_callback(desc, NULL, NULL, NULL);
>
> cookie = dmaengine_submit(desc);
> if (dma_submit_error(cookie))
> diff --git a/drivers/mmc/host/sh_mmcif.c b/drivers/mmc/host/sh_mmcif.c
> index 8bd9cdedafa4d..9fe49fa8f372f 100644
> --- a/drivers/mmc/host/sh_mmcif.c
> +++ b/drivers/mmc/host/sh_mmcif.c
> @@ -299,8 +299,7 @@ static void sh_mmcif_start_dma_rx(struct sh_mmcif_host *host)
> }
>
> if (desc) {
> - desc->callback = sh_mmcif_dma_complete;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, sh_mmcif_dma_complete, NULL, host);
> cookie = dmaengine_submit(desc);
> sh_mmcif_bitset(host, MMCIF_CE_BUF_ACC, BUF_ACC_DMAREN);
> dma_async_issue_pending(chan);
> @@ -349,8 +348,7 @@ static void sh_mmcif_start_dma_tx(struct sh_mmcif_host *host)
> }
>
> if (desc) {
> - desc->callback = sh_mmcif_dma_complete;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, sh_mmcif_dma_complete, NULL, host);
> cookie = dmaengine_submit(desc);
> sh_mmcif_bitset(host, MMCIF_CE_BUF_ACC, BUF_ACC_DMAWEN);
> dma_async_issue_pending(chan);
> diff --git a/drivers/mmc/host/uniphier-sd.c b/drivers/mmc/host/uniphier-sd.c
> index 1eae2f4b6c1f9..d75ac6abd853c 100644
> --- a/drivers/mmc/host/uniphier-sd.c
> +++ b/drivers/mmc/host/uniphier-sd.c
> @@ -158,8 +158,7 @@ static void uniphier_sd_external_dma_start(struct tmio_mmc_host *host,
> if (!desc)
> goto unmap_sg;
>
> - desc->callback_result = uniphier_sd_external_dma_callback;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, NULL, uniphier_sd_external_dma_callback, host);
>
> cookie = dmaengine_submit(desc);
> if (cookie < 0)
> diff --git a/drivers/mmc/host/usdhi6rol0.c b/drivers/mmc/host/usdhi6rol0.c
> index 3bccf800339ba..8b2bb44e2f86a 100644
> --- a/drivers/mmc/host/usdhi6rol0.c
> +++ b/drivers/mmc/host/usdhi6rol0.c
> @@ -592,8 +592,7 @@ static int usdhi6_dma_setup(struct usdhi6_host *host, struct dma_chan *chan,
> }
>
> if (desc) {
> - desc->callback = usdhi6_dma_complete;
> - desc->callback_param = host;
> + dmaengine_desc_set_callback(desc, usdhi6_dma_complete, NULL, host);
> cookie = dmaengine_submit(desc);
> }
>
> --
> 2.43.0
>