[PATCH v2 13/64] dmaengine: mxs-dma: use dma_chan BH scheduling
Allen Pais <[email protected]> Mon, 27 Jul 2026 13:28:41 -0700
| Newsgroups | org.kernel.vger.dmaengine,dev.linux.lists.imx,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <e0499d943001c6ef2142bfdc910f584dd575e8bc.1785183549.git.allen.lkml@gmail.com> |
Replace the per-channel tasklet with the shared dma_chan BH helper. The handler continues to run in softirq context while dmaengine owns the common scheduling and teardown mechanism. Signed-off-by: Allen Pais <[email protected]> --- 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..8cecc0add82d 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 */ + dma_chan_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); + dma_chan_init_bh(&mxs_chan->chan, mxs_dma_tasklet); /* Add the channel to mxs_chan list */ -- 2.43.0