Message ID | 20210308091646.28096-3-daniel.lezcano@linaro.org |
---|---|
State | New |
Headers | show |
Series | [v5,1/4] PM / devfreq: Register devfreq as a cooling device on demand | expand |
On 08/03/2021 09:16, Daniel Lezcano wrote: > The devfreq core code is able to register the devfreq device as a > cooling device if the 'is_cooling_device' flag is set in the profile. > > Use this flag and remove the cooling device registering code. > > Tested on rock960. > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Reviewed-by: Steven Price <steven.price@arm.com> > --- > drivers/gpu/drm/panfrost/panfrost_devfreq.c | 14 +------------- > drivers/gpu/drm/panfrost/panfrost_devfreq.h | 3 --- > 2 files changed, 1 insertion(+), 16 deletions(-) > > diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c > index 56b3f5935703..4d96edf1bc54 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c > +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c > @@ -3,7 +3,6 @@ > > #include <linux/clk.h> > #include <linux/devfreq.h> > -#include <linux/devfreq_cooling.h> > #include <linux/platform_device.h> > #include <linux/pm_opp.h> > > @@ -80,6 +79,7 @@ static struct devfreq_dev_profile panfrost_devfreq_profile = { > .polling_ms = 50, /* ~3 frames */ > .target = panfrost_devfreq_target, > .get_dev_status = panfrost_devfreq_get_dev_status, > + .is_cooling_device = true, > }; > > int panfrost_devfreq_init(struct panfrost_device *pfdev) > @@ -90,7 +90,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > struct device *dev = &pfdev->pdev->dev; > struct devfreq *devfreq; > struct opp_table *opp_table; > - struct thermal_cooling_device *cooling; > struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; > > opp_table = dev_pm_opp_set_regulators(dev, pfdev->comp->supply_names, > @@ -139,12 +138,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) > } > pfdevfreq->devfreq = devfreq; > > - cooling = devfreq_cooling_em_register(devfreq, NULL); > - if (IS_ERR(cooling)) > - DRM_DEV_INFO(dev, "Failed to register cooling device\n"); > - else > - pfdevfreq->cooling = cooling; > - > return 0; > > err_fini: > @@ -156,11 +149,6 @@ void panfrost_devfreq_fini(struct panfrost_device *pfdev) > { > struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; > > - if (pfdevfreq->cooling) { > - devfreq_cooling_unregister(pfdevfreq->cooling); > - pfdevfreq->cooling = NULL; > - } > - > if (pfdevfreq->opp_of_table_added) { > dev_pm_opp_of_remove_table(&pfdev->pdev->dev); > pfdevfreq->opp_of_table_added = false; > diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.h b/drivers/gpu/drm/panfrost/panfrost_devfreq.h > index db6ea48e21f9..470f5c974703 100644 > --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.h > +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.h > @@ -9,14 +9,11 @@ > > struct devfreq; > struct opp_table; > -struct thermal_cooling_device; > - > struct panfrost_device; > > struct panfrost_devfreq { > struct devfreq *devfreq; > struct opp_table *regulators_opp_table; > - struct thermal_cooling_device *cooling; > bool opp_of_table_added; > > ktime_t busy_time; >
diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.c b/drivers/gpu/drm/panfrost/panfrost_devfreq.c index 56b3f5935703..4d96edf1bc54 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.c +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.c @@ -3,7 +3,6 @@ #include <linux/clk.h> #include <linux/devfreq.h> -#include <linux/devfreq_cooling.h> #include <linux/platform_device.h> #include <linux/pm_opp.h> @@ -80,6 +79,7 @@ static struct devfreq_dev_profile panfrost_devfreq_profile = { .polling_ms = 50, /* ~3 frames */ .target = panfrost_devfreq_target, .get_dev_status = panfrost_devfreq_get_dev_status, + .is_cooling_device = true, }; int panfrost_devfreq_init(struct panfrost_device *pfdev) @@ -90,7 +90,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) struct device *dev = &pfdev->pdev->dev; struct devfreq *devfreq; struct opp_table *opp_table; - struct thermal_cooling_device *cooling; struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; opp_table = dev_pm_opp_set_regulators(dev, pfdev->comp->supply_names, @@ -139,12 +138,6 @@ int panfrost_devfreq_init(struct panfrost_device *pfdev) } pfdevfreq->devfreq = devfreq; - cooling = devfreq_cooling_em_register(devfreq, NULL); - if (IS_ERR(cooling)) - DRM_DEV_INFO(dev, "Failed to register cooling device\n"); - else - pfdevfreq->cooling = cooling; - return 0; err_fini: @@ -156,11 +149,6 @@ void panfrost_devfreq_fini(struct panfrost_device *pfdev) { struct panfrost_devfreq *pfdevfreq = &pfdev->pfdevfreq; - if (pfdevfreq->cooling) { - devfreq_cooling_unregister(pfdevfreq->cooling); - pfdevfreq->cooling = NULL; - } - if (pfdevfreq->opp_of_table_added) { dev_pm_opp_of_remove_table(&pfdev->pdev->dev); pfdevfreq->opp_of_table_added = false; diff --git a/drivers/gpu/drm/panfrost/panfrost_devfreq.h b/drivers/gpu/drm/panfrost/panfrost_devfreq.h index db6ea48e21f9..470f5c974703 100644 --- a/drivers/gpu/drm/panfrost/panfrost_devfreq.h +++ b/drivers/gpu/drm/panfrost/panfrost_devfreq.h @@ -9,14 +9,11 @@ struct devfreq; struct opp_table; -struct thermal_cooling_device; - struct panfrost_device; struct panfrost_devfreq { struct devfreq *devfreq; struct opp_table *regulators_opp_table; - struct thermal_cooling_device *cooling; bool opp_of_table_added; ktime_t busy_time;
The devfreq core code is able to register the devfreq device as a cooling device if the 'is_cooling_device' flag is set in the profile. Use this flag and remove the cooling device registering code. Tested on rock960. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- drivers/gpu/drm/panfrost/panfrost_devfreq.c | 14 +------------- drivers/gpu/drm/panfrost/panfrost_devfreq.h | 3 --- 2 files changed, 1 insertion(+), 16 deletions(-)