]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/i915: do cck get/put inside vlv_get_hpll_vco()
authorJani Nikula <jani.nikula@intel.com>
Fri, 12 Sep 2025 14:48:40 +0000 (17:48 +0300)
committerJani Nikula <jani.nikula@intel.com>
Wed, 17 Sep 2025 08:27:37 +0000 (11:27 +0300)
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.syrjala@linux.intel.com>
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/1a6553f54619275aa05512421e19115a71cd3eb0.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_cdclk.c
drivers/gpu/drm/i915/display/intel_display.c

index 9725eebe5706a8a737d3b8d3f1de65f0e7455343..c54c7fd93f970ef02a8f7379747325cba05a1636 100644 (file)
@@ -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);
index 5dca7f96b4258bfbae5a591b63630e1fa05bba44..f5208583235ddc61730d22117defd2de81b42e3b 100644 (file)
@@ -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);