Perhaps not the ideal place, but better than having to have the fields in both struct drm_i915_private and struct xe_device.
v2: Rebase Signed-off-by: Jani Nikula <[email protected]> --- drivers/gpu/drm/i915/display/intel_display.c | 22 +++++++++---------- .../gpu/drm/i915/display/intel_display_core.h | 5 +++++ drivers/gpu/drm/i915/i915_drv.h | 3 --- drivers/gpu/drm/xe/xe_device_types.h | 6 ----- 4 files changed, 16 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c index b49661b4e959..02f50d0f370a 100644 --- a/drivers/gpu/drm/i915/display/intel_display.c +++ b/drivers/gpu/drm/i915/display/intel_display.c @@ -144,22 +144,22 @@ static void bdw_set_pipe_misc(struct intel_dsb *dsb, /* returns HPLL frequency in kHz */ int vlv_clock_get_hpll_vco(struct drm_device *drm) { - struct drm_i915_private *i915 = to_i915(drm); + struct intel_display *display = to_intel_display(drm); int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 }; - if (!i915->hpll_freq) { + if (!display->vlv_clock.hpll_freq) { 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); - i915->hpll_freq = vco_freq[hpll_freq] * 1000; + display->vlv_clock.hpll_freq = vco_freq[hpll_freq] * 1000; - drm_dbg_kms(drm, "HPLL frequency: %d kHz\n", i915->hpll_freq); + drm_dbg_kms(drm, "HPLL frequency: %d kHz\n", display->vlv_clock.hpll_freq); } - return i915->hpll_freq; + return display->vlv_clock.hpll_freq; } static int vlv_get_cck_clock(struct drm_device *drm, @@ -190,15 +190,15 @@ int vlv_clock_get_hrawclk(struct drm_device *drm) int vlv_clock_get_czclk(struct drm_device *drm) { - struct drm_i915_private *i915 = to_i915(drm); + struct intel_display *display = to_intel_display(drm); - if (!i915->czclk_freq) { - i915->czclk_freq = vlv_get_cck_clock(drm, "czclk", CCK_CZ_CLOCK_CONTROL, - vlv_clock_get_hpll_vco(drm)); - drm_dbg_kms(drm, "CZ clock rate: %d kHz\n", i915->czclk_freq); + if (!display->vlv_clock.czclk_freq) { + display->vlv_clock.czclk_freq = vlv_get_cck_clock(drm, "czclk", CCK_CZ_CLOCK_CONTROL, + vlv_clock_get_hpll_vco(drm)); + drm_dbg_kms(drm, "CZ clock rate: %d kHz\n", display->vlv_clock.czclk_freq); } - return i915->czclk_freq; + return display->vlv_clock.czclk_freq; } int vlv_clock_get_cdclk(struct drm_device *drm) diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h index 8c226406c5cd..791021a4e3bb 100644 --- a/drivers/gpu/drm/i915/display/intel_display_core.h +++ b/drivers/gpu/drm/i915/display/intel_display_core.h @@ -567,6 +567,11 @@ struct intel_display { u32 bxt_phy_grc; } state; + struct { + unsigned int hpll_freq; + unsigned int czclk_freq; + } vlv_clock; + struct { /* ordered wq for modesets */ struct workqueue_struct *modeset; diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 6a768aad8edd..37970d8db255 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -239,9 +239,6 @@ struct drm_i915_private { bool preserve_bios_swizzle; - unsigned int hpll_freq; - unsigned int czclk_freq; - /** * wq - Driver workqueue for GEM. * diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h index bfc617d9553f..e5a92911d6da 100644 --- a/drivers/gpu/drm/xe/xe_device_types.h +++ b/drivers/gpu/drm/xe/xe_device_types.h @@ -623,12 +623,6 @@ struct xe_device { struct intel_uncore { spinlock_t lock; } uncore; - - /* only to allow build, not used functionally */ - struct { - unsigned int hpll_freq; - unsigned int czclk_freq; - }; #endif }; -- 2.47.3
