mirror of
https://github.com/torvalds/linux.git
synced 2025-12-07 20:06:24 +00:00
drm/i915: do cck get/put inside vlv_get_hpll_vco()
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>
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user