Hi Biju, Vinod, On Thu, Sep 23, 2021 at 12:25 PM Biju Das <biju.das.jz@xxxxxxxxxxxxxx> wrote: > Currently, DMA clocks are turned on by the bootloader. > This patch adds support for DMA clock handling so that > the driver manages the DMA clocks. > > Fixes: 5000d37042a6 ("dmaengine: sh: Add DMAC driver for RZ/G2L SoC") > Signed-off-by: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> If I'm not mistaken, this is a fix we want in v5.15, to avoid regressions when the clock driver will be fixed (in clk-fixes for v5.15), and DMA will be enabled in DT (in v5.16)? Thanks! > --- > v1->v2: > * Handled the failure case for pm_runtime_resume_and_get > * Added Geert's Rb tag. > --- > drivers/dma/sh/rz-dmac.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/dma/sh/rz-dmac.c b/drivers/dma/sh/rz-dmac.c > index f9f30cbeccbe..d9f2cfef878e 100644 > --- a/drivers/dma/sh/rz-dmac.c > +++ b/drivers/dma/sh/rz-dmac.c > @@ -18,6 +18,7 @@ > #include <linux/of_dma.h> > #include <linux/of_platform.h> > #include <linux/platform_device.h> > +#include <linux/pm_runtime.h> > #include <linux/slab.h> > #include <linux/spinlock.h> > > @@ -872,6 +873,13 @@ static int rz_dmac_probe(struct platform_device *pdev) > /* Initialize the channels. */ > INIT_LIST_HEAD(&dmac->engine.channels); > > + pm_runtime_enable(&pdev->dev); > + ret = pm_runtime_resume_and_get(&pdev->dev); > + if (ret < 0) { > + dev_err(&pdev->dev, "pm_runtime_resume_and_get failed\n"); > + goto err_pm_disable; > + } > + > for (i = 0; i < dmac->n_channels; i++) { > ret = rz_dmac_chan_probe(dmac, &dmac->channels[i], i); > if (ret < 0) > @@ -925,6 +933,10 @@ static int rz_dmac_probe(struct platform_device *pdev) > channel->lmdesc.base_dma); > } > > + pm_runtime_put(&pdev->dev); > +err_pm_disable: > + pm_runtime_disable(&pdev->dev); > + > return ret; > } > > @@ -943,6 +955,8 @@ static int rz_dmac_remove(struct platform_device *pdev) > } > of_dma_controller_free(pdev->dev.of_node); > dma_async_device_unregister(&dmac->engine); > + pm_runtime_put(&pdev->dev); > + pm_runtime_disable(&pdev->dev); > > return 0; > } Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds