Move towards VLV/CHV clock interfaces that handle sideband get/put
inside them instead of at the caller.

We'll need to move the calls outside of existing get/put.

Suggested-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
Signed-off-by: Jani Nikula <jani.nik...@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cdclk.c   | 3 ++-
 drivers/gpu/drm/i915/display/intel_display.c | 8 ++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c 
b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 9725eebe5706..c54c7fd93f97 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -608,9 +608,10 @@ static void vlv_get_cdclk(struct intel_display *display,
 {
        u32 val;
 
+       cdclk_config->vco = vlv_get_hpll_vco(display->drm);
+
        vlv_iosf_sb_get(display->drm, BIT(VLV_IOSF_SB_CCK) | 
BIT(VLV_IOSF_SB_PUNIT));
 
-       cdclk_config->vco = vlv_get_hpll_vco(display->drm);
        cdclk_config->cdclk = vlv_get_cck_clock(display->drm, "cdclk",
                                                CCK_DISPLAY_CLOCK_CONTROL,
                                                cdclk_config->vco);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 5dca7f96b425..f5208583235d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -146,10 +146,14 @@ int vlv_get_hpll_vco(struct drm_device *drm)
 {
        int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 };
 
+       vlv_cck_get(drm);
+
        /* Obtain SKU information */
        hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) &
                CCK_FUSE_HPLL_FREQ_MASK;
 
+       vlv_cck_put(drm);
+
        return vco_freq[hpll_freq] * 1000;
 }
 
@@ -175,11 +179,11 @@ int vlv_get_cck_clock_hpll(struct drm_device *drm,
        struct drm_i915_private *dev_priv = to_i915(drm);
        int hpll;
 
-       vlv_cck_get(drm);
-
        if (dev_priv->hpll_freq == 0)
                dev_priv->hpll_freq = vlv_get_hpll_vco(drm);
 
+       vlv_cck_get(drm);
+
        hpll = vlv_get_cck_clock(drm, name, reg, dev_priv->hpll_freq);
 
        vlv_cck_put(drm);
-- 
2.47.3

Reply via email to