On Thu, Jun 18, 2026 at 07:00:54AM +0200, Linus Walleij wrote: > Replace the LCLA ESRAM regulator with runtime PM. > > Use the SRAM device that owns the ESRAM34 power domain. > > Hold that domain while DMA transfers are active. > > Assisted-by: Codex:gpt-5-5 > Signed-off-by: Linus Walleij <[email protected]> > --- > drivers/dma/ste_dma40.c | 97 > ++++++++++++++++++++++++++++--------------------- > 1 file changed, 55 insertions(+), 42 deletions(-) > > diff --git a/drivers/dma/ste_dma40.c b/drivers/dma/ste_dma40.c > index 9b803c0aec25..6ca67ec446dc 100644 > --- a/drivers/dma/ste_dma40.c > +++ b/drivers/dma/ste_dma40.c > @@ -21,8 +21,8 @@ > #include <linux/of.h> > #include <linux/of_address.h> > #include <linux/of_dma.h> > +#include <linux/of_platform.h> > #include <linux/amba/bus.h> > -#include <linux/regulator/consumer.h> > > #include "dmaengine.h" > #include "ste_dma40.h" > @@ -571,7 +571,8 @@ struct d40_gen_dmac { > * to phy_chans entries. > * @plat_data: Pointer to provided platform_data which is the driver > * configuration. > - * @lcpa_regulator: Pointer to hold the regulator for the esram bank for > lcla. > + * @lcla_dev: SRAM device for the ESRAM bank used by LCLA. > + * @lcla_pm_enabled: Whether runtime PM was enabled for LCLA by this driver. > * @phy_res: Vector containing all physical channels. > * @lcla_pool: lcla pool settings and data. > * @lcpa_base: The virtual mapped address of LCPA. > @@ -607,7 +608,8 @@ struct d40_base { > struct d40_chan **lookup_log_chans; > struct d40_chan **lookup_phy_chans; > struct stedma40_platform_data *plat_data; > - struct regulator *lcpa_regulator; > + struct device *lcla_dev; > + bool lcla_pm_enabled; > /* Physical half channels */ > struct d40_phy_res *phy_res; > struct d40_lcla_pool lcla_pool; > @@ -628,6 +630,22 @@ static struct device *chan2dev(struct d40_chan *d40c) > return &d40c->chan.dev->device; > } > > +static void d40_transfer_runtime_get(struct d40_base *base) > +{ > + if (base->lcla_dev) > + pm_runtime_get_sync(base->lcla_dev); > + > + pm_runtime_get_sync(base->dev);
Suggest create device link between base->dev and base->lcla_dev, so run time pm framework will auto do it for you Ref: https://lore.kernel.org/imx/[email protected]/ Frank
