linux-samsung-soc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 27/31] PM / devfreq: rk3399_dmc: convert to use devm_pm_opp_* API
@ 2021-01-03  3:55 Yangtao Li
  2021-01-05  4:00 ` Chanwoo Choi
  0 siblings, 1 reply; 2+ messages in thread
From: Yangtao Li @ 2021-01-03  3:55 UTC (permalink / raw)
  To: myungjoo.ham, kyungmin.park, cw00.choi, krzk, shawnguo, s.hauer,
	kernel, festevam, linux-imx, digetx, thierry.reding, jonathanh,
	yuq825, airlied, daniel, robdclark, sean, robh, tomeu.vizoso,
	steven.price, alyssa.rosenzweig, stanimir.varbanov, agross,
	bjorn.andersson, mchehab, lukasz.luba, adrian.hunter,
	ulf.hansson, vireshk, nm, sboyd, broonie, gregkh, jirislaby, rjw,
	jcrouse, hoegsberg, eric, tzimmermann, marijn.suijten,
	gustavoars, emil.velikov, jonathan, akhilpo, smasetty, airlied,
	masneyb, kalyan_t, tanmay, tiny.windzz, ddavenport, jsanka,
	rnayak, tongtiangen, miaoqinglang, khsieh, abhinavk, chandanu,
	groeck, varar, mka, harigovi, rikard.falkeborn, natechancellor,
	georgi.djakov, akashast, parashar, dianders
  Cc: linux-pm, linux-kernel, linux-samsung-soc, linux-arm-kernel,
	linux-tegra, dri-devel, lima, linux-arm-msm, freedreno,
	linux-media, linux-mmc, linux-spi, linux-serial

Use devm_pm_opp_* API to simplify code. Since devres release
can guarantee the order, let's remove
devm_devfreq_unregister_opp_notifier().

Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
---
 drivers/devfreq/rk3399_dmc.c | 22 +++-------------------
 1 file changed, 3 insertions(+), 19 deletions(-)

diff --git a/drivers/devfreq/rk3399_dmc.c b/drivers/devfreq/rk3399_dmc.c
index 2e912166a993..9b8ab8be29d1 100644
--- a/drivers/devfreq/rk3399_dmc.c
+++ b/drivers/devfreq/rk3399_dmc.c
@@ -432,7 +432,7 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
 	 * We add a devfreq driver to our parent since it has a device tree node
 	 * with operating points.
 	 */
-	if (dev_pm_opp_of_add_table(dev)) {
+	if (devm_pm_opp_of_add_table(dev)) {
 		dev_err(dev, "Invalid operating-points in device tree.\n");
 		ret = -EINVAL;
 		goto err_edev;
@@ -448,7 +448,7 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
 	opp = devfreq_recommended_opp(dev, &data->rate, 0);
 	if (IS_ERR(opp)) {
 		ret = PTR_ERR(opp);
-		goto err_free_opp;
+		goto err_edev;
 	}
 
 	data->rate = dev_pm_opp_get_freq(opp);
@@ -463,7 +463,7 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
 					   &data->ondemand_data);
 	if (IS_ERR(data->devfreq)) {
 		ret = PTR_ERR(data->devfreq);
-		goto err_free_opp;
+		goto err_edev;
 	}
 
 	devm_devfreq_register_opp_notifier(dev, data->devfreq);
@@ -473,27 +473,12 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
 
 	return 0;
 
-err_free_opp:
-	dev_pm_opp_of_remove_table(&pdev->dev);
 err_edev:
 	devfreq_event_disable_edev(data->edev);
 
 	return ret;
 }
 
-static int rk3399_dmcfreq_remove(struct platform_device *pdev)
-{
-	struct rk3399_dmcfreq *dmcfreq = dev_get_drvdata(&pdev->dev);
-
-	/*
-	 * Before remove the opp table we need to unregister the opp notifier.
-	 */
-	devm_devfreq_unregister_opp_notifier(dmcfreq->dev, dmcfreq->devfreq);
-	dev_pm_opp_of_remove_table(dmcfreq->dev);
-
-	return 0;
-}
-
 static const struct of_device_id rk3399dmc_devfreq_of_match[] = {
 	{ .compatible = "rockchip,rk3399-dmc" },
 	{ },
@@ -502,7 +487,6 @@ MODULE_DEVICE_TABLE(of, rk3399dmc_devfreq_of_match);
 
 static struct platform_driver rk3399_dmcfreq_driver = {
 	.probe	= rk3399_dmcfreq_probe,
-	.remove = rk3399_dmcfreq_remove,
 	.driver = {
 		.name	= "rk3399-dmc-freq",
 		.pm	= &rk3399_dmcfreq_pm,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 27/31] PM / devfreq: rk3399_dmc: convert to use devm_pm_opp_* API
  2021-01-03  3:55 [PATCH 27/31] PM / devfreq: rk3399_dmc: convert to use devm_pm_opp_* API Yangtao Li
@ 2021-01-05  4:00 ` Chanwoo Choi
  0 siblings, 0 replies; 2+ messages in thread
