]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
dmaengine: sh: rz-dmac: Use rz_dmac_disable_hw()
authorClaudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Tue, 26 May 2026 08:46:56 +0000 (11:46 +0300)
committerVinod Koul <vkoul@kernel.org>
Thu, 4 Jun 2026 15:28:31 +0000 (20:58 +0530)
Use rz_dmac_disable_hw() instead of open coding it. This unifies the
code and prepares it for the addition of suspend to RAM and cyclic DMA.

The rz_dmac_disable_hw() from rz_dmac_chan_probe() was moved after
vchan_init() as it initializes the channel->vc.chan.device used in
rz_dmac_disable_hw().

Reviewed-by: Frank Li <Frank.Li@nxp.com>
Tested-by: John Madieu <john.madieu.xa@bp.renesas.com>
Signed-off-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Tested-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Link: https://patch.msgid.link/20260526084710.3491480-5-claudiu.beznea@kernel.org
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/dma/sh/rz-dmac.c

index 1717b407ab9e97bbcafdd77b1bcfc9717601a3ea..40ddf534c094864820a9ea2021f8b9d78b9088e2 100644 (file)
@@ -873,7 +873,7 @@ static void rz_dmac_irq_handle_channel(struct rz_dmac_chan *channel)
                        channel->index, chstat);
 
                scoped_guard(spinlock_irqsave, &channel->vc.lock)
-                       rz_dmac_ch_writel(channel, CHCTRL_DEFAULT, CHCTRL, 1);
+                       rz_dmac_disable_hw(channel);
                return;
        }
 
@@ -1000,15 +1000,15 @@ static int rz_dmac_chan_probe(struct rz_dmac *dmac,
        }
        rz_lmdesc_setup(channel, lmdesc);
 
-       /* Initialize register for each channel */
-       rz_dmac_ch_writel(channel, CHCTRL_DEFAULT, CHCTRL, 1);
-
        channel->vc.desc_free = rz_dmac_virt_desc_free;
        vchan_init(&channel->vc, &dmac->engine);
        INIT_LIST_HEAD(&channel->ld_queue);
        INIT_LIST_HEAD(&channel->ld_free);
        INIT_LIST_HEAD(&channel->ld_active);
 
+       /* Initialize register for each channel */
+       rz_dmac_disable_hw(channel);
+
        /* Request the channel interrupt. */
        scnprintf(pdev_irqname, sizeof(pdev_irqname), "ch%u", index);
        irq = platform_get_irq_byname(pdev, pdev_irqname);