On Mon, Apr 14, 2025 at 8:53 PM Michal Wilczynski <m.wilczyn...@samsung.com> wrote: > > Introduce a new dev_pm_info flag - platform_resources_managed, to > indicate whether platform PM resources such as clocks or resets are > managed externally (e.g. by a generic power domain driver) instead of > directly by the consumer device driver.
I think that this is genpd-specific and so I don't think it belongs in struct dev_pm_info. There is dev->power.subsys_data->domain_data, why not use it for this? Also, it should be documented way more comprehensively IMV. Who is supposed to set it and when? What does it mean when it is set? > This flag enables device drivers to cooperate with SoC-specific PM > domains by conditionally skipping management of clocks and resets when > the platform owns them. > > This idea was discussed on the mailing list [1]. > > [1] - > https://lore.kernel.org/all/CAPDyKFq=BF5f2i_Sr1cmVqtVAMgr=0fqsksl7rhzlkn++y0...@mail.gmail.com/ > > Signed-off-by: Michal Wilczynski <m.wilczyn...@samsung.com> > --- > include/linux/device.h | 11 +++++++++++ > include/linux/pm.h | 1 + > 2 files changed, 12 insertions(+) > > diff --git a/include/linux/device.h b/include/linux/device.h > index > 79e49fe494b7c4c70d902886db63c4cfe5b4de4f..3e7a36dd874cfb6b98e2451c7a876989aa9f1913 > 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -881,6 +881,17 @@ static inline bool device_async_suspend_enabled(struct > device *dev) > return !!dev->power.async_suspend; > } > > +static inline bool device_platform_resources_pm_managed(struct device *dev) Could this function name be shorter? > +{ > + return dev->power.platform_resources_managed; > +} > + > +static inline void device_platform_resources_set_pm_managed(struct device > *dev, > + bool val) Ditto? > +{ > + dev->power.platform_resources_managed = val; > +} > + > static inline bool device_pm_not_required(struct device *dev) > { > return dev->power.no_pm; > diff --git a/include/linux/pm.h b/include/linux/pm.h > index > f0bd8fbae4f2c09c63d780bb2528693acf2d2da1..cd6cb59686e4a5e9eaa2701d1e44af2abbfd88d1 > 100644 > --- a/include/linux/pm.h > +++ b/include/linux/pm.h > @@ -670,6 +670,7 @@ struct dev_pm_info { > bool no_pm:1; > bool early_init:1; /* Owned by the PM core */ > bool direct_complete:1; /* Owned by the PM > core */ > + bool platform_resources_managed:1; > u32 driver_flags; > spinlock_t lock; > #ifdef CONFIG_PM_SLEEP > > -- > 2.34.1 > >