* [RESEND 00/12] drm/i915: vlv clock cleanups
@ 2025-08-19 12:53 Jani Nikula
2025-08-19 12:53 ` [RESEND 01/12] drm/i915: add vlv_clock_get_gpll() Jani Nikula
` (13 more replies)
0 siblings, 14 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Rebase and resend of [1].
[1] https://lore.kernel.org/r/cover.1754385408.git.jani.nikula@intel.com
Jani Nikula (12):
drm/i915: add vlv_clock_get_gpll()
drm/i915: add vlv_clock_get_czclk()
drm/i915: add vlv_clock_get_hrawclk()
drm/i915: make vlv_get_cck_clock_hpll() static
drm/i915: add vlv_clock_get_cdclk()
drm/i915: make vlv_get_cck_clock() static
drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco()
drm/i915: cache the results in vlv_clock_get_hpll_vco() and use it
more
drm/i915: remove intel_update_czclk() as unnecessary
drm/i915: log HPLL frequency similar to CZCLK
drm/i915: move hpll and czclk caching under display
drm/i915: split out vlv_clock.[ch]
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_cdclk.c | 29 ++----
drivers/gpu/drm/i915/display/intel_display.c | 61 -------------
drivers/gpu/drm/i915/display/intel_display.h | 6 --
.../gpu/drm/i915/display/intel_display_core.h | 5 ++
.../drm/i915/display/intel_display_driver.c | 1 -
drivers/gpu/drm/i915/display/vlv_clock.c | 89 +++++++++++++++++++
drivers/gpu/drm/i915/display/vlv_clock.h | 38 ++++++++
drivers/gpu/drm/i915/gt/intel_rc6.c | 3 +-
drivers/gpu/drm/i915/gt/intel_rps.c | 11 ++-
drivers/gpu/drm/i915/i915_drv.h | 3 -
drivers/gpu/drm/xe/xe_device_types.h | 6 --
12 files changed, 148 insertions(+), 105 deletions(-)
create mode 100644 drivers/gpu/drm/i915/display/vlv_clock.c
create mode 100644 drivers/gpu/drm/i915/display/vlv_clock.h
--
2.47.2
^ permalink raw reply [flat|nested] 15+ messages in thread
* [RESEND 01/12] drm/i915: add vlv_clock_get_gpll()
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 02/12] drm/i915: add vlv_clock_get_czclk() Jani Nikula
` (12 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula, Mika Kahola
Add a vlv_clock_get_gpll() helper to hide the details from the callers.
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 8 ++++++++
drivers/gpu/drm/i915/display/intel_display.h | 1 +
drivers/gpu/drm/i915/gt/intel_rps.c | 5 +----
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index c1a3a95c65f0..8c67d357dd2d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -187,6 +187,14 @@ int vlv_get_cck_clock_hpll(struct drm_device *drm,
return hpll;
}
+int vlv_clock_get_gpll(struct drm_device *drm)
+{
+ struct drm_i915_private *i915 = to_i915(drm);
+
+ return vlv_get_cck_clock(drm, "GPLL ref", CCK_GPLL_CLOCK_CONTROL,
+ i915->czclk_freq);
+}
+
void intel_update_czclk(struct intel_display *display)
{
struct drm_i915_private *dev_priv = to_i915(display->drm);
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 37e2ab301a80..7ae899b8787a 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -440,6 +440,7 @@ int vlv_get_cck_clock(struct drm_device *drm,
const char *name, u32 reg, int ref_freq);
int vlv_get_cck_clock_hpll(struct drm_device *drm,
const char *name, u32 reg);
+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);
struct drm_display_mode *
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 006042e0b229..019cec057c52 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -1688,10 +1688,7 @@ static void vlv_init_gpll_ref_freq(struct intel_rps *rps)
{
struct drm_i915_private *i915 = rps_to_i915(rps);
- rps->gpll_ref_freq =
- vlv_get_cck_clock(&i915->drm, "GPLL ref",
- CCK_GPLL_CLOCK_CONTROL,
- i915->czclk_freq);
+ rps->gpll_ref_freq = vlv_clock_get_gpll(&i915->drm);
drm_dbg(&i915->drm, "GPLL reference freq: %d kHz\n",
rps->gpll_ref_freq);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 02/12] drm/i915: add vlv_clock_get_czclk()
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
2025-08-19 12:53 ` [RESEND 01/12] drm/i915: add vlv_clock_get_gpll() Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 03/12] drm/i915: add vlv_clock_get_hrawclk() Jani Nikula
` (11 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula, Mika Kahola
Add vlv_clock_get_czclk() helper to avoid looking at i915->czclk_freq
directly.
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 3 +--
drivers/gpu/drm/i915/display/intel_display.c | 20 ++++++++++++++------
drivers/gpu/drm/i915/display/intel_display.h | 1 +
drivers/gpu/drm/i915/gt/intel_rc6.c | 3 ++-
drivers/gpu/drm/i915/gt/intel_rps.c | 3 ++-
5 files changed, 20 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index d7ba3970e1e9..a920964ff98c 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -629,7 +629,6 @@ static void vlv_get_cdclk(struct intel_display *display,
static void vlv_program_pfi_credits(struct intel_display *display)
{
- struct drm_i915_private *dev_priv = to_i915(display->drm);
unsigned int credits, default_credits;
if (display->platform.cherryview)
@@ -637,7 +636,7 @@ static void vlv_program_pfi_credits(struct intel_display *display)
else
default_credits = PFI_CREDIT(8);
- if (display->cdclk.hw.cdclk >= dev_priv->czclk_freq) {
+ if (display->cdclk.hw.cdclk >= vlv_clock_get_czclk(display->drm)) {
/* CHV suggested value is 31 or 63 */
if (display->platform.cherryview)
credits = PFI_CREDIT_63;
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 8c67d357dd2d..2bc7e5f61bcc 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -187,25 +187,33 @@ int vlv_get_cck_clock_hpll(struct drm_device *drm,
return hpll;
}
-int vlv_clock_get_gpll(struct drm_device *drm)
+int vlv_clock_get_czclk(struct drm_device *drm)
{
struct drm_i915_private *i915 = to_i915(drm);
+ if (!i915->czclk_freq)
+ i915->czclk_freq = vlv_get_cck_clock_hpll(drm, "czclk",
+ CCK_CZ_CLOCK_CONTROL);
+
+ return i915->czclk_freq;
+}
+
+int vlv_clock_get_gpll(struct drm_device *drm)
+{
return vlv_get_cck_clock(drm, "GPLL ref", CCK_GPLL_CLOCK_CONTROL,
- i915->czclk_freq);
+ vlv_clock_get_czclk(drm));
}
void intel_update_czclk(struct intel_display *display)
{
- struct drm_i915_private *dev_priv = to_i915(display->drm);
+ int czclk_freq;
if (!display->platform.valleyview && !display->platform.cherryview)
return;
- dev_priv->czclk_freq = vlv_get_cck_clock_hpll(display->drm, "czclk",
- CCK_CZ_CLOCK_CONTROL);
+ czclk_freq = vlv_clock_get_czclk(display->drm);
- drm_dbg_kms(display->drm, "CZ clock rate: %d kHz\n", dev_priv->czclk_freq);
+ drm_dbg_kms(display->drm, "CZ clock rate: %d kHz\n", czclk_freq);
}
static bool is_hdr_mode(const struct intel_crtc_state *crtc_state)
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 7ae899b8787a..811066a9e69d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -440,6 +440,7 @@ int vlv_get_cck_clock(struct drm_device *drm,
const char *name, u32 reg, int ref_freq);
int vlv_get_cck_clock_hpll(struct drm_device *drm,
const char *name, u32 reg);
+int vlv_clock_get_czclk(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);
diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c
index 9ca42589da4d..0fd23b04d3f9 100644
--- a/drivers/gpu/drm/i915/gt/intel_rc6.c
+++ b/drivers/gpu/drm/i915/gt/intel_rc6.c
@@ -6,6 +6,7 @@
#include <linux/pm_runtime.h>
#include <linux/string_helpers.h>
+#include "display/intel_display.h"
#include "gem/i915_gem_region.h"
#include "i915_drv.h"
#include "i915_reg.h"
@@ -802,7 +803,7 @@ u64 intel_rc6_residency_ns(struct intel_rc6 *rc6, enum intel_rc6_res_type id)
/* On VLV and CHV, residency time is in CZ units rather than 1.28us */
if (IS_VALLEYVIEW(i915) || IS_CHERRYVIEW(i915)) {
mul = 1000000;
- div = i915->czclk_freq;
+ div = vlv_clock_get_czclk(&i915->drm);
overflow_hw = BIT_ULL(40);
time_hw = vlv_residency_raw(uncore, reg);
} else {
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 019cec057c52..978402cceaa9 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -1775,6 +1775,7 @@ static void vlv_c0_read(struct intel_uncore *uncore, struct intel_rps_ei *ei)
static u32 vlv_wa_c0_ei(struct intel_rps *rps, u32 pm_iir)
{
+ struct drm_i915_private *i915 = rps_to_i915(rps);
struct intel_uncore *uncore = rps_to_uncore(rps);
const struct intel_rps_ei *prev = &rps->ei;
struct intel_rps_ei now;
@@ -1791,7 +1792,7 @@ static u32 vlv_wa_c0_ei(struct intel_rps *rps, u32 pm_iir)
time = ktime_us_delta(now.ktime, prev->ktime);
- time *= rps_to_i915(rps)->czclk_freq;
+ time *= vlv_clock_get_czclk(&i915->drm);
/* Workload can be split between render + media,
* e.g. SwapBuffers being blitted in X after being rendered in
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 03/12] drm/i915: add vlv_clock_get_hrawclk()
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
2025-08-19 12:53 ` [RESEND 01/12] drm/i915: add vlv_clock_get_gpll() Jani Nikula
2025-08-19 12:53 ` [RESEND 02/12] drm/i915: add vlv_clock_get_czclk() Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 04/12] drm/i915: make vlv_get_cck_clock_hpll() static Jani Nikula
` (10 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Add vlv_clock_get_hrawclk() helper to hide the details from the callers.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 9 +--------
drivers/gpu/drm/i915/display/intel_display.c | 6 ++++++
drivers/gpu/drm/i915/display/intel_display.h | 1 +
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index a920964ff98c..65ad7d48dd39 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -3561,13 +3561,6 @@ static int pch_rawclk(struct intel_display *display)
return (intel_de_read(display, PCH_RAWCLK_FREQ) & RAWCLK_FREQ_MASK) * 1000;
}
-static int vlv_hrawclk(struct intel_display *display)
-{
- /* RAWCLK_FREQ_VLV register updated from power well code */
- return vlv_get_cck_clock_hpll(display->drm, "hrawclk",
- CCK_DISPLAY_REF_CLOCK_CONTROL);
-}
-
static int i9xx_hrawclk(struct intel_display *display)
{
struct drm_i915_private *i915 = to_i915(display->drm);
@@ -3601,7 +3594,7 @@ u32 intel_read_rawclk(struct intel_display *display)
else if (HAS_PCH_SPLIT(display))
freq = pch_rawclk(display);
else if (display->platform.valleyview || display->platform.cherryview)
- freq = vlv_hrawclk(display);
+ freq = vlv_clock_get_hrawclk(display->drm);
else if (DISPLAY_VER(display) >= 3)
freq = i9xx_hrawclk(display);
else
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 2bc7e5f61bcc..a5f67adfb856 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -187,6 +187,12 @@ int vlv_get_cck_clock_hpll(struct drm_device *drm,
return hpll;
}
+int vlv_clock_get_hrawclk(struct drm_device *drm)
+{
+ /* RAWCLK_FREQ_VLV register updated from power well code */
+ return vlv_get_cck_clock_hpll(drm, "hrawclk", CCK_DISPLAY_REF_CLOCK_CONTROL);
+}
+
int vlv_clock_get_czclk(struct drm_device *drm)
{
struct drm_i915_private *i915 = to_i915(drm);
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 811066a9e69d..dbfb4b4aee4e 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -440,6 +440,7 @@ int vlv_get_cck_clock(struct drm_device *drm,
const char *name, u32 reg, int ref_freq);
int vlv_get_cck_clock_hpll(struct drm_device *drm,
const char *name, u32 reg);
+int vlv_clock_get_hrawclk(struct drm_device *drm);
int vlv_clock_get_czclk(struct drm_device *drm);
int vlv_clock_get_gpll(struct drm_device *drm);
bool intel_has_pending_fb_unpin(struct intel_display *display);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 04/12] drm/i915: make vlv_get_cck_clock_hpll() static
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (2 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 03/12] drm/i915: add vlv_clock_get_hrawclk() Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 05/12] drm/i915: add vlv_clock_get_cdclk() Jani Nikula
` (9 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
vlv_get_cck_clock_hpll() is no longer used outside of intel_display.c,
make it static.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 4 ++--
drivers/gpu/drm/i915/display/intel_display.h | 2 --
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index a5f67adfb856..8baa5f898284 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -169,8 +169,8 @@ int vlv_get_cck_clock(struct drm_device *drm,
return DIV_ROUND_CLOSEST(ref_freq << 1, divider + 1);
}
-int vlv_get_cck_clock_hpll(struct drm_device *drm,
- const char *name, u32 reg)
+static int vlv_get_cck_clock_hpll(struct drm_device *drm,
+ const char *name, u32 reg)
{
struct drm_i915_private *dev_priv = to_i915(drm);
int hpll;
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index dbfb4b4aee4e..5c9b57e94a65 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -438,8 +438,6 @@ void i830_disable_pipe(struct intel_display *display, enum pipe pipe);
int vlv_get_hpll_vco(struct drm_device *drm);
int vlv_get_cck_clock(struct drm_device *drm,
const char *name, u32 reg, int ref_freq);
-int vlv_get_cck_clock_hpll(struct drm_device *drm,
- const char *name, u32 reg);
int vlv_clock_get_hrawclk(struct drm_device *drm);
int vlv_clock_get_czclk(struct drm_device *drm);
int vlv_clock_get_gpll(struct drm_device *drm);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 05/12] drm/i915: add vlv_clock_get_cdclk()
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (3 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 04/12] drm/i915: make vlv_get_cck_clock_hpll() static Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 06/12] drm/i915: make vlv_get_cck_clock() static Jani Nikula
` (8 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
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.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 4 +---
drivers/gpu/drm/i915/display/intel_display.c | 6 ++++++
drivers/gpu/drm/i915/display/intel_display.h | 1 +
3 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 65ad7d48dd39..e898c0541168 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -610,9 +610,7 @@ static void vlv_get_cdclk(struct intel_display *display,
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);
+ cdclk_config->cdclk = vlv_clock_get_cdclk(display->drm);
val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 8baa5f898284..644028d0c7ef 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -204,6 +204,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,
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 5c9b57e94a65..9fdbc4ad5391 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -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);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 06/12] drm/i915: make vlv_get_cck_clock() static
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (4 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 05/12] drm/i915: add vlv_clock_get_cdclk() Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 07/12] drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco() Jani Nikula
` (7 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
vlv_get_cck_clock() is no longer used outside of intel_display.c, make
it static.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 4 ++--
drivers/gpu/drm/i915/display/intel_display.h | 2 --
2 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 644028d0c7ef..98fdaa159a4a 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -153,8 +153,8 @@ int vlv_get_hpll_vco(struct drm_device *drm)
return vco_freq[hpll_freq] * 1000;
}
-int vlv_get_cck_clock(struct drm_device *drm,
- const char *name, u32 reg, int ref_freq)
+static int vlv_get_cck_clock(struct drm_device *drm,
+ const char *name, u32 reg, int ref_freq)
{
u32 val;
int divider;
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 9fdbc4ad5391..57b06cad314b 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -436,8 +436,6 @@ void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state);
void i830_enable_pipe(struct intel_display *display, enum pipe pipe);
void i830_disable_pipe(struct intel_display *display, enum pipe pipe);
int vlv_get_hpll_vco(struct drm_device *drm);
-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);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 07/12] drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco()
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (5 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 06/12] drm/i915: make vlv_get_cck_clock() static Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 08/12] drm/i915: cache the results in vlv_clock_get_hpll_vco() and use it more Jani Nikula
` (6 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Follow the new vlv_clock_*() naming pattern for all the related VLV
clock functions.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 2 +-
drivers/gpu/drm/i915/display/intel_display.c | 6 +++---
drivers/gpu/drm/i915/display/intel_display.h | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index e898c0541168..2b3f8b95caca 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -609,7 +609,7 @@ static void vlv_get_cdclk(struct intel_display *display,
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->vco = vlv_clock_get_hpll_vco(display->drm);
cdclk_config->cdclk = vlv_clock_get_cdclk(display->drm);
val = vlv_punit_read(display->drm, PUNIT_REG_DSPSSPM);
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 98fdaa159a4a..ba1c13d2011d 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -142,7 +142,7 @@ static void bdw_set_pipe_misc(struct intel_dsb *dsb,
const struct intel_crtc_state *crtc_state);
/* returns HPLL frequency in kHz */
-int vlv_get_hpll_vco(struct drm_device *drm)
+int vlv_clock_get_hpll_vco(struct drm_device *drm)
{
int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 };
@@ -178,7 +178,7 @@ static int vlv_get_cck_clock_hpll(struct drm_device *drm,
vlv_cck_get(drm);
if (dev_priv->hpll_freq == 0)
- dev_priv->hpll_freq = vlv_get_hpll_vco(drm);
+ dev_priv->hpll_freq = vlv_clock_get_hpll_vco(drm);
hpll = vlv_get_cck_clock(drm, name, reg, dev_priv->hpll_freq);
@@ -207,7 +207,7 @@ int vlv_clock_get_czclk(struct drm_device *drm)
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));
+ vlv_clock_get_hpll_vco(drm));
}
int vlv_clock_get_gpll(struct drm_device *drm)
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 57b06cad314b..5c406b276a76 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -435,7 +435,7 @@ void intel_enable_transcoder(const struct intel_crtc_state *new_crtc_state);
void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state);
void i830_enable_pipe(struct intel_display *display, enum pipe pipe);
void i830_disable_pipe(struct intel_display *display, enum pipe pipe);
-int vlv_get_hpll_vco(struct drm_device *drm);
+int vlv_clock_get_hpll_vco(struct drm_device *drm);
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);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 08/12] drm/i915: cache the results in vlv_clock_get_hpll_vco() and use it more
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (6 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 07/12] drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco() Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 09/12] drm/i915: remove intel_update_czclk() as unnecessary Jani Nikula
` (5 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Use vlv_clock_get_hpll_vco() helper more to avoid looking at
i915->hpll_freq directly. Cache and return the cached results to avoid
repeated lookups.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_cdclk.c | 10 +++-------
drivers/gpu/drm/i915/display/intel_display.c | 19 ++++++++++---------
2 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 2b3f8b95caca..bdcf7adfca12 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -562,8 +562,7 @@ static void hsw_get_cdclk(struct intel_display *display,
static int vlv_calc_cdclk(struct intel_display *display, int min_cdclk)
{
- struct drm_i915_private *dev_priv = to_i915(display->drm);
- int freq_320 = (dev_priv->hpll_freq << 1) % 320000 != 0 ?
+ int freq_320 = (vlv_clock_get_hpll_vco(display->drm) << 1) % 320000 != 0 ?
333333 : 320000;
/*
@@ -583,8 +582,6 @@ static int vlv_calc_cdclk(struct intel_display *display, int min_cdclk)
static u8 vlv_calc_voltage_level(struct intel_display *display, int cdclk)
{
- struct drm_i915_private *dev_priv = to_i915(display->drm);
-
if (display->platform.valleyview) {
if (cdclk >= 320000) /* jump to highest voltage for 400MHz too */
return 2;
@@ -598,7 +595,7 @@ static u8 vlv_calc_voltage_level(struct intel_display *display, int cdclk)
* hardware has shown that we just need to write the desired
* CCK divider into the Punit register.
*/
- return DIV_ROUND_CLOSEST(dev_priv->hpll_freq << 1, cdclk) - 1;
+ return DIV_ROUND_CLOSEST(vlv_clock_get_hpll_vco(display->drm) << 1, cdclk) - 1;
}
}
@@ -666,7 +663,6 @@ static void vlv_set_cdclk(struct intel_display *display,
const struct intel_cdclk_config *cdclk_config,
enum pipe pipe)
{
- struct drm_i915_private *dev_priv = to_i915(display->drm);
int cdclk = cdclk_config->cdclk;
u32 val, cmd = cdclk_config->voltage_level;
intel_wakeref_t wakeref;
@@ -710,7 +706,7 @@ static void vlv_set_cdclk(struct intel_display *display,
if (cdclk == 400000) {
u32 divider;
- divider = DIV_ROUND_CLOSEST(dev_priv->hpll_freq << 1,
+ divider = DIV_ROUND_CLOSEST(vlv_clock_get_hpll_vco(display->drm) << 1,
cdclk) - 1;
/* adjust cdclk divider */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index ba1c13d2011d..4f1d60b42063 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -144,13 +144,18 @@ 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);
int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 };
- /* Obtain SKU information */
- hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) &
- CCK_FUSE_HPLL_FREQ_MASK;
+ if (!i915->hpll_freq) {
+ /* Obtain SKU information */
+ hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) &
+ CCK_FUSE_HPLL_FREQ_MASK;
+
+ i915->hpll_freq = vco_freq[hpll_freq] * 1000;
+ }
- return vco_freq[hpll_freq] * 1000;
+ return i915->hpll_freq;
}
static int vlv_get_cck_clock(struct drm_device *drm,
@@ -172,15 +177,11 @@ static int vlv_get_cck_clock(struct drm_device *drm,
static int vlv_get_cck_clock_hpll(struct drm_device *drm,
const char *name, u32 reg)
{
- 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_clock_get_hpll_vco(drm);
-
- hpll = vlv_get_cck_clock(drm, name, reg, dev_priv->hpll_freq);
+ hpll = vlv_get_cck_clock(drm, name, reg, vlv_clock_get_hpll_vco(drm));
vlv_cck_put(drm);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 09/12] drm/i915: remove intel_update_czclk() as unnecessary
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (7 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 08/12] drm/i915: cache the results in vlv_clock_get_hpll_vco() and use it more Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 10/12] drm/i915: log HPLL frequency similar to CZCLK Jani Nikula
` (4 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
With vlv_clock_get_czclk() caching the result on first use, we no longer
need a separate initializer. Remove intel_update_czclk() as
unnecessary. Log the CZCLK in vlv_clock_get_czclk() instead.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 16 +++-------------
drivers/gpu/drm/i915/display/intel_display.h | 1 -
.../gpu/drm/i915/display/intel_display_driver.c | 1 -
3 files changed, 3 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 4f1d60b42063..0694b2b35c86 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -198,9 +198,11 @@ int vlv_clock_get_czclk(struct drm_device *drm)
{
struct drm_i915_private *i915 = to_i915(drm);
- if (!i915->czclk_freq)
+ if (!i915->czclk_freq) {
i915->czclk_freq = vlv_get_cck_clock_hpll(drm, "czclk",
CCK_CZ_CLOCK_CONTROL);
+ drm_dbg_kms(drm, "CZ clock rate: %d kHz\n", i915->czclk_freq);
+ }
return i915->czclk_freq;
}
@@ -217,18 +219,6 @@ int vlv_clock_get_gpll(struct drm_device *drm)
vlv_clock_get_czclk(drm));
}
-void intel_update_czclk(struct intel_display *display)
-{
- int czclk_freq;
-
- if (!display->platform.valleyview && !display->platform.cherryview)
- return;
-
- czclk_freq = vlv_clock_get_czclk(display->drm);
-
- drm_dbg_kms(display->drm, "CZ clock rate: %d kHz\n", czclk_freq);
-}
-
static bool is_hdr_mode(const struct intel_crtc_state *crtc_state)
{
return (crtc_state->active_planes &
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 5c406b276a76..54961cb656c3 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -528,7 +528,6 @@ void intel_init_display_hooks(struct intel_display *display);
void intel_setup_outputs(struct intel_display *display);
int intel_initial_commit(struct intel_display *display);
void intel_panel_sanitize_ssc(struct intel_display *display);
-void intel_update_czclk(struct intel_display *display);
enum drm_mode_status intel_mode_valid(struct drm_device *dev,
const struct drm_display_mode *mode);
int intel_atomic_commit(struct drm_device *dev, struct drm_atomic_state *_state,
diff --git a/drivers/gpu/drm/i915/display/intel_display_driver.c b/drivers/gpu/drm/i915/display/intel_display_driver.c
index cf1c14412abe..f84a0b26b7a6 100644
--- a/drivers/gpu/drm/i915/display/intel_display_driver.c
+++ b/drivers/gpu/drm/i915/display/intel_display_driver.c
@@ -482,7 +482,6 @@ int intel_display_driver_probe_nogem(struct intel_display *display)
intel_dpll_init(display);
intel_fdi_pll_freq_update(display);
- intel_update_czclk(display);
intel_display_driver_init_hw(display);
intel_dpll_update_ref_clks(display);
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 10/12] drm/i915: log HPLL frequency similar to CZCLK
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (8 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 09/12] drm/i915: remove intel_update_czclk() as unnecessary Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 11/12] drm/i915: move hpll and czclk caching under display Jani Nikula
` (3 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
With vlv_clock_get_czclk() logging the CZ clock rate when first cached,
do the same for HPLL VCO.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/display/intel_display.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index 0694b2b35c86..9ac21f54f548 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -153,6 +153,8 @@ int vlv_clock_get_hpll_vco(struct drm_device *drm)
CCK_FUSE_HPLL_FREQ_MASK;
i915->hpll_freq = vco_freq[hpll_freq] * 1000;
+
+ drm_dbg_kms(drm, "HPLL frequency: %d kHz\n", i915->hpll_freq);
}
return i915->hpll_freq;
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 11/12] drm/i915: move hpll and czclk caching under display
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (9 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 10/12] drm/i915: log HPLL frequency similar to CZCLK Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 12:53 ` [RESEND 12/12] drm/i915: split out vlv_clock.[ch] Jani Nikula
` (2 subsequent siblings)
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Perhaps not the ideal place, but better than having to have the fields
in both struct drm_i915_private and struct xe_device.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
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 9ac21f54f548..dd7a0c18cb33 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -144,20 +144,20 @@ 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) {
/* Obtain SKU information */
hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) &
CCK_FUSE_HPLL_FREQ_MASK;
- 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,
@@ -198,15 +198,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_hpll(drm, "czclk",
- CCK_CZ_CLOCK_CONTROL);
- 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_hpll(drm, "czclk",
+ CCK_CZ_CLOCK_CONTROL);
+ 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 2f3965feada1..626f0a3c9bb9 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -237,9 +237,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 e67fbfe59afa..eff7a814fb96 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -604,12 +604,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.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [RESEND 12/12] drm/i915: split out vlv_clock.[ch]
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (10 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 11/12] drm/i915: move hpll and czclk caching under display Jani Nikula
@ 2025-08-19 12:53 ` Jani Nikula
2025-08-19 13:51 ` ✗ i915.CI.BAT: failure for drm/i915: vlv clock cleanups (rev2) Patchwork
2025-09-02 15:01 ` [RESEND 00/12] drm/i915: vlv clock cleanups Michał Grzelak
13 siblings, 0 replies; 15+ messages in thread
From: Jani Nikula @ 2025-08-19 12:53 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: jani.nikula
Move the VLV clock related functions to their own file.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
---
drivers/gpu/drm/i915/Makefile | 1 +
drivers/gpu/drm/i915/display/intel_cdclk.c | 1 +
drivers/gpu/drm/i915/display/intel_display.c | 82 ------------------
drivers/gpu/drm/i915/display/intel_display.h | 5 --
drivers/gpu/drm/i915/display/vlv_clock.c | 89 ++++++++++++++++++++
drivers/gpu/drm/i915/display/vlv_clock.h | 38 +++++++++
drivers/gpu/drm/i915/gt/intel_rc6.c | 2 +-
drivers/gpu/drm/i915/gt/intel_rps.c | 3 +-
8 files changed, 132 insertions(+), 89 deletions(-)
create mode 100644 drivers/gpu/drm/i915/display/vlv_clock.c
create mode 100644 drivers/gpu/drm/i915/display/vlv_clock.h
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 853543443072..b9949e2629d7 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -298,6 +298,7 @@ i915-y += \
display/skl_scaler.o \
display/skl_universal_plane.o \
display/skl_watermark.o \
+ display/vlv_clock.o \
display/vlv_sideband.o
i915-$(CONFIG_ACPI) += \
display/intel_acpi.o \
diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index bdcf7adfca12..01901f935a04 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -48,6 +48,7 @@
#include "intel_vdsc.h"
#include "skl_watermark.h"
#include "skl_watermark_regs.h"
+#include "vlv_clock.h"
#include "vlv_dsi.h"
#include "vlv_sideband.h"
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index dd7a0c18cb33..4607b3c015f0 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -129,11 +129,9 @@
#include "skl_scaler.h"
#include "skl_universal_plane.h"
#include "skl_watermark.h"
-#include "vlv_dpio_phy_regs.h"
#include "vlv_dsi.h"
#include "vlv_dsi_pll.h"
#include "vlv_dsi_regs.h"
-#include "vlv_sideband.h"
static void intel_set_transcoder_timings(const struct intel_crtc_state *crtc_state);
static void intel_set_pipe_src_size(const struct intel_crtc_state *crtc_state);
@@ -141,86 +139,6 @@ static void hsw_set_transconf(const struct intel_crtc_state *crtc_state);
static void bdw_set_pipe_misc(struct intel_dsb *dsb,
const struct intel_crtc_state *crtc_state);
-/* returns HPLL frequency in kHz */
-int vlv_clock_get_hpll_vco(struct drm_device *drm)
-{
- struct intel_display *display = to_intel_display(drm);
- int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 };
-
- if (!display->vlv_clock.hpll_freq) {
- /* Obtain SKU information */
- hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) &
- CCK_FUSE_HPLL_FREQ_MASK;
-
- display->vlv_clock.hpll_freq = vco_freq[hpll_freq] * 1000;
-
- drm_dbg_kms(drm, "HPLL frequency: %d kHz\n", display->vlv_clock.hpll_freq);
- }
-
- return display->vlv_clock.hpll_freq;
-}
-
-static int vlv_get_cck_clock(struct drm_device *drm,
- const char *name, u32 reg, int ref_freq)
-{
- u32 val;
- int divider;
-
- val = vlv_cck_read(drm, reg);
- divider = val & CCK_FREQUENCY_VALUES;
-
- drm_WARN(drm, (val & CCK_FREQUENCY_STATUS) !=
- (divider << CCK_FREQUENCY_STATUS_SHIFT),
- "%s change in progress\n", name);
-
- return DIV_ROUND_CLOSEST(ref_freq << 1, divider + 1);
-}
-
-static int vlv_get_cck_clock_hpll(struct drm_device *drm,
- const char *name, u32 reg)
-{
- int hpll;
-
- vlv_cck_get(drm);
-
- hpll = vlv_get_cck_clock(drm, name, reg, vlv_clock_get_hpll_vco(drm));
-
- vlv_cck_put(drm);
-
- return hpll;
-}
-
-int vlv_clock_get_hrawclk(struct drm_device *drm)
-{
- /* RAWCLK_FREQ_VLV register updated from power well code */
- return vlv_get_cck_clock_hpll(drm, "hrawclk", CCK_DISPLAY_REF_CLOCK_CONTROL);
-}
-
-int vlv_clock_get_czclk(struct drm_device *drm)
-{
- struct intel_display *display = to_intel_display(drm);
-
- if (!display->vlv_clock.czclk_freq) {
- display->vlv_clock.czclk_freq = vlv_get_cck_clock_hpll(drm, "czclk",
- CCK_CZ_CLOCK_CONTROL);
- drm_dbg_kms(drm, "CZ clock rate: %d kHz\n", display->vlv_clock.czclk_freq);
- }
-
- return display->vlv_clock.czclk_freq;
-}
-
-int vlv_clock_get_cdclk(struct drm_device *drm)
-{
- return vlv_get_cck_clock(drm, "cdclk", CCK_DISPLAY_CLOCK_CONTROL,
- vlv_clock_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,
- vlv_clock_get_czclk(drm));
-}
-
static bool is_hdr_mode(const struct intel_crtc_state *crtc_state)
{
return (crtc_state->active_planes &
diff --git a/drivers/gpu/drm/i915/display/intel_display.h b/drivers/gpu/drm/i915/display/intel_display.h
index 54961cb656c3..9a9a44b61f7f 100644
--- a/drivers/gpu/drm/i915/display/intel_display.h
+++ b/drivers/gpu/drm/i915/display/intel_display.h
@@ -435,11 +435,6 @@ void intel_enable_transcoder(const struct intel_crtc_state *new_crtc_state);
void intel_disable_transcoder(const struct intel_crtc_state *old_crtc_state);
void i830_enable_pipe(struct intel_display *display, enum pipe pipe);
void i830_disable_pipe(struct intel_display *display, enum pipe pipe);
-int vlv_clock_get_hpll_vco(struct drm_device *drm);
-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);
struct drm_display_mode *
diff --git a/drivers/gpu/drm/i915/display/vlv_clock.c b/drivers/gpu/drm/i915/display/vlv_clock.c
new file mode 100644
index 000000000000..3de5cc3e7d71
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/vlv_clock.c
@@ -0,0 +1,89 @@
+// SPDX-License-Identifier: MIT
+/* Copyright © 2025 Intel Corporation */
+
+#include <drm/drm_print.h>
+
+#include "intel_display_core.h"
+#include "intel_display_types.h"
+#include "vlv_clock.h"
+#include "vlv_sideband.h"
+
+/* returns HPLL frequency in kHz */
+int vlv_clock_get_hpll_vco(struct drm_device *drm)
+{
+ struct intel_display *display = to_intel_display(drm);
+ int hpll_freq, vco_freq[] = { 800, 1600, 2000, 2400 };
+
+ if (!display->vlv_clock.hpll_freq) {
+ /* Obtain SKU information */
+ hpll_freq = vlv_cck_read(drm, CCK_FUSE_REG) &
+ CCK_FUSE_HPLL_FREQ_MASK;
+
+ display->vlv_clock.hpll_freq = vco_freq[hpll_freq] * 1000;
+
+ drm_dbg_kms(drm, "HPLL frequency: %d kHz\n", display->vlv_clock.hpll_freq);
+ }
+
+ return display->vlv_clock.hpll_freq;
+}
+
+static int vlv_get_cck_clock(struct drm_device *drm,
+ const char *name, u32 reg, int ref_freq)
+{
+ u32 val;
+ int divider;
+
+ val = vlv_cck_read(drm, reg);
+ divider = val & CCK_FREQUENCY_VALUES;
+
+ drm_WARN(drm, (val & CCK_FREQUENCY_STATUS) !=
+ (divider << CCK_FREQUENCY_STATUS_SHIFT),
+ "%s change in progress\n", name);
+
+ return DIV_ROUND_CLOSEST(ref_freq << 1, divider + 1);
+}
+
+static int vlv_get_cck_clock_hpll(struct drm_device *drm,
+ const char *name, u32 reg)
+{
+ int hpll;
+
+ vlv_cck_get(drm);
+
+ hpll = vlv_get_cck_clock(drm, name, reg, vlv_clock_get_hpll_vco(drm));
+
+ vlv_cck_put(drm);
+
+ return hpll;
+}
+
+int vlv_clock_get_hrawclk(struct drm_device *drm)
+{
+ /* RAWCLK_FREQ_VLV register updated from power well code */
+ return vlv_get_cck_clock_hpll(drm, "hrawclk", CCK_DISPLAY_REF_CLOCK_CONTROL);
+}
+
+int vlv_clock_get_czclk(struct drm_device *drm)
+{
+ struct intel_display *display = to_intel_display(drm);
+
+ if (!display->vlv_clock.czclk_freq) {
+ display->vlv_clock.czclk_freq = vlv_get_cck_clock_hpll(drm, "czclk",
+ CCK_CZ_CLOCK_CONTROL);
+ drm_dbg_kms(drm, "CZ clock rate: %d kHz\n", display->vlv_clock.czclk_freq);
+ }
+
+ return display->vlv_clock.czclk_freq;
+}
+
+int vlv_clock_get_cdclk(struct drm_device *drm)
+{
+ return vlv_get_cck_clock(drm, "cdclk", CCK_DISPLAY_CLOCK_CONTROL,
+ vlv_clock_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,
+ vlv_clock_get_czclk(drm));
+}
diff --git a/drivers/gpu/drm/i915/display/vlv_clock.h b/drivers/gpu/drm/i915/display/vlv_clock.h
new file mode 100644
index 000000000000..5742ed3c628d
--- /dev/null
+++ b/drivers/gpu/drm/i915/display/vlv_clock.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: MIT */
+/* Copyright © 2025 Intel Corporation */
+
+#ifndef __VLV_CLOCK_H__
+#define __VLV_CLOCK_H__
+
+struct drm_device;
+
+#ifdef I915
+int vlv_clock_get_hpll_vco(struct drm_device *drm);
+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);
+#else
+static inline int vlv_clock_get_hpll_vco(struct drm_device *drm)
+{
+ return 0;
+}
+static inline int vlv_clock_get_hrawclk(struct drm_device *drm)
+{
+ return 0;
+}
+static inline int vlv_clock_get_czclk(struct drm_device *drm)
+{
+ return 0;
+}
+static inline int vlv_clock_get_cdclk(struct drm_device *drm)
+{
+ return 0;
+}
+static inline int vlv_clock_get_gpll(struct drm_device *drm)
+{
+ return 0;
+}
+#endif
+
+#endif /* __VLV_CLOCK_H__ */
diff --git a/drivers/gpu/drm/i915/gt/intel_rc6.c b/drivers/gpu/drm/i915/gt/intel_rc6.c
index 0fd23b04d3f9..1cd476647f75 100644
--- a/drivers/gpu/drm/i915/gt/intel_rc6.c
+++ b/drivers/gpu/drm/i915/gt/intel_rc6.c
@@ -6,7 +6,7 @@
#include <linux/pm_runtime.h>
#include <linux/string_helpers.h>
-#include "display/intel_display.h"
+#include "display/vlv_clock.h"
#include "gem/i915_gem_region.h"
#include "i915_drv.h"
#include "i915_reg.h"
diff --git a/drivers/gpu/drm/i915/gt/intel_rps.c b/drivers/gpu/drm/i915/gt/intel_rps.c
index 978402cceaa9..e9ef35a8c1cf 100644
--- a/drivers/gpu/drm/i915/gt/intel_rps.c
+++ b/drivers/gpu/drm/i915/gt/intel_rps.c
@@ -7,9 +7,10 @@
#include <drm/intel/i915_drm.h>
-#include "display/intel_display.h"
#include "display/intel_display_rps.h"
+#include "display/vlv_clock.h"
#include "soc/intel_dram.h"
+
#include "i915_drv.h"
#include "i915_irq.h"
#include "i915_reg.h"
--
2.47.2
^ permalink raw reply related [flat|nested] 15+ messages in thread
* ✗ i915.CI.BAT: failure for drm/i915: vlv clock cleanups (rev2)
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (11 preceding siblings ...)
2025-08-19 12:53 ` [RESEND 12/12] drm/i915: split out vlv_clock.[ch] Jani Nikula
@ 2025-08-19 13:51 ` Patchwork
2025-09-02 15:01 ` [RESEND 00/12] drm/i915: vlv clock cleanups Michał Grzelak
13 siblings, 0 replies; 15+ messages in thread
From: Patchwork @ 2025-08-19 13:51 UTC (permalink / raw)
To: Jani Nikula; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 5747 bytes --]
== Series Details ==
Series: drm/i915: vlv clock cleanups (rev2)
URL : https://patchwork.freedesktop.org/series/152519/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_17030 -> Patchwork_152519v2
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_152519v2 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_152519v2, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/index.html
Participating hosts (43 -> 42)
------------------------------
Missing (1): fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_152519v2:
### IGT changes ###
#### Possible regressions ####
* igt@i915_module_load@load:
- fi-bsw-n3050: [PASS][1] -> [INCOMPLETE][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/fi-bsw-n3050/igt@i915_module_load@load.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/fi-bsw-n3050/igt@i915_module_load@load.html
- fi-bsw-nick: [PASS][3] -> [INCOMPLETE][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/fi-bsw-nick/igt@i915_module_load@load.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/fi-bsw-nick/igt@i915_module_load@load.html
Known issues
------------
Here are the changes found in Patchwork_152519v2 that come from known issues:
### IGT changes ###
#### Possible fixes ####
* igt@i915_selftest@live:
- bat-arlh-3: [INCOMPLETE][5] ([i915#14764]) -> [PASS][6]
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/bat-arlh-3/igt@i915_selftest@live.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/bat-arlh-3/igt@i915_selftest@live.html
* igt@i915_selftest@live@gt_tlb:
- bat-arlh-3: [INCOMPLETE][7] ([i915#14837]) -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/bat-arlh-3/igt@i915_selftest@live@gt_tlb.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/bat-arlh-3/igt@i915_selftest@live@gt_tlb.html
* igt@i915_selftest@live@sanitycheck:
- fi-kbl-7567u: [DMESG-WARN][9] ([i915#13735]) -> [PASS][10] +79 other tests pass
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/fi-kbl-7567u/igt@i915_selftest@live@sanitycheck.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/fi-kbl-7567u/igt@i915_selftest@live@sanitycheck.html
* igt@i915_selftest@live@workarounds:
- bat-dg2-9: [DMESG-FAIL][11] ([i915#12061]) -> [PASS][12] +1 other test pass
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/bat-dg2-9/igt@i915_selftest@live@workarounds.html
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/bat-dg2-9/igt@i915_selftest@live@workarounds.html
* igt@kms_busy@basic@flip:
- fi-kbl-7567u: [DMESG-WARN][13] ([i915#13735] / [i915#180]) -> [PASS][14]
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/fi-kbl-7567u/igt@kms_busy@basic@flip.html
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/fi-kbl-7567u/igt@kms_busy@basic@flip.html
* igt@kms_pm_rpm@basic-pci-d3-state:
- fi-kbl-7567u: [DMESG-WARN][15] ([i915#13735] / [i915#13890] / [i915#180]) -> [PASS][16] +52 other tests pass
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/fi-kbl-7567u/igt@kms_pm_rpm@basic-pci-d3-state.html
#### Warnings ####
* igt@i915_selftest@live:
- bat-atsm-1: [DMESG-FAIL][17] ([i915#12061] / [i915#14204]) -> [DMESG-FAIL][18] ([i915#12061] / [i915#13929])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/bat-atsm-1/igt@i915_selftest@live.html
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/bat-atsm-1/igt@i915_selftest@live.html
* igt@i915_selftest@live@mman:
- bat-atsm-1: [DMESG-FAIL][19] ([i915#14204]) -> [DMESG-FAIL][20] ([i915#13929])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_17030/bat-atsm-1/igt@i915_selftest@live@mman.html
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/bat-atsm-1/igt@i915_selftest@live@mman.html
[i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
[i915#13735]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13735
[i915#13890]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13890
[i915#13929]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13929
[i915#14204]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14204
[i915#14764]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14764
[i915#14837]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/14837
[i915#180]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/180
Build changes
-------------
* Linux: CI_DRM_17030 -> Patchwork_152519v2
CI-20190529: 20190529
CI_DRM_17030: deb6c5d08f8b84ea7e019b7682631c6375cc17aa @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_8496: acea60af09e5f4b3cb0cd6838c23ef1e92c17323 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_152519v2: deb6c5d08f8b84ea7e019b7682631c6375cc17aa @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_152519v2/index.html
[-- Attachment #2: Type: text/html, Size: 7088 bytes --]
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [RESEND 00/12] drm/i915: vlv clock cleanups
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
` (12 preceding siblings ...)
2025-08-19 13:51 ` ✗ i915.CI.BAT: failure for drm/i915: vlv clock cleanups (rev2) Patchwork
@ 2025-09-02 15:01 ` Michał Grzelak
13 siblings, 0 replies; 15+ messages in thread
From: Michał Grzelak @ 2025-09-02 15:01 UTC (permalink / raw)
To: jani.nikula, intel-gfx, intel-xe; +Cc: mika.kahola, Michał Grzelak
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1792 bytes --]
Hi Jani,
> Rebase and resend of [1].
>
> [1] https://lore.kernel.org/r/cover.1754385408.git.jani.nikula@intel.com
>
> Jani Nikula (12):
> drm/i915: add vlv_clock_get_gpll()
> drm/i915: add vlv_clock_get_czclk()
> drm/i915: add vlv_clock_get_hrawclk()
> drm/i915: make vlv_get_cck_clock_hpll() static
> drm/i915: add vlv_clock_get_cdclk()
> drm/i915: make vlv_get_cck_clock() static
> drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco()
> drm/i915: cache the results in vlv_clock_get_hpll_vco() and use it
> more
> drm/i915: remove intel_update_czclk() as unnecessary
> drm/i915: log HPLL frequency similar to CZCLK
> drm/i915: move hpll and czclk caching under display
> drm/i915: split out vlv_clock.[ch]
>
> drivers/gpu/drm/i915/Makefile | 1 +
> drivers/gpu/drm/i915/display/intel_cdclk.c | 29 ++----
> drivers/gpu/drm/i915/display/intel_display.c | 61 -------------
> drivers/gpu/drm/i915/display/intel_display.h | 6 --
> .../gpu/drm/i915/display/intel_display_core.h | 5 ++
> .../drm/i915/display/intel_display_driver.c | 1 -
> drivers/gpu/drm/i915/display/vlv_clock.c | 89 +++++++++++++++++++
> drivers/gpu/drm/i915/display/vlv_clock.h | 38 ++++++++
> drivers/gpu/drm/i915/gt/intel_rc6.c | 3 +-
> drivers/gpu/drm/i915/gt/intel_rps.c | 11 ++-
> drivers/gpu/drm/i915/i915_drv.h | 3 -
> drivers/gpu/drm/xe/xe_device_types.h | 6 --
> 12 files changed, 148 insertions(+), 105 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/display/vlv_clock.c
> create mode 100644 drivers/gpu/drm/i915/display/vlv_clock.h
>
> --
> 2.47.2
>
>
Entire series looks good to me.
Reviewed-by: Michał Grzelak <michal.grzelak@intel.com>
Best regards,
Michał
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2025-09-02 15:00 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-19 12:53 [RESEND 00/12] drm/i915: vlv clock cleanups Jani Nikula
2025-08-19 12:53 ` [RESEND 01/12] drm/i915: add vlv_clock_get_gpll() Jani Nikula
2025-08-19 12:53 ` [RESEND 02/12] drm/i915: add vlv_clock_get_czclk() Jani Nikula
2025-08-19 12:53 ` [RESEND 03/12] drm/i915: add vlv_clock_get_hrawclk() Jani Nikula
2025-08-19 12:53 ` [RESEND 04/12] drm/i915: make vlv_get_cck_clock_hpll() static Jani Nikula
2025-08-19 12:53 ` [RESEND 05/12] drm/i915: add vlv_clock_get_cdclk() Jani Nikula
2025-08-19 12:53 ` [RESEND 06/12] drm/i915: make vlv_get_cck_clock() static Jani Nikula
2025-08-19 12:53 ` [RESEND 07/12] drm/i915: rename vlv_get_hpll_vco() to vlv_clock_get_hpll_vco() Jani Nikula
2025-08-19 12:53 ` [RESEND 08/12] drm/i915: cache the results in vlv_clock_get_hpll_vco() and use it more Jani Nikula
2025-08-19 12:53 ` [RESEND 09/12] drm/i915: remove intel_update_czclk() as unnecessary Jani Nikula
2025-08-19 12:53 ` [RESEND 10/12] drm/i915: log HPLL frequency similar to CZCLK Jani Nikula
2025-08-19 12:53 ` [RESEND 11/12] drm/i915: move hpll and czclk caching under display Jani Nikula
2025-08-19 12:53 ` [RESEND 12/12] drm/i915: split out vlv_clock.[ch] Jani Nikula
2025-08-19 13:51 ` ✗ i915.CI.BAT: failure for drm/i915: vlv clock cleanups (rev2) Patchwork
2025-09-02 15:01 ` [RESEND 00/12] drm/i915: vlv clock cleanups Michał Grzelak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).