2024-01-30 13:11:43

by Ulf Hansson

[permalink] [raw]
Subject: [PATCH v3 0/5] PM: domains: Add helpers for multi PM domains to avoid open-coding

Rafael, my plan is queue up this series via my pmdomain tree. Please let me know
if you see any issues with that, especially around patch1.

Updates in v3:
- Added tested-by, reviewed-by and suggested-by tags. No other changes
have been made.

Updates in v2:
- Ccing Daniel Baluta and Iuliana Prodan the NXP remoteproc patches to
requests help with testing.
- Fixed NULL pointer bug in patch1, pointed out by Nikunj.
- Added some tested/reviewed-by tags.

Attaching/detaching of a device to multiple PM domains has started to become a
common operation for many drivers, typically during ->probe() and ->remove().
In most cases, this has lead to lots of boilerplate code in the drivers.

This series adds a pair of helper functions to manage the attach/detach of a
device to its multiple PM domains. Moreover, a couple of drivers have been
converted to use the new helpers as a proof of concept.

Note 1)
The changes in the drivers have only been compile tested, while the helpers
have been tested along with a couple of local dummy drivers that I have hacked
up to model both genpd providers and genpd consumers.

Note 2)
I was struggling to make up mind if we should have a separate helper to attach
all available power-domains described in DT, rather than providing "NULL" to the
dev_pm_domain_attach_list(). I decided not to, but please let me know if you
prefer the other option.

Note 3)
For OPP integration, as a follow up I am striving to make the
dev_pm_opp_attach_genpd() redundant. Instead I think we should move towards
using dev_pm_opp_set_config()->_opp_set_required_devs(), which would allow us to
use the helpers that $subject series is adding.

Kind regards
Ulf Hansson

Ulf Hansson (5):
PM: domains: Add helper functions to attach/detach multiple PM domains
remoteproc: imx_dsp_rproc: Convert to
dev_pm_domain_attach|detach_list()
remoteproc: imx_rproc: Convert to dev_pm_domain_attach|detach_list()
remoteproc: qcom_q6v5_adsp: Convert to
dev_pm_domain_attach|detach_list()
media: venus: Convert to dev_pm_domain_attach|detach_list() for vcodec

drivers/base/power/common.c | 134 +++++++++++++++
drivers/media/platform/qcom/venus/core.c | 12 +-
drivers/media/platform/qcom/venus/core.h | 7 +-
.../media/platform/qcom/venus/pm_helpers.c | 48 ++----
drivers/remoteproc/imx_dsp_rproc.c | 82 +--------
drivers/remoteproc/imx_rproc.c | 73 +-------
drivers/remoteproc/qcom_q6v5_adsp.c | 160 ++++++++----------
include/linux/pm_domain.h | 38 +++++
8 files changed, 289 insertions(+), 265 deletions(-)

--
2.34.1



2024-02-07 11:41:41

by Ulf Hansson

[permalink] [raw]
Subject: Re: [PATCH v3 0/5] PM: domains: Add helpers for multi PM domains to avoid open-coding

On Tue, 30 Jan 2024 at 13:39, Ulf Hansson <[email protected]> wrote:
>
> Rafael, my plan is queue up this series via my pmdomain tree. Please let me know
> if you see any issues with that, especially around patch1.
>
> Updates in v3:
> - Added tested-by, reviewed-by and suggested-by tags. No other changes
> have been made.
>
> Updates in v2:
> - Ccing Daniel Baluta and Iuliana Prodan the NXP remoteproc patches to
> requests help with testing.
> - Fixed NULL pointer bug in patch1, pointed out by Nikunj.
> - Added some tested/reviewed-by tags.
>
> Attaching/detaching of a device to multiple PM domains has started to become a
> common operation for many drivers, typically during ->probe() and ->remove().
> In most cases, this has lead to lots of boilerplate code in the drivers.
>
> This series adds a pair of helper functions to manage the attach/detach of a
> device to its multiple PM domains. Moreover, a couple of drivers have been
> converted to use the new helpers as a proof of concept.
>
> Note 1)
> The changes in the drivers have only been compile tested, while the helpers
> have been tested along with a couple of local dummy drivers that I have hacked
> up to model both genpd providers and genpd consumers.
>
> Note 2)
> I was struggling to make up mind if we should have a separate helper to attach
> all available power-domains described in DT, rather than providing "NULL" to the
> dev_pm_domain_attach_list(). I decided not to, but please let me know if you
> prefer the other option.
>
> Note 3)
> For OPP integration, as a follow up I am striving to make the
> dev_pm_opp_attach_genpd() redundant. Instead I think we should move towards
> using dev_pm_opp_set_config()->_opp_set_required_devs(), which would allow us to
> use the helpers that $subject series is adding.
>
> Kind regards
> Ulf Hansson
>
> Ulf Hansson (5):
> PM: domains: Add helper functions to attach/detach multiple PM domains
> remoteproc: imx_dsp_rproc: Convert to
> dev_pm_domain_attach|detach_list()
> remoteproc: imx_rproc: Convert to dev_pm_domain_attach|detach_list()
> remoteproc: qcom_q6v5_adsp: Convert to
> dev_pm_domain_attach|detach_list()
> media: venus: Convert to dev_pm_domain_attach|detach_list() for vcodec
>
> drivers/base/power/common.c | 134 +++++++++++++++
> drivers/media/platform/qcom/venus/core.c | 12 +-
> drivers/media/platform/qcom/venus/core.h | 7 +-
> .../media/platform/qcom/venus/pm_helpers.c | 48 ++----
> drivers/remoteproc/imx_dsp_rproc.c | 82 +--------
> drivers/remoteproc/imx_rproc.c | 73 +-------
> drivers/remoteproc/qcom_q6v5_adsp.c | 160 ++++++++----------
> include/linux/pm_domain.h | 38 +++++
> 8 files changed, 289 insertions(+), 265 deletions(-)
>
>

I have now applied this to my next branch to my pmdomain tree, to get
it more tested in linux-next.

Please let me know if there are objections to this or if any of you
want to provide an ack/tested/reviewed-by tag, thanks!

Kind regards
Uffe