From: Iuliana Prodan <iuliana.prodan@nxp.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Viresh Kumar <viresh.kumar@linaro.org>,
linux-pm@vger.kernel.org
Cc: Sudeep Holla <sudeep.holla@arm.com>,
Kevin Hilman <khilman@kernel.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Bjorn Andersson <andersson@kernel.org>,
Nikunj Kela <nkela@quicinc.com>,
Prasad Sodagudi <psodagud@quicinc.com>,
Stephan Gerhold <stephan@gerhold.net>,
Ben Horgan <Ben.Horgan@arm.com>,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-remoteproc@vger.kernel.org, linux-media@vger.kernel.org,
Mathieu Poirier <mathieu.poirier@linaro.org>,
Shawn Guo <shawnguo@kernel.org>,
Sascha Hauer <s.hauer@pengutronix.de>,
Daniel Baluta <daniel.baluta@nxp.com>
Subject: Re: [PATCH v2 2/5] remoteproc: imx_dsp_rproc: Convert to dev_pm_domain_attach|detach_list()
Date: Mon, 22 Jan 2024 19:50:27 +0200 [thread overview]
Message-ID: <c5d2f80b-e987-49bf-90b5-ee92bffa2f40@nxp.com> (raw)
In-Reply-To: <20240105160103.183092-3-ulf.hansson@linaro.org>
On 1/5/2024 6:01 PM, Ulf Hansson wrote:
> Let's avoid the boilerplate code to manage the multiple PM domain case, by
> converting into using dev_pm_domain_attach|detach_list().
>
> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
> Cc: Bjorn Andersson <andersson@kernel.org>
> Cc: Shawn Guo <shawnguo@kernel.org>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
> Cc: Daniel Baluta <daniel.baluta@nxp.com>
> Cc: <linux-remoteproc@vger.kernel.org>
> Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> ---
>
> Changes in v2:
> - None.
>
> Iuliana/Daniel I am ccing you to request help with test/review of this change.
> Note that, you will need patch 1/5 in the series too, to be able to test this.
>
> Kind regards
> Ulf Hansson
Sorry for the delay in responding, your patchset was lost in the shuffle.
Tested-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Reviewed-by: Iuliana Prodan <iuliana.prodan@nxp.com>
Iulia
> ---
> drivers/remoteproc/imx_dsp_rproc.c | 82 ++++--------------------------
> 1 file changed, 9 insertions(+), 73 deletions(-)
>
> diff --git a/drivers/remoteproc/imx_dsp_rproc.c b/drivers/remoteproc/imx_dsp_rproc.c
> index 8fcda9b74545..0409b7c47d5c 100644
> --- a/drivers/remoteproc/imx_dsp_rproc.c
> +++ b/drivers/remoteproc/imx_dsp_rproc.c
> @@ -103,12 +103,10 @@ enum imx_dsp_rp_mbox_messages {
> * @tx_ch: mailbox tx channel handle
> * @rx_ch: mailbox rx channel handle
> * @rxdb_ch: mailbox rx doorbell channel handle
> - * @pd_dev: power domain device
> - * @pd_dev_link: power domain device link
> + * @pd_list: power domain list
> * @ipc_handle: System Control Unit ipc handle
> * @rproc_work: work for processing virtio interrupts
> * @pm_comp: completion primitive to sync for suspend response
> - * @num_domains: power domain number
> * @flags: control flags
> */
> struct imx_dsp_rproc {
> @@ -121,12 +119,10 @@ struct imx_dsp_rproc {
> struct mbox_chan *tx_ch;
> struct mbox_chan *rx_ch;
> struct mbox_chan *rxdb_ch;
> - struct device **pd_dev;
> - struct device_link **pd_dev_link;
> + struct dev_pm_domain_list *pd_list;
> struct imx_sc_ipc *ipc_handle;
> struct work_struct rproc_work;
> struct completion pm_comp;
> - int num_domains;
> u32 flags;
> };
>
> @@ -954,74 +950,14 @@ static const struct rproc_ops imx_dsp_rproc_ops = {
> static int imx_dsp_attach_pm_domains(struct imx_dsp_rproc *priv)
> {
> struct device *dev = priv->rproc->dev.parent;
> - int ret, i;
> -
> - priv->num_domains = of_count_phandle_with_args(dev->of_node,
> - "power-domains",
> - "#power-domain-cells");
> -
> - /* If only one domain, then no need to link the device */
> - if (priv->num_domains <= 1)
> - return 0;
> -
> - priv->pd_dev = devm_kmalloc_array(dev, priv->num_domains,
> - sizeof(*priv->pd_dev),
> - GFP_KERNEL);
> - if (!priv->pd_dev)
> - return -ENOMEM;
> -
> - priv->pd_dev_link = devm_kmalloc_array(dev, priv->num_domains,
> - sizeof(*priv->pd_dev_link),
> - GFP_KERNEL);
> - if (!priv->pd_dev_link)
> - return -ENOMEM;
> -
> - for (i = 0; i < priv->num_domains; i++) {
> - priv->pd_dev[i] = dev_pm_domain_attach_by_id(dev, i);
> - if (IS_ERR(priv->pd_dev[i])) {
> - ret = PTR_ERR(priv->pd_dev[i]);
> - goto detach_pm;
> - }
> -
> - /*
> - * device_link_add will check priv->pd_dev[i], if it is
> - * NULL, then will break.
> - */
> - priv->pd_dev_link[i] = device_link_add(dev,
> - priv->pd_dev[i],
> - DL_FLAG_STATELESS |
> - DL_FLAG_PM_RUNTIME);
> - if (!priv->pd_dev_link[i]) {
> - dev_pm_domain_detach(priv->pd_dev[i], false);
> - ret = -EINVAL;
> - goto detach_pm;
> - }
> - }
> -
> - return 0;
> -
> -detach_pm:
> - while (--i >= 0) {
> - device_link_del(priv->pd_dev_link[i]);
> - dev_pm_domain_detach(priv->pd_dev[i], false);
> - }
> -
> - return ret;
> -}
> -
> -static int imx_dsp_detach_pm_domains(struct imx_dsp_rproc *priv)
> -{
> - int i;
> + int ret;
>
> - if (priv->num_domains <= 1)
> + /* A single PM domain is already attached. */
> + if (dev->pm_domain)
> return 0;
>
> - for (i = 0; i < priv->num_domains; i++) {
> - device_link_del(priv->pd_dev_link[i]);
> - dev_pm_domain_detach(priv->pd_dev[i], false);
> - }
> -
> - return 0;
> + ret = dev_pm_domain_attach_list(dev, NULL, &priv->pd_list);
> + return ret < 0 ? ret : 0;
> }
>
> /**
> @@ -1153,7 +1089,7 @@ static int imx_dsp_rproc_probe(struct platform_device *pdev)
> return 0;
>
> err_detach_domains:
> - imx_dsp_detach_pm_domains(priv);
> + dev_pm_domain_detach_list(priv->pd_list);
> err_put_rproc:
> rproc_free(rproc);
>
> @@ -1167,7 +1103,7 @@ static void imx_dsp_rproc_remove(struct platform_device *pdev)
>
> pm_runtime_disable(&pdev->dev);
> rproc_del(rproc);
> - imx_dsp_detach_pm_domains(priv);
> + dev_pm_domain_detach_list(priv->pd_list);
> rproc_free(rproc);
> }
>
next prev parent reply other threads:[~2024-01-22 17:50 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-05 16:00 [PATCH v2 0/5] PM: domains: Add helpers for multi PM domains to avoid open-coding Ulf Hansson
2024-01-05 16:00 ` [PATCH v2 1/5] PM: domains: Add helper functions to attach/detach multiple PM domains Ulf Hansson
2024-01-05 16:01 ` [PATCH v2 2/5] remoteproc: imx_dsp_rproc: Convert to dev_pm_domain_attach|detach_list() Ulf Hansson
2024-01-22 17:50 ` Iuliana Prodan [this message]
2024-01-05 16:01 ` [PATCH v2 3/5] remoteproc: imx_rproc: " Ulf Hansson
2024-01-22 17:50 ` Iuliana Prodan
2024-01-22 20:02 ` Mathieu Poirier
2024-01-23 1:27 ` Mathieu Poirier
2024-01-23 12:37 ` Ulf Hansson
2024-01-05 16:01 ` [PATCH v2 4/5] remoteproc: qcom_q6v5_adsp: " Ulf Hansson
2024-01-05 16:01 ` [PATCH v2 5/5] media: venus: Convert to dev_pm_domain_attach|detach_list() for vcodec Ulf Hansson
2024-01-08 8:43 ` [PATCH v2 0/5] PM: domains: Add helpers for multi PM domains to avoid open-coding Daniel Baluta
2024-01-12 11:10 ` Ulf Hansson
2024-01-26 16:12 ` Ulf Hansson
2024-01-26 19:07 ` Greg Kroah-Hartman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c5d2f80b-e987-49bf-90b5-ee92bffa2f40@nxp.com \
--to=iuliana.prodan@nxp.com \
--cc=Ben.Horgan@arm.com \
--cc=andersson@kernel.org \
--cc=daniel.baluta@nxp.com \
--cc=gregkh@linuxfoundation.org \
--cc=khilman@kernel.org \
--cc=konrad.dybcio@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-remoteproc@vger.kernel.org \
--cc=mathieu.poirier@linaro.org \
--cc=nkela@quicinc.com \
--cc=psodagud@quicinc.com \
--cc=rafael@kernel.org \
--cc=s.hauer@pengutronix.de \
--cc=shawnguo@kernel.org \
--cc=stephan@gerhold.net \
--cc=sudeep.holla@arm.com \
--cc=ulf.hansson@linaro.org \
--cc=viresh.kumar@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox