diff options
Diffstat (limited to 'drivers/gpu/drm/tilcdc/tilcdc_drv.c')
| -rw-r--r-- | drivers/gpu/drm/tilcdc/tilcdc_drv.c | 37 | 
1 files changed, 19 insertions, 18 deletions
| diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c index 3dac08b24140..3030af9e7b35 100644 --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c @@ -24,6 +24,7 @@  #include <drm/drm_atomic_helper.h>  #include <drm/drm_fb_helper.h>  #include <drm/drm_gem_framebuffer_helper.h> +#include <drm/drm_probe_helper.h>  #include "tilcdc_drv.h"  #include "tilcdc_regs.h" @@ -183,6 +184,12 @@ static void tilcdc_fini(struct drm_device *dev)  {  	struct tilcdc_drm_private *priv = dev->dev_private; +#ifdef CONFIG_CPU_FREQ +	if (priv->freq_transition.notifier_call) +		cpufreq_unregister_notifier(&priv->freq_transition, +					    CPUFREQ_TRANSITION_NOTIFIER); +#endif +  	if (priv->crtc)  		tilcdc_crtc_shutdown(priv->crtc); @@ -194,12 +201,6 @@ static void tilcdc_fini(struct drm_device *dev)  	drm_mode_config_cleanup(dev);  	tilcdc_remove_external_device(dev); -#ifdef CONFIG_CPU_FREQ -	if (priv->freq_transition.notifier_call) -		cpufreq_unregister_notifier(&priv->freq_transition, -					    CPUFREQ_TRANSITION_NOTIFIER); -#endif -  	if (priv->clk)  		clk_put(priv->clk); @@ -270,17 +271,6 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)  		goto init_failed;  	} -#ifdef CONFIG_CPU_FREQ -	priv->freq_transition.notifier_call = cpufreq_transition; -	ret = cpufreq_register_notifier(&priv->freq_transition, -			CPUFREQ_TRANSITION_NOTIFIER); -	if (ret) { -		dev_err(dev, "failed to register cpufreq notifier\n"); -		priv->freq_transition.notifier_call = NULL; -		goto init_failed; -	} -#endif -  	if (of_property_read_u32(node, "max-bandwidth", &priv->max_bandwidth))  		priv->max_bandwidth = TILCDC_DEFAULT_MAX_BANDWIDTH; @@ -357,6 +347,17 @@ static int tilcdc_init(struct drm_driver *ddrv, struct device *dev)  	}  	modeset_init(ddev); +#ifdef CONFIG_CPU_FREQ +	priv->freq_transition.notifier_call = cpufreq_transition; +	ret = cpufreq_register_notifier(&priv->freq_transition, +			CPUFREQ_TRANSITION_NOTIFIER); +	if (ret) { +		dev_err(dev, "failed to register cpufreq notifier\n"); +		priv->freq_transition.notifier_call = NULL; +		goto init_failed; +	} +#endif +  	if (priv->is_componentized) {  		ret = component_bind_all(dev, ddev);  		if (ret < 0) @@ -511,7 +512,7 @@ static int tilcdc_debugfs_init(struct drm_minor *minor)  DEFINE_DRM_GEM_CMA_FOPS(fops);  static struct drm_driver tilcdc_driver = { -	.driver_features    = (DRIVER_HAVE_IRQ | DRIVER_GEM | DRIVER_MODESET | +	.driver_features    = (DRIVER_GEM | DRIVER_MODESET |  			       DRIVER_PRIME | DRIVER_ATOMIC),  	.irq_handler        = tilcdc_irq,  	.gem_free_object_unlocked = drm_gem_cma_free_object, | 
