drm/i915: add vlv_clock_get_cdclk()

Add vlv_clock_get_cdclk() helper to hide the details from the callers.

For now, this means running vlv_get_hpll_vco() twice in vlv_get_cdclk(),
but this will be improved later.

v2: Rebase

Reviewed-by: Michał Grzelak <michal.grzelak@intel.com>
Acked-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/fc93ccf998300048432d18ce7e8690bd54e1e18d.1757688216.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
Jani Nikula
2025-09-12 17:48:46 +03:00
parent ffbc0de5d3
commit d451c5bff5
3 changed files with 8 additions and 3 deletions

View File

@@ -609,9 +609,7 @@ static void vlv_get_cdclk(struct intel_display *display,
u32 val;
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);
cdclk_config->cdclk = vlv_clock_get_cdclk(display->drm);
vlv_punit_get(display->drm);
val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM);

View File

@@ -207,6 +207,12 @@ int vlv_clock_get_czclk(struct drm_device *drm)
return i915->czclk_freq;
}
int vlv_clock_get_cdclk(struct drm_device *drm)
{
return vlv_get_cck_clock(drm, "cdclk", CCK_DISPLAY_CLOCK_CONTROL,
vlv_get_hpll_vco(drm));
}
int vlv_clock_get_gpll(struct drm_device *drm)
{
return vlv_get_cck_clock(drm, "GPLL ref", CCK_GPLL_CLOCK_CONTROL,

View File

@@ -440,6 +440,7 @@ int vlv_get_cck_clock(struct drm_device *drm,
const char *name, u32 reg, int ref_freq);
int vlv_clock_get_hrawclk(struct drm_device *drm);
int vlv_clock_get_czclk(struct drm_device *drm);
int vlv_clock_get_cdclk(struct drm_device *drm);
int vlv_clock_get_gpll(struct drm_device *drm);
bool intel_has_pending_fb_unpin(struct intel_display *display);
void intel_encoder_destroy(struct drm_encoder *encoder);