[PATCH v3 13/34] dmaengine: mxs-dma: use dmaengine BH scheduling
Frank Li
Frank.li at oss.nxp.com
Wed Sep 2 08:33:49 PDT 2026
On Mon, Aug 10, 2026 at 11:09:14AM -0700, Allen Pais wrote:
> Replace the per-channel tasklet with the shared dmaengine BH helper.
> The handler continues to run in softirq context while dmaengine owns
> the common scheduling and teardown mechanism.
>
> Signed-off-by: Allen Pais <allen.lkml at gmail.com>
> ---
Reviewed-by: Frank Li <Frank.Li at nxp.com>
> drivers/dma/mxs-dma.c | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/dma/mxs-dma.c b/drivers/dma/mxs-dma.c
> index 7acb3d29dad3..149ac402f7b4 100644
> --- a/drivers/dma/mxs-dma.c
> +++ b/drivers/dma/mxs-dma.c
> @@ -109,7 +109,6 @@ struct mxs_dma_chan {
> struct mxs_dma_engine *mxs_dma;
> struct dma_chan chan;
> struct dma_async_tx_descriptor desc;
> - struct tasklet_struct tasklet;
> unsigned int chan_irq;
> struct mxs_dma_ccw *ccw;
> dma_addr_t ccw_phys;
> @@ -300,9 +299,9 @@ static dma_cookie_t mxs_dma_tx_submit(struct dma_async_tx_descriptor *tx)
> return dma_cookie_assign(tx);
> }
>
> -static void mxs_dma_tasklet(struct tasklet_struct *t)
> +static void mxs_dma_tasklet(struct dma_chan *chan)
> {
> - struct mxs_dma_chan *mxs_chan = from_tasklet(mxs_chan, t, tasklet);
> + struct mxs_dma_chan *mxs_chan = to_mxs_dma_chan(chan);
>
> dmaengine_desc_get_callback_invoke(&mxs_chan->desc, NULL);
> }
> @@ -386,8 +385,8 @@ static irqreturn_t mxs_dma_int_handler(int irq, void *dev_id)
> dma_cookie_complete(&mxs_chan->desc);
> }
>
> - /* schedule tasklet on this channel */
> - tasklet_schedule(&mxs_chan->tasklet);
> + /* schedule BH on this channel */
> + dmaengine_schedule_bh(&mxs_chan->chan);
>
> return IRQ_HANDLED;
> }
> @@ -781,7 +780,7 @@ static int mxs_dma_probe(struct platform_device *pdev)
> mxs_chan->chan.device = &mxs_dma->dma_device;
> dma_cookie_init(&mxs_chan->chan);
>
> - tasklet_setup(&mxs_chan->tasklet, mxs_dma_tasklet);
> + dmaengine_init_bh(&mxs_chan->chan, mxs_dma_tasklet);
>
>
> /* Add the channel to mxs_chan list */
> --
> 2.43.0
>
More information about the linux-arm-kernel
mailing list