[PATCH] Revert "firmware: arm_scmi: Add clock management to the SCMI power domain"

Peng Fan peng.fan at nxp.com
Mon Sep 19 18:10:34 PDT 2022


> Subject: [PATCH] Revert "firmware: arm_scmi: Add clock management to
> the SCMI power domain"
> 
> This reverts commit a3b884cef873 ("firmware: arm_scmi: Add clock
> management to the SCMI power domain").
> 
> Using the GENPD_FLAG_PM_CLK tells genpd to gate/ungate the consumer
> device's clock(s) during runtime suspend/resume through the PM clock API.
> More precisely, in genpd_runtime_resume() the clock(s) for the consumer
> device would become ungated prior to the driver-level ->runtime_resume()
> callbacks gets invoked.
> 
> This behaviour isn't a good fit for all platforms/drivers. For example, a
> driver may need to make some preparations of its device in its
> ->runtime_resume() callback, like calling clk_set_rate() before the
> clock(s) should be ungated. In these cases, it's easier to let the clock(s) to be
> managed solely by the driver, rather than at the PM domain level.
> 
> For these reasons, let's drop the use GENPD_FLAG_PM_CLK for the SCMI PM
> domain, as to enable it to be more easily adopted across ARM platforms.
> 
> Fixes: a3b884cef873 ("firmware: arm_scmi: Add clock management to the
> SCMI power domain")
> Cc: Nicolas Pitre <npitre at baylibre.com>
> Cc: stable at vger.kernel.org
> Signed-off-by: Ulf Hansson <ulf.hansson at linaro.org>

Tested-by: Peng Fan <peng.fan at nxp.com>

Thanks,
Peng.

> ---
> 
> To get some more background to $subject patch, please have a look at the
> lore-link below.
> 
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.
> kernel.org%2Fall%2FDU0PR04MB94173B45A2CFEE3BF1BD313A88409%40D
> U0PR04MB9417.eurprd04.prod.outlook.com%2F&data=05%7C01%7Cp
> eng.fan%40nxp.com%7C05437bc19cb14760450a08da9a3968c0%7C686ea1d
> 3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637991868616277658%7CUnkn
> own%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik
> 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=QpQfK8lTApY
> qhYj80lUudQJMCujYyN9j1RNB4Q00wrM%3D&reserved=0
> 
> Kind regards
> Ulf Hansson
> 
> ---
>  drivers/firmware/arm_scmi/scmi_pm_domain.c | 26 ----------------------
>  1 file changed, 26 deletions(-)
> 
> diff --git a/drivers/firmware/arm_scmi/scmi_pm_domain.c
> b/drivers/firmware/arm_scmi/scmi_pm_domain.c
> index 581d34c95769..d5dee625de78 100644
> --- a/drivers/firmware/arm_scmi/scmi_pm_domain.c
> +++ b/drivers/firmware/arm_scmi/scmi_pm_domain.c
> @@ -8,7 +8,6 @@
>  #include <linux/err.h>
>  #include <linux/io.h>
>  #include <linux/module.h>
> -#include <linux/pm_clock.h>
>  #include <linux/pm_domain.h>
>  #include <linux/scmi_protocol.h>
> 
> @@ -53,27 +52,6 @@ static int scmi_pd_power_off(struct
> generic_pm_domain *domain)
>  	return scmi_pd_power(domain, false);
>  }
> 
> -static int scmi_pd_attach_dev(struct generic_pm_domain *pd, struct device
> *dev) -{
> -	int ret;
> -
> -	ret = pm_clk_create(dev);
> -	if (ret)
> -		return ret;
> -
> -	ret = of_pm_clk_add_clks(dev);
> -	if (ret >= 0)
> -		return 0;
> -
> -	pm_clk_destroy(dev);
> -	return ret;
> -}
> -
> -static void scmi_pd_detach_dev(struct generic_pm_domain *pd, struct
> device *dev) -{
> -	pm_clk_destroy(dev);
> -}
> -
>  static int scmi_pm_domain_probe(struct scmi_device *sdev)  {
>  	int num_domains, i;
> @@ -124,10 +102,6 @@ static int scmi_pm_domain_probe(struct
> scmi_device *sdev)
>  		scmi_pd->genpd.name = scmi_pd->name;
>  		scmi_pd->genpd.power_off = scmi_pd_power_off;
>  		scmi_pd->genpd.power_on = scmi_pd_power_on;
> -		scmi_pd->genpd.attach_dev = scmi_pd_attach_dev;
> -		scmi_pd->genpd.detach_dev = scmi_pd_detach_dev;
> -		scmi_pd->genpd.flags = GENPD_FLAG_PM_CLK |
> -				       GENPD_FLAG_ACTIVE_WAKEUP;
> 
>  		pm_genpd_init(&scmi_pd->genpd, NULL,
>  			      state == SCMI_POWER_STATE_GENERIC_OFF);
> --
> 2.34.1




More information about the linux-arm-kernel mailing list