PM / devfreq: rk3399_dmc: convert to use devm_pm_opp_* API
Subsystems (8)
PATCH 27/31 PM / devfreq: rk3399_dmc: convert to use devm_pm_opp_* API
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 <[email protected]>
--- drivers/devfreq/rk3399_dmc.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-)
drivers/devfreq/rk3399_dmc.c +3 -19
@@ -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,
Signature · 1 line
2.25.1
Hi,
Do you make this patch on latest source?
When I apply this patch for test, it make the merge conflict error.
Quoted 52 lines · Yangtao Li
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 <[email protected]>--- drivers/devfreq/rk3399_dmc.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-)drivers/devfreq/rk3399_dmc.c +3
-5@@ -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; }
drivers/devfreq/rk3399_dmc.c static int rk3399_dmcfreq_probe(struct platform_device *pdev) · line 492
Quoted 10 lines
drivers/devfreq/rk3399_dmc.c +0
-9-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?
Quoted 18 lines
drivers/devfreq/rk3399_dmc.c +0
-6- -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
Signature · 6 lines
Best Regards, Chanwoo Choi _______________________________________________ dri-devel mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/dri-devel