diff options
Diffstat (limited to 'drivers/gpu/drm/lima')
| -rw-r--r-- | drivers/gpu/drm/lima/lima_devfreq.c | 47 | ||||
| -rw-r--r-- | drivers/gpu/drm/lima/lima_devfreq.h | 3 | 
2 files changed, 11 insertions, 39 deletions
| diff --git a/drivers/gpu/drm/lima/lima_devfreq.c b/drivers/gpu/drm/lima/lima_devfreq.c index 5686ad4aaf7c..dbc1d1eb9543 100644 --- a/drivers/gpu/drm/lima/lima_devfreq.c +++ b/drivers/gpu/drm/lima/lima_devfreq.c @@ -99,20 +99,12 @@ void lima_devfreq_fini(struct lima_device *ldev)  		devm_devfreq_remove_device(ldev->dev, devfreq->devfreq);  		devfreq->devfreq = NULL;  	} - -	dev_pm_opp_of_remove_table(ldev->dev); - -	dev_pm_opp_put_regulators(devfreq->regulators_opp_table); -	dev_pm_opp_put_clkname(devfreq->clkname_opp_table); -	devfreq->regulators_opp_table = NULL; -	devfreq->clkname_opp_table = NULL;  }  int lima_devfreq_init(struct lima_device *ldev)  {  	struct thermal_cooling_device *cooling;  	struct device *dev = ldev->dev; -	struct opp_table *opp_table;  	struct devfreq *devfreq;  	struct lima_devfreq *ldevfreq = &ldev->devfreq;  	struct dev_pm_opp *opp; @@ -125,40 +117,28 @@ int lima_devfreq_init(struct lima_device *ldev)  	spin_lock_init(&ldevfreq->lock); -	opp_table = dev_pm_opp_set_clkname(dev, "core"); -	if (IS_ERR(opp_table)) { -		ret = PTR_ERR(opp_table); -		goto err_fini; -	} - -	ldevfreq->clkname_opp_table = opp_table; - -	opp_table = dev_pm_opp_set_regulators(dev, -					      (const char *[]){ "mali" }, -					      1); -	if (IS_ERR(opp_table)) { -		ret = PTR_ERR(opp_table); +	ret = devm_pm_opp_set_clkname(dev, "core"); +	if (ret) +		return ret; +	ret = devm_pm_opp_set_regulators(dev, (const char *[]){ "mali" }, 1); +	if (ret) {  		/* Continue if the optional regulator is missing */  		if (ret != -ENODEV) -			goto err_fini; -	} else { -		ldevfreq->regulators_opp_table = opp_table; +			return ret;  	} -	ret = dev_pm_opp_of_add_table(dev); +	ret = devm_pm_opp_of_add_table(dev);  	if (ret) -		goto err_fini; +		return ret;  	lima_devfreq_reset(ldevfreq);  	cur_freq = clk_get_rate(ldev->clk_gpu);  	opp = devfreq_recommended_opp(dev, &cur_freq, 0); -	if (IS_ERR(opp)) { -		ret = PTR_ERR(opp); -		goto err_fini; -	} +	if (IS_ERR(opp)) +		return PTR_ERR(opp);  	lima_devfreq_profile.initial_freq = cur_freq;  	dev_pm_opp_put(opp); @@ -167,8 +147,7 @@ int lima_devfreq_init(struct lima_device *ldev)  					  DEVFREQ_GOV_SIMPLE_ONDEMAND, NULL);  	if (IS_ERR(devfreq)) {  		dev_err(dev, "Couldn't initialize GPU devfreq\n"); -		ret = PTR_ERR(devfreq); -		goto err_fini; +		return PTR_ERR(devfreq);  	}  	ldevfreq->devfreq = devfreq; @@ -180,10 +159,6 @@ int lima_devfreq_init(struct lima_device *ldev)  		ldevfreq->cooling = cooling;  	return 0; - -err_fini: -	lima_devfreq_fini(ldev); -	return ret;  }  void lima_devfreq_record_busy(struct lima_devfreq *devfreq) diff --git a/drivers/gpu/drm/lima/lima_devfreq.h b/drivers/gpu/drm/lima/lima_devfreq.h index 2d9b3008ce77..688ee71e263a 100644 --- a/drivers/gpu/drm/lima/lima_devfreq.h +++ b/drivers/gpu/drm/lima/lima_devfreq.h @@ -8,15 +8,12 @@  #include <linux/ktime.h>  struct devfreq; -struct opp_table;  struct thermal_cooling_device;  struct lima_device;  struct lima_devfreq {  	struct devfreq *devfreq; -	struct opp_table *clkname_opp_table; -	struct opp_table *regulators_opp_table;  	struct thermal_cooling_device *cooling;  	ktime_t busy_time; | 