From: Chanwoo Choi @ 2021-01-05  4:00 UTC (permalink / raw)
  To: Yangtao Li
  Cc: MyungJoo Ham, Kyungmin Park, Chanwoo Choi, Krzysztof Kozlowski,
	Shawn Guo, s.hauer, kernel, festevam, dl-linux-imx,
	Dmitry Osipenko, Thierry Reding, Jonathan Hunter, yuq825,
	David Airlie, daniel, robdclark, sean, Rob Herring, tomeu.vizoso,
	steven.price, alyssa.rosenzweig, stanimir.varbanov, agross,
	Bjorn Andersson, mchehab, Lukasz Luba, adrian.hunter,
	Ulf Hansson, Viresh Kumar, Nishanth Menon, Stephen Boyd,
	Mark Brown, Greg KH, jirislaby, Rafael J. Wysocki, jcrouse,
	hoegsberg, eric, tzimmermann, marijn.suijten, gustavoars,
	emil.velikov, jonathan, akhilpo, smasetty, airlied, masneyb,
	kalyan_t, tanmay, ddavenport, jsanka, rnayak, tongtiangen,
	miaoqinglang, khsieh, abhinavk, chandanu, Guenter Roeck, varar,
	Matthias Kaehlcke, harigovi, rikard.falkeborn, natechancellor,
	Georgi Djakov, akashast, parashar, Doug Anderson, Linux PM list,
	linux-kernel, linux-samsung-soc, linux-arm-kernel, linux-tegra,
	dri-devel, lima, linux-arm-msm, freedreno, linux-media,
	linux-mmc, linux-spi, linux-serial

Hi,

Do you make this patch on latest source?
When I apply this patch for test, it make the merge conflict error.

On Sun, Jan 3, 2021 at 12:57 PM Yangtao Li <tiny.windzz@gmail.com> wrote:
>
> Use devm_pm_opp_* API to simplify code. Since devres release
> can guarantee the order, let's remove
> devm_devfreq_unregister_opp_notifier().
>
> Signed-off-by: Yangtao Li <tiny.windzz@gmail.com>
> ---
>  drivers/devfreq/rk3399_dmc.c | 22 +++-------------------
>  1 file changed, 3 insertions(+), 19 deletions(-)
>
> diff --git a/drivers/devfreq/rk3399_dmc.c b/drivers/devfreq/rk3399_dmc.c
> index 2e912166a993..9b8ab8be29d1 100644
> --- a/drivers/devfreq/rk3399_dmc.c
> +++ b/drivers/devfreq/rk3399_dmc.c
> @@ -432,7 +432,7 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
>          * We add a devfreq driver to our parent since it has a device tree node
>          * with operating points.
>          */
> -       if (dev_pm_opp_of_add_table(dev)) {
> +       if (devm_pm_opp_of_add_table(dev)) {
>                 dev_err(dev, "Invalid operating-points in device tree.\n");
>                 ret = -EINVAL;
>                 goto err_edev;
> @@ -448,7 +448,7 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
>         opp = devfreq_recommended_opp(dev, &data->rate, 0);
>         if (IS_ERR(opp)) {
>                 ret = PTR_ERR(opp);
> -               goto err_free_opp;
> +               goto err_edev;
>         }
>
>         data->rate = dev_pm_opp_get_freq(opp);
> @@ -463,7 +463,7 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
>                                            &data->ondemand_data);
>         if (IS_ERR(data->devfreq)) {
>                 ret = PTR_ERR(data->devfreq);
> -               goto err_free_opp;
> +               goto err_edev;
>         }
>
>         devm_devfreq_register_opp_notifier(dev, data->devfreq);
> @@ -473,27 +473,12 @@ static int rk3399_dmcfreq_probe(struct platform_device *pdev)
>
>         return 0;
>
> -err_free_opp:
> -       dev_pm_opp_of_remove_table(&pdev->dev);
>  err_edev:
>         devfreq_event_disable_edev(data->edev);
>
>         return ret;
>  }
>
> -static int rk3399_dmcfreq_remove(struct platform_device *pdev)
> -{
> -       struct rk3399_dmcfreq *dmcfreq = dev_get_drvdata(&pdev->dev);
> -
> -       /*
> -        * Before remove the opp table we need to unregister the opp notifier.
> -        */
> -       devm_devfreq_unregister_opp_notifier(dmcfreq->dev, dmcfreq->devfreq);
> -       dev_pm_opp_of_remove_table(dmcfreq->dev);

As the comment, we need to unregister the opp notifier before removing the OPP.
Do you guarantee this sequence on your patch?


> -
> -       return 0;
> -}
> -
>  static const struct of_device_id rk3399dmc_devfreq_of_match[] = {
>         { .compatible = "rockchip,rk3399-dmc" },
>         { },
> @@ -502,7 +487,6 @@ MODULE_DEVICE_TABLE(of, rk3399dmc_devfreq_of_match);
>
>  static struct platform_driver rk3399_dmcfreq_driver = {
>         .probe  = rk3399_dmcfreq_probe,
> -       .remove = rk3399_dmcfreq_remove,
>         .driver = {
>                 .name   = "rk3399-dmc-freq",
>                 .pm     = &rk3399_dmcfreq_pm,
> --
> 2.25.1
>


-- 
Best Regards,
Chanwoo Choi

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-01-05  4:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-03  3:55 [PATCH 27/31] PM / devfreq: rk3399_dmc: convert to use devm_pm_opp_* API Yangtao Li
2021-01-05  4:00 ` Chanwoo Choi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).