From 9f9065226112e7c0d60dd31a40984fd1db1d4805 Mon Sep 17 00:00:00 2001 From: Imre Deak Date: Tue, 28 Oct 2014 22:54:47 +0200 Subject: [PATCH 2/3] drm/i915: runtime pm around cdclk get/set Signed-off-by: Imre Deak --- drivers/gpu/drm/i915/intel_display.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c index 92f0005..963c902 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c @@ -4801,9 +4801,13 @@ static void valleyview_modeset_global_pipes(struct drm_device *dev, struct drm_i915_private *dev_priv = dev->dev_private; struct intel_crtc *intel_crtc; int max_pixclk = intel_mode_max_pixclk(dev_priv); + int cdclk; - if (valleyview_calc_cdclk(dev_priv, max_pixclk) == - dev_priv->vlv_cdclk_freq) + intel_runtime_pm_get(dev_priv); + cdclk = valleyview_calc_cdclk(dev_priv, max_pixclk); + intel_runtime_pm_put(dev_priv); + + if (cdclk == dev_priv->vlv_cdclk_freq) return; /* disable/enable all currently active pipes while we change cdclk */ @@ -4816,8 +4820,11 @@ static void valleyview_modeset_global_resources(struct drm_device *dev) { struct drm_i915_private *dev_priv = dev->dev_private; int max_pixclk = intel_mode_max_pixclk(dev_priv); - int req_cdclk = valleyview_calc_cdclk(dev_priv, max_pixclk); + int req_cdclk; + intel_runtime_pm_get(dev_priv); + + req_cdclk = valleyview_calc_cdclk(dev_priv, max_pixclk); if (req_cdclk != dev_priv->vlv_cdclk_freq) { if (IS_CHERRYVIEW(dev)) cherryview_set_cdclk(dev, req_cdclk); @@ -4826,6 +4833,8 @@ static void valleyview_modeset_global_resources(struct drm_device *dev) } modeset_update_crtc_power_domains(dev); + + intel_runtime_pm_put(dev_priv); } static void valleyview_crtc_enable(struct drm_crtc *crtc) -- 1.8.4