All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
@ 2023-11-24 20:55 Gustavo Sousa
  2023-11-24 21:57 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Gustavo Sousa @ 2023-11-24 20:55 UTC (permalink / raw)
  To: intel-gfx; +Cc: Matt Roper

The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
Use literal representation of cdclk tables"). It has been almost 4 years
and the divider field was not really used yet. Let's remove it.

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
 drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
 1 file changed, 134 insertions(+), 135 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index b93d1ad7936d..7f85a216ff5c 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
 	u32 cdclk;
 	u16 refclk;
 	u16 waveform;
-	u8 divider;	/* CD2X divider * 2 */
 	u8 ratio;
 };
 
 static const struct intel_cdclk_vals bxt_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
-	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
-	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
-	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
-	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
+	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
+	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
+	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
+	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
+	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
 	{}
 };
 
 static const struct intel_cdclk_vals glk_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
-	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
-	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
+	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
+	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
+	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
 	{}
 };
 
 static const struct intel_cdclk_vals icl_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
-	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
-	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
-	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
-	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
-	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
-
-	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
-	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
-	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
-	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
-	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
-	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
-
-	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
-	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
-	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
-	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
+	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
+	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
+	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
+	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
+	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
+	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
+
+	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
+	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
+	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
+	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
+	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
+	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
+
+	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
+	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
+	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
 	{}
 };
 
 static const struct intel_cdclk_vals rkl_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
-	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
-	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
-	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
-	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
-	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
-
-	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
-	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
-	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
-	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
-	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
-	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
-
-	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
-	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
-	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
-	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
+	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
+	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
+	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
+	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
+	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
+	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
+
+	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
+	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
+	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
+	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
+	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
+	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
+
+	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
+	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
+	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
 	{}
 };
 
 static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
-	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
-	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
+	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
+	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
+	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
 
-	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
-	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
-	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
+	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
+	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
+	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
 
-	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
 	{}
 };
 
 static const struct intel_cdclk_vals adlp_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
-	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
-	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
-	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
-	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
-
-	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
-	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
-	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
-	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
-	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
-
-	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
-	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
-	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
+	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
+	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
+	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
+	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
+	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
+
+	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
+	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
+	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
+	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
+	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
+
+	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
+	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
 	{}
 };
 
 static const struct intel_cdclk_vals rplu_cdclk_table[] = {
-	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
-	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
-	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
-	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
-	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
-	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
-
-	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
-	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
-	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
-	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
-	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
-	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
-
-	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
-	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
-	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
-	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
+	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
+	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
+	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
+	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
+	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
+	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
+
+	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
+	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
+	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
+	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
+	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
+	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
+
+	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
+	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
+	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
 	{}
 };
 
 static const struct intel_cdclk_vals dg2_cdclk_table[] = {
-	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
-	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
-	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
-	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
-	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
-	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
-	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
-	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
-	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
-	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
-	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
-	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
+	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
+	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
+	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
+	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
+	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
+	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
+	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
+	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
+	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
+	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
+	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
+	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
 	{}
 };
 
 static const struct intel_cdclk_vals mtl_cdclk_table[] = {
-	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
-	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
-	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
-	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
+	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
+	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
+	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
 	{}
 };
 
 static const struct intel_cdclk_vals lnl_cdclk_table[] = {
-	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
-	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
-	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
-	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
-	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
-	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
-	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
-	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
-	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
-	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
-	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
-	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
-	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
-	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
-	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
-	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
-	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
-	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
-	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
-	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
-	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
+	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
+	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
+	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
+	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
+	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
+	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
+	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
+	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
+	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
+	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
+	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
+	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
+	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
+	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
+	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
+	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
+	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
+	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
+	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
+	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
+	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
 	{}
 };
 
-- 
2.42.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/cdclk: Remove divider field from tables
  2023-11-24 20:55 [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables Gustavo Sousa
@ 2023-11-24 21:57 ` Patchwork
  2023-11-26  4:12 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
  2023-11-27 16:21 ` [Intel-gfx] [PATCH] " Matt Roper
  2 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-11-24 21:57 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 15878 bytes --]

== Series Details ==

Series: drm/i915/cdclk: Remove divider field from tables
URL   : https://patchwork.freedesktop.org/series/126883/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_13921 -> Patchwork_126883v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/index.html

Participating hosts (37 -> 36)
------------------------------

  Additional (3): bat-dg2-8 bat-dg2-9 bat-mtlp-8 
  Missing    (4): bat-rpls-1 bat-adlp-11 fi-snb-2520m fi-pnv-d510 

Known issues
------------

  Here are the changes found in Patchwork_126883v1 that come from known issues:

### CI changes ###

#### Possible fixes ####

  * boot:
    - fi-bsw-n3050:       [FAIL][1] ([i915#8293]) -> [PASS][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/fi-bsw-n3050/boot.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/fi-bsw-n3050/boot.html

  

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - bat-mtlp-8:         NOTRUN -> [SKIP][3] ([i915#9318])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@debugfs_test@basic-hwmon.html

  * igt@gem_lmem_swapping@random-engines:
    - fi-bsw-n3050:       NOTRUN -> [SKIP][4] ([fdo#109271]) +14 other tests skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/fi-bsw-n3050/igt@gem_lmem_swapping@random-engines.html

  * igt@gem_lmem_swapping@verify-random:
    - bat-mtlp-8:         NOTRUN -> [SKIP][5] ([i915#4613]) +3 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@gem_lmem_swapping@verify-random.html

  * igt@gem_mmap@basic:
    - bat-dg2-9:          NOTRUN -> [SKIP][6] ([i915#4083])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@gem_mmap@basic.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][7] ([i915#4083])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@gem_mmap@basic.html
    - bat-dg2-8:          NOTRUN -> [SKIP][8] ([i915#4083])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@gem_mmap@basic.html

  * igt@gem_mmap_gtt@basic:
    - bat-dg2-9:          NOTRUN -> [SKIP][9] ([i915#4077]) +2 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@gem_mmap_gtt@basic.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][10] ([i915#4077]) +2 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@gem_mmap_gtt@basic.html
    - bat-dg2-8:          NOTRUN -> [SKIP][11] ([i915#4077]) +2 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@gem_mmap_gtt@basic.html

  * igt@gem_render_tiled_blits@basic:
    - bat-dg2-9:          NOTRUN -> [SKIP][12] ([i915#4079]) +1 other test skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@gem_render_tiled_blits@basic.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][13] ([i915#4079]) +1 other test skip
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@gem_render_tiled_blits@basic.html

  * igt@gem_tiled_pread_basic:
    - bat-dg2-8:          NOTRUN -> [SKIP][14] ([i915#4079]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@gem_tiled_pread_basic.html

  * igt@i915_pm_rps@basic-api:
    - bat-dg2-9:          NOTRUN -> [SKIP][15] ([i915#6621])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@i915_pm_rps@basic-api.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][16] ([i915#6621])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@i915_pm_rps@basic-api.html
    - bat-dg2-8:          NOTRUN -> [SKIP][17] ([i915#6621])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@i915_pm_rps@basic-api.html

  * igt@i915_suspend@basic-s3-without-i915:
    - bat-mtlp-8:         NOTRUN -> [SKIP][18] ([i915#6645])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@i915_suspend@basic-s3-without-i915.html
    - bat-dg2-8:          NOTRUN -> [SKIP][19] ([i915#6645])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-dg2-9:          NOTRUN -> [SKIP][20] ([i915#5190])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][21] ([i915#5190])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
    - bat-dg2-8:          NOTRUN -> [SKIP][22] ([i915#5190])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_addfb_basic@basic-y-tiled-legacy:
    - bat-dg2-9:          NOTRUN -> [SKIP][23] ([i915#4215] / [i915#5190])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][24] ([i915#4212]) +8 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html
    - bat-dg2-8:          NOTRUN -> [SKIP][25] ([i915#4215] / [i915#5190])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_addfb_basic@basic-y-tiled-legacy.html

  * igt@kms_addfb_basic@framebuffer-vs-set-tiling:
    - bat-dg2-9:          NOTRUN -> [SKIP][26] ([i915#4212]) +6 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html
    - bat-dg2-8:          NOTRUN -> [SKIP][27] ([i915#4212]) +6 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_addfb_basic@framebuffer-vs-set-tiling.html

  * igt@kms_addfb_basic@tile-pitch-mismatch:
    - bat-dg2-9:          NOTRUN -> [SKIP][28] ([i915#4212] / [i915#5608])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_addfb_basic@tile-pitch-mismatch.html
    - bat-dg2-8:          NOTRUN -> [SKIP][29] ([i915#4212] / [i915#5608])
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_addfb_basic@tile-pitch-mismatch.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-dg2-9:          NOTRUN -> [SKIP][30] ([i915#4103] / [i915#4213] / [i915#5608]) +1 other test skip
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][31] ([i915#4213]) +1 other test skip
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html
    - bat-dg2-8:          NOTRUN -> [SKIP][32] ([i915#4103] / [i915#4213] / [i915#5608]) +1 other test skip
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-mtlp-8:         NOTRUN -> [SKIP][33] ([i915#3555] / [i915#3840] / [i915#4098] / [i915#9159])
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-dg2-9:          NOTRUN -> [SKIP][34] ([fdo#109285])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_force_connector_basic@force-load-detect.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][35] ([fdo#109285])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_force_connector_basic@force-load-detect.html
    - bat-dg2-8:          NOTRUN -> [SKIP][36] ([fdo#109285])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_force_connector_basic@prune-stale-modes:
    - bat-dg2-9:          NOTRUN -> [SKIP][37] ([i915#5274])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][38] ([i915#5274])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_force_connector_basic@prune-stale-modes.html
    - bat-dg2-8:          NOTRUN -> [SKIP][39] ([i915#5274])
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_force_connector_basic@prune-stale-modes.html

  * igt@kms_hdmi_inject@inject-audio:
    - fi-kbl-guc:         [PASS][40] -> [FAIL][41] ([IGT#3])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/fi-kbl-guc/igt@kms_hdmi_inject@inject-audio.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/fi-kbl-guc/igt@kms_hdmi_inject@inject-audio.html
    - fi-bsw-n3050:       NOTRUN -> [FAIL][42] ([IGT#152])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/fi-bsw-n3050/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-dg2-9:          NOTRUN -> [SKIP][43] ([i915#3555] / [i915#4098])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][44] ([i915#3555] / [i915#8809])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@kms_setmode@basic-clone-single-crtc.html
    - bat-dg2-8:          NOTRUN -> [SKIP][45] ([i915#3555] / [i915#4098])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-flip:
    - bat-dg2-9:          NOTRUN -> [SKIP][46] ([i915#3708])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@prime_vgem@basic-fence-flip.html
    - bat-dg2-8:          NOTRUN -> [SKIP][47] ([i915#3708])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-fence-mmap:
    - bat-dg2-8:          NOTRUN -> [SKIP][48] ([i915#3708] / [i915#4077]) +1 other test skip
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@prime_vgem@basic-fence-mmap.html
    - bat-dg2-9:          NOTRUN -> [SKIP][49] ([i915#3708] / [i915#4077]) +1 other test skip
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@prime_vgem@basic-fence-mmap.html
    - bat-mtlp-8:         NOTRUN -> [SKIP][50] ([i915#3708] / [i915#4077]) +1 other test skip
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@prime_vgem@basic-fence-mmap.html

  * igt@prime_vgem@basic-fence-read:
    - bat-mtlp-8:         NOTRUN -> [SKIP][51] ([i915#3708]) +2 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-mtlp-8/igt@prime_vgem@basic-fence-read.html

  * igt@prime_vgem@basic-write:
    - bat-dg2-9:          NOTRUN -> [SKIP][52] ([i915#3291] / [i915#3708]) +2 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-9/igt@prime_vgem@basic-write.html
    - bat-dg2-8:          NOTRUN -> [SKIP][53] ([i915#3291] / [i915#3708]) +2 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-dg2-8/igt@prime_vgem@basic-write.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_heartbeat:
    - fi-kbl-7567u:       [DMESG-FAIL][54] ([i915#5334] / [i915#7872]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/fi-kbl-7567u/igt@i915_selftest@live@gt_heartbeat.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/fi-kbl-7567u/igt@i915_selftest@live@gt_heartbeat.html
    - fi-apl-guc:         [DMESG-FAIL][56] ([i915#5334]) -> [PASS][57]
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html

  * igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-d-edp-1:
    - bat-rplp-1:         [ABORT][58] ([i915#8668]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/bat-rplp-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-d-edp-1.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/bat-rplp-1/igt@kms_pipe_crc_basic@read-crc-frame-sequence@pipe-d-edp-1.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#152]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/152
  [IGT#3]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/3
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5608]: https://gitlab.freedesktop.org/drm/intel/issues/5608
  [i915#6621]: https://gitlab.freedesktop.org/drm/intel/issues/6621
  [i915#6645]: https://gitlab.freedesktop.org/drm/intel/issues/6645
  [i915#7872]: https://gitlab.freedesktop.org/drm/intel/issues/7872
  [i915#8293]: https://gitlab.freedesktop.org/drm/intel/issues/8293
  [i915#8668]: https://gitlab.freedesktop.org/drm/intel/issues/8668
  [i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
  [i915#9159]: https://gitlab.freedesktop.org/drm/intel/issues/9159
  [i915#9318]: https://gitlab.freedesktop.org/drm/intel/issues/9318
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673


Build changes
-------------

  * Linux: CI_DRM_13921 -> Patchwork_126883v1

  CI-20190529: 20190529
  CI_DRM_13921: 002e96d8067fa253ee53af2fa191717f4f5b782b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7603: 2ddd8cac90d4333943cd017319514949b047821b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_126883v1: 002e96d8067fa253ee53af2fa191717f4f5b782b @ git://anongit.freedesktop.org/gfx-ci/linux


### Linux commits

bffa647638c7 drm/i915/cdclk: Remove divider field from tables

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/index.html

[-- Attachment #2: Type: text/html, Size: 20496 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/cdclk: Remove divider field from tables
  2023-11-24 20:55 [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables Gustavo Sousa
  2023-11-24 21:57 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
@ 2023-11-26  4:12 ` Patchwork
  2023-11-27 16:21 ` [Intel-gfx] [PATCH] " Matt Roper
  2 siblings, 0 replies; 14+ messages in thread
From: Patchwork @ 2023-11-26  4:12 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 64988 bytes --]

== Series Details ==

Series: drm/i915/cdclk: Remove divider field from tables
URL   : https://patchwork.freedesktop.org/series/126883/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_13921_full -> Patchwork_126883v1_full
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_126883v1_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_126883v1_full, 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.

  

Participating hosts (11 -> 11)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in Patchwork_126883v1_full:

### IGT changes ###

#### Possible regressions ####

  * igt@gem_eio@unwedge-stress:
    - shard-mtlp:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-7/igt@gem_eio@unwedge-stress.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-4/igt@gem_eio@unwedge-stress.html

  * igt@gem_ppgtt@blt-vs-render-ctx0:
    - shard-glk:          [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk7/igt@gem_ppgtt@blt-vs-render-ctx0.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk8/igt@gem_ppgtt@blt-vs-render-ctx0.html

  * igt@kms_flip@plain-flip-fb-recreate@a-hdmi-a1:
    - shard-snb:          NOTRUN -> [INCOMPLETE][5]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-snb1/igt@kms_flip@plain-flip-fb-recreate@a-hdmi-a1.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@kms_psr@psr2_dpms@edp-1}:
    - shard-mtlp:         NOTRUN -> [FAIL][6]
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_psr@psr2_dpms@edp-1.html

  
Known issues
------------

  Here are the changes found in Patchwork_126883v1_full that come from known issues:

### CI changes ###

#### Possible fixes ####

  * boot:
    - shard-glk:          ([FAIL][7], [PASS][8], [PASS][9], [PASS][10], [PASS][11], [PASS][12], [PASS][13], [PASS][14], [PASS][15], [PASS][16], [PASS][17], [PASS][18], [PASS][19], [PASS][20], [PASS][21], [PASS][22], [PASS][23], [PASS][24], [PASS][25], [PASS][26], [PASS][27], [PASS][28], [PASS][29], [PASS][30], [PASS][31]) ([i915#8293]) -> ([PASS][32], [PASS][33], [PASS][34], [PASS][35], [PASS][36], [PASS][37], [PASS][38], [PASS][39], [PASS][40], [PASS][41], [PASS][42], [PASS][43], [PASS][44], [PASS][45], [PASS][46], [PASS][47], [PASS][48], [PASS][49], [PASS][50], [PASS][51], [PASS][52], [PASS][53], [PASS][54], [PASS][55])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk1/boot.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk1/boot.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk1/boot.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk2/boot.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk2/boot.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk2/boot.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk3/boot.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk3/boot.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk3/boot.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk4/boot.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk4/boot.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk4/boot.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk5/boot.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk5/boot.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk5/boot.html
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk6/boot.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk6/boot.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk6/boot.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk7/boot.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk7/boot.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk7/boot.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk8/boot.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk8/boot.html
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk9/boot.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk9/boot.html
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk1/boot.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk1/boot.html
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk1/boot.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk2/boot.html
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk2/boot.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk2/boot.html
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk3/boot.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk3/boot.html
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk3/boot.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk4/boot.html
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk4/boot.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk4/boot.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk5/boot.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk5/boot.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk5/boot.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk6/boot.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk6/boot.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk6/boot.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk7/boot.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk8/boot.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk8/boot.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk8/boot.html
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk9/boot.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk9/boot.html

  

### IGT changes ###

#### Issues hit ####

  * igt@api_intel_bb@blit-reloc-keep-cache:
    - shard-mtlp:         NOTRUN -> [SKIP][56] ([i915#8411])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@api_intel_bb@blit-reloc-keep-cache.html

  * igt@api_intel_bb@object-noreloc-keep-cache-simple:
    - shard-snb:          NOTRUN -> [SKIP][57] ([fdo#109271]) +63 other tests skip
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-snb4/igt@api_intel_bb@object-noreloc-keep-cache-simple.html

  * igt@drm_fdinfo@all-busy-idle-check-all:
    - shard-mtlp:         NOTRUN -> [SKIP][58] ([i915#8414]) +1 other test skip
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-5/igt@drm_fdinfo@all-busy-idle-check-all.html

  * igt@drm_fdinfo@most-busy-check-all@bcs0:
    - shard-dg2:          NOTRUN -> [SKIP][59] ([i915#8414]) +31 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@drm_fdinfo@most-busy-check-all@bcs0.html

  * igt@gem_barrier_race@remote-request@rcs0:
    - shard-glk:          [PASS][60] -> [ABORT][61] ([i915#8190])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk7/igt@gem_barrier_race@remote-request@rcs0.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk3/igt@gem_barrier_race@remote-request@rcs0.html

  * igt@gem_ccs@block-copy-compressed:
    - shard-mtlp:         NOTRUN -> [SKIP][62] ([i915#3555])
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_ccs@block-copy-compressed.html

  * igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0:
    - shard-dg2:          [PASS][63] -> [INCOMPLETE][64] ([i915#7297])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg2-2/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@gem_ccs@suspend-resume@linear-compressed-compfmt0-smem-lmem0.html

  * igt@gem_close_race@multigpu-basic-process:
    - shard-tglu:         NOTRUN -> [SKIP][65] ([i915#7697])
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@gem_close_race@multigpu-basic-process.html

  * igt@gem_create@create-ext-cpu-access-sanity-check:
    - shard-mtlp:         NOTRUN -> [SKIP][66] ([i915#6335])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_create@create-ext-cpu-access-sanity-check.html

  * igt@gem_create@create-ext-set-pat:
    - shard-dg2:          NOTRUN -> [SKIP][67] ([i915#8562])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@gem_create@create-ext-set-pat.html

  * igt@gem_ctx_persistence@engines-hostile:
    - shard-snb:          NOTRUN -> [SKIP][68] ([fdo#109271] / [i915#1099]) +1 other test skip
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-snb4/igt@gem_ctx_persistence@engines-hostile.html

  * igt@gem_ctx_persistence@heartbeat-hang:
    - shard-dg2:          NOTRUN -> [SKIP][69] ([i915#8555]) +1 other test skip
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_ctx_persistence@heartbeat-hang.html

  * igt@gem_ctx_persistence@heartbeat-stop:
    - shard-mtlp:         NOTRUN -> [SKIP][70] ([i915#8555])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_ctx_persistence@heartbeat-stop.html

  * igt@gem_eio@context-create:
    - shard-mtlp:         [PASS][71] -> [ABORT][72] ([i915#9414])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-5/igt@gem_eio@context-create.html
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-4/igt@gem_eio@context-create.html

  * igt@gem_eio@hibernate:
    - shard-dg2:          NOTRUN -> [ABORT][73] ([i915#7975] / [i915#8213])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@gem_eio@hibernate.html

  * igt@gem_eio@reset-stress:
    - shard-dg2:          NOTRUN -> [FAIL][74] ([i915#5784])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_eio@reset-stress.html

  * igt@gem_exec_balancer@bonded-false-hang:
    - shard-mtlp:         NOTRUN -> [SKIP][75] ([i915#4812]) +1 other test skip
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_exec_balancer@bonded-false-hang.html

  * igt@gem_exec_balancer@bonded-pair:
    - shard-dg2:          NOTRUN -> [SKIP][76] ([i915#4771])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_exec_balancer@bonded-pair.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-glk:          [PASS][77] -> [FAIL][78] ([i915#2842])
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk4/igt@gem_exec_fair@basic-none-share@rcs0.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk3/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none-vip@rcs0:
    - shard-tglu:         NOTRUN -> [FAIL][79] ([i915#2842]) +1 other test fail
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@gem_exec_fair@basic-none-vip@rcs0.html

  * igt@gem_exec_fair@basic-pace:
    - shard-mtlp:         NOTRUN -> [SKIP][80] ([i915#4473] / [i915#4771]) +1 other test skip
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@gem_exec_fair@basic-pace.html

  * igt@gem_exec_fair@basic-pace-solo:
    - shard-dg2:          NOTRUN -> [SKIP][81] ([i915#3539])
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@gem_exec_fair@basic-pace-solo.html

  * igt@gem_exec_fence@submit:
    - shard-dg2:          NOTRUN -> [SKIP][82] ([i915#4812]) +1 other test skip
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_exec_fence@submit.html

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
    - shard-dg2:          NOTRUN -> [SKIP][83] ([i915#3539] / [i915#4852]) +2 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html

  * igt@gem_exec_gttfill@multigpu-basic:
    - shard-dg2:          NOTRUN -> [SKIP][84] ([i915#7697]) +1 other test skip
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_exec_gttfill@multigpu-basic.html

  * igt@gem_exec_params@rsvd2-dirt:
    - shard-dg2:          NOTRUN -> [SKIP][85] ([fdo#109283] / [i915#5107])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@gem_exec_params@rsvd2-dirt.html

  * igt@gem_exec_reloc@basic-gtt-cpu-noreloc:
    - shard-mtlp:         NOTRUN -> [SKIP][86] ([i915#3281]) +5 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@gem_exec_reloc@basic-gtt-cpu-noreloc.html

  * igt@gem_exec_reloc@basic-gtt-wc:
    - shard-dg2:          NOTRUN -> [SKIP][87] ([i915#3281]) +5 other tests skip
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@gem_exec_reloc@basic-gtt-wc.html

  * igt@gem_exec_schedule@preempt-queue-chain:
    - shard-dg2:          NOTRUN -> [SKIP][88] ([i915#4537] / [i915#4812])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_exec_schedule@preempt-queue-chain.html

  * igt@gem_exec_schedule@preempt-queue-contexts:
    - shard-mtlp:         NOTRUN -> [SKIP][89] ([i915#4537] / [i915#4812])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-5/igt@gem_exec_schedule@preempt-queue-contexts.html

  * igt@gem_fence_thrash@bo-copy:
    - shard-dg2:          NOTRUN -> [SKIP][90] ([i915#4860]) +3 other tests skip
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_fence_thrash@bo-copy.html

  * igt@gem_fenced_exec_thrash@no-spare-fences-busy:
    - shard-mtlp:         NOTRUN -> [SKIP][91] ([i915#4860])
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_fenced_exec_thrash@no-spare-fences-busy.html

  * igt@gem_lmem_swapping@heavy-multi:
    - shard-glk:          NOTRUN -> [SKIP][92] ([fdo#109271] / [i915#4613])
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk1/igt@gem_lmem_swapping@heavy-multi.html
    - shard-mtlp:         NOTRUN -> [SKIP][93] ([i915#4613])
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_lmem_swapping@heavy-multi.html

  * igt@gem_lmem_swapping@smem-oom:
    - shard-tglu:         NOTRUN -> [SKIP][94] ([i915#4613])
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@gem_lmem_swapping@smem-oom.html

  * igt@gem_media_vme:
    - shard-dg2:          NOTRUN -> [SKIP][95] ([i915#284])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@gem_media_vme.html

  * igt@gem_mmap@short-mmap:
    - shard-dg2:          NOTRUN -> [SKIP][96] ([i915#4083]) +6 other tests skip
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_mmap@short-mmap.html

  * igt@gem_mmap_gtt@close-race:
    - shard-mtlp:         NOTRUN -> [SKIP][97] ([i915#4077]) +2 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_mmap_gtt@close-race.html

  * igt@gem_mmap_gtt@zero-extend:
    - shard-dg2:          NOTRUN -> [SKIP][98] ([i915#4077]) +9 other tests skip
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@gem_mmap_gtt@zero-extend.html

  * igt@gem_mmap_wc@write:
    - shard-mtlp:         NOTRUN -> [SKIP][99] ([i915#4083]) +2 other tests skip
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_mmap_wc@write.html

  * igt@gem_pread@exhaustion:
    - shard-snb:          NOTRUN -> [WARN][100] ([i915#2658])
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-snb4/igt@gem_pread@exhaustion.html
    - shard-tglu:         NOTRUN -> [WARN][101] ([i915#2658])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@gem_pread@exhaustion.html

  * igt@gem_pread@snoop:
    - shard-mtlp:         NOTRUN -> [SKIP][102] ([i915#3282]) +1 other test skip
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@gem_pread@snoop.html

  * igt@gem_pwrite@basic-random:
    - shard-dg2:          NOTRUN -> [SKIP][103] ([i915#3282]) +5 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@gem_pwrite@basic-random.html

  * igt@gem_pxp@reject-modify-context-protection-off-2:
    - shard-tglu:         NOTRUN -> [SKIP][104] ([i915#4270])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@gem_pxp@reject-modify-context-protection-off-2.html

  * igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
    - shard-dg2:          NOTRUN -> [SKIP][105] ([i915#4270]) +4 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html

  * igt@gem_pxp@verify-pxp-key-change-after-suspend-resume:
    - shard-mtlp:         NOTRUN -> [SKIP][106] ([i915#4270])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gem_pxp@verify-pxp-key-change-after-suspend-resume.html

  * igt@gem_render_copy@linear-to-vebox-y-tiled:
    - shard-mtlp:         NOTRUN -> [SKIP][107] ([i915#8428]) +5 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@gem_render_copy@linear-to-vebox-y-tiled.html

  * igt@gem_userptr_blits@access-control:
    - shard-mtlp:         NOTRUN -> [SKIP][108] ([i915#3297]) +1 other test skip
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@gem_userptr_blits@access-control.html

  * igt@gem_userptr_blits@coherency-sync:
    - shard-tglu:         NOTRUN -> [SKIP][109] ([fdo#110542])
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@gem_userptr_blits@coherency-sync.html

  * igt@gem_userptr_blits@invalid-mmap-offset-unsync:
    - shard-tglu:         NOTRUN -> [SKIP][110] ([i915#3297])
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html

  * igt@gem_userptr_blits@map-fixed-invalidate:
    - shard-dg2:          NOTRUN -> [SKIP][111] ([i915#3297] / [i915#4880])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@gem_userptr_blits@map-fixed-invalidate.html

  * igt@gem_userptr_blits@sd-probe:
    - shard-dg2:          NOTRUN -> [SKIP][112] ([i915#3297] / [i915#4958])
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@gem_userptr_blits@sd-probe.html

  * igt@gen3_render_tiledy_blits:
    - shard-mtlp:         NOTRUN -> [SKIP][113] ([fdo#109289]) +3 other tests skip
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@gen3_render_tiledy_blits.html

  * igt@gen7_exec_parse@cmd-crossing-page:
    - shard-dg2:          NOTRUN -> [SKIP][114] ([fdo#109289])
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@gen7_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@basic-rejected:
    - shard-tglu:         NOTRUN -> [SKIP][115] ([i915#2527] / [i915#2856]) +1 other test skip
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@gen9_exec_parse@basic-rejected.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-mtlp:         NOTRUN -> [SKIP][116] ([i915#2856]) +2 other tests skip
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@gen9_exec_parse@secure-batches:
    - shard-dg2:          NOTRUN -> [SKIP][117] ([i915#2856]) +3 other tests skip
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@gen9_exec_parse@secure-batches.html

  * igt@i915_module_load@load:
    - shard-dg2:          NOTRUN -> [SKIP][118] ([i915#6227])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@i915_module_load@load.html

  * igt@i915_query@query-topology-known-pci-ids:
    - shard-mtlp:         NOTRUN -> [SKIP][119] ([fdo#109303])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@i915_query@query-topology-known-pci-ids.html

  * igt@i915_selftest@live@workarounds:
    - shard-dg1:          [PASS][120] -> [ABORT][121] ([i915#9413])
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg1-18/igt@i915_selftest@live@workarounds.html
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg1-12/igt@i915_selftest@live@workarounds.html

  * igt@kms_addfb_basic@addfb25-x-tiled-legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][122] ([i915#4212])
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_addfb_basic@addfb25-x-tiled-legacy.html

  * igt@kms_addfb_basic@basic-x-tiled-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][123] ([i915#4212]) +1 other test skip
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_addfb_basic@basic-x-tiled-legacy.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-dg2:          NOTRUN -> [SKIP][124] ([i915#1769] / [i915#3555])
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html
    - shard-tglu:         NOTRUN -> [SKIP][125] ([i915#1769] / [i915#3555])
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-180:
    - shard-tglu:         NOTRUN -> [SKIP][126] ([fdo#111615] / [i915#5286]) +1 other test skip
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_big_fb@4-tiled-64bpp-rotate-180.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][127] ([fdo#111614]) +2 other tests skip
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-addfb:
    - shard-tglu:         NOTRUN -> [SKIP][128] ([i915#5286])
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_big_fb@4-tiled-addfb.html

  * igt@kms_big_fb@x-tiled-64bpp-rotate-90:
    - shard-mtlp:         NOTRUN -> [SKIP][129] ([fdo#111614]) +6 other tests skip
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_big_fb@x-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-tglu:         NOTRUN -> [FAIL][130] ([i915#3743])
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@y-tiled-8bpp-rotate-180:
    - shard-dg2:          NOTRUN -> [SKIP][131] ([i915#5190]) +9 other tests skip
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_big_fb@y-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - shard-tglu:         [PASS][132] -> [FAIL][133] ([i915#3743])
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-tglu-8/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip.html

  * igt@kms_big_fb@yf-tiled-16bpp-rotate-0:
    - shard-tglu:         NOTRUN -> [SKIP][134] ([fdo#111615]) +1 other test skip
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_big_fb@yf-tiled-16bpp-rotate-0.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-90:
    - shard-dg2:          NOTRUN -> [SKIP][135] ([i915#4538] / [i915#5190]) +4 other tests skip
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_big_fb@yf-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow:
    - shard-mtlp:         NOTRUN -> [SKIP][136] ([i915#6187])
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_big_fb@yf-tiled-addfb-size-offset-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - shard-mtlp:         NOTRUN -> [SKIP][137] ([fdo#111615]) +4 other tests skip
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180.html

  * igt@kms_big_joiner@basic:
    - shard-tglu:         NOTRUN -> [SKIP][138] ([i915#2705])
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_big_joiner@basic.html

  * igt@kms_big_joiner@invalid-modeset:
    - shard-dg2:          NOTRUN -> [SKIP][139] ([i915#2705]) +1 other test skip
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_big_joiner@invalid-modeset.html

  * igt@kms_cdclk@mode-transition@pipe-d-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][140] ([i915#4087] / [i915#7213]) +3 other tests skip
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-11/igt@kms_cdclk@mode-transition@pipe-d-dp-4.html

  * igt@kms_cdclk@plane-scaling:
    - shard-tglu:         NOTRUN -> [SKIP][141] ([i915#3742])
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium_color@ctm-0-25:
    - shard-tglu:         NOTRUN -> [SKIP][142] ([fdo#111827])
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_chamelium_color@ctm-0-25.html

  * igt@kms_chamelium_color@ctm-max:
    - shard-glk:          NOTRUN -> [SKIP][143] ([fdo#109271]) +41 other tests skip
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk1/igt@kms_chamelium_color@ctm-max.html
    - shard-mtlp:         NOTRUN -> [SKIP][144] ([fdo#111827])
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_chamelium_color@ctm-max.html

  * igt@kms_chamelium_color@degamma:
    - shard-dg2:          NOTRUN -> [SKIP][145] ([fdo#111827]) +2 other tests skip
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_chamelium_color@degamma.html

  * igt@kms_chamelium_frames@hdmi-crc-multiple:
    - shard-dg2:          NOTRUN -> [SKIP][146] ([i915#7828]) +4 other tests skip
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_chamelium_frames@hdmi-crc-multiple.html

  * igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats:
    - shard-tglu:         NOTRUN -> [SKIP][147] ([i915#7828]) +3 other tests skip
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_chamelium_frames@hdmi-crc-nonplanar-formats.html

  * igt@kms_chamelium_hpd@dp-hpd-for-each-pipe:
    - shard-mtlp:         NOTRUN -> [SKIP][148] ([i915#7828]) +5 other tests skip
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_chamelium_hpd@dp-hpd-for-each-pipe.html

  * igt@kms_content_protection@legacy:
    - shard-mtlp:         NOTRUN -> [SKIP][149] ([i915#6944])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_content_protection@legacy.html

  * igt@kms_content_protection@srm:
    - shard-dg2:          NOTRUN -> [SKIP][150] ([i915#7118]) +2 other tests skip
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-mtlp:         NOTRUN -> [SKIP][151] ([i915#3555] / [i915#8814]) +3 other tests skip
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_crc@cursor-onscreen-32x32:
    - shard-tglu:         NOTRUN -> [SKIP][152] ([i915#3555]) +3 other tests skip
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_cursor_crc@cursor-onscreen-32x32.html

  * igt@kms_cursor_crc@cursor-random-512x170:
    - shard-dg2:          NOTRUN -> [SKIP][153] ([i915#3359]) +4 other tests skip
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_cursor_crc@cursor-random-512x170.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
    - shard-tglu:         NOTRUN -> [SKIP][154] ([fdo#109274])
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][155] ([fdo#109274] / [i915#5354]) +3 other tests skip
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - shard-dg2:          NOTRUN -> [SKIP][156] ([i915#4103] / [i915#4213] / [i915#5608])
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipa-atomic:
    - shard-mtlp:         NOTRUN -> [SKIP][157] ([i915#3546])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_cursor_legacy@cursorb-vs-flipa-atomic.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [PASS][158] -> [FAIL][159] ([i915#2346])
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk2/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@forked-bo@all-pipes:
    - shard-mtlp:         [PASS][160] -> [DMESG-WARN][161] ([i915#2017])
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-5/igt@kms_cursor_legacy@forked-bo@all-pipes.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-4/igt@kms_cursor_legacy@forked-bo@all-pipes.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-tglu:         NOTRUN -> [SKIP][162] ([i915#4103])
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc:
    - shard-dg2:          NOTRUN -> [SKIP][163] ([i915#3555]) +4 other tests skip
   [163]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@kms_dither@fb-8bpc-vs-panel-8bpc.html

  * igt@kms_dsc@dsc-basic:
    - shard-dg2:          NOTRUN -> [SKIP][164] ([i915#3555] / [i915#3840] / [i915#4098])
   [164]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_dsc@dsc-basic.html

  * igt@kms_dsc@dsc-with-formats:
    - shard-mtlp:         NOTRUN -> [SKIP][165] ([i915#3555] / [i915#3840] / [i915#4098])
   [165]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_dsc@dsc-with-formats.html

  * igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][166] ([i915#3637]) +5 other tests skip
   [166]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible.html

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][167] ([fdo#109274] / [fdo#111767])
   [167]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_flip@2x-flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@2x-flip-vs-modeset-vs-hang:
    - shard-dg2:          NOTRUN -> [SKIP][168] ([fdo#109274]) +1 other test skip
   [168]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_flip@2x-flip-vs-modeset-vs-hang.html

  * igt@kms_flip@2x-flip-vs-panning-vs-hang:
    - shard-tglu:         NOTRUN -> [SKIP][169] ([fdo#109274] / [i915#3637]) +3 other tests skip
   [169]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_flip@2x-flip-vs-panning-vs-hang.html

  * igt@kms_flip@2x-flip-vs-rmfb-interruptible:
    - shard-mtlp:         NOTRUN -> [SKIP][170] ([fdo#111767] / [i915#3637])
   [170]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-5/igt@kms_flip@2x-flip-vs-rmfb-interruptible.html

  * igt@kms_flip@flip-vs-fences-interruptible:
    - shard-dg2:          NOTRUN -> [SKIP][171] ([i915#8381])
   [171]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_flip@flip-vs-fences-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][172] ([i915#8810])
   [172]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-64bpp-4tile-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][173] ([i915#2672])
   [173]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_flip_scaled_crc@flip-32bpp-yftile-to-64bpp-yftile-upscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode:
    - shard-mtlp:         NOTRUN -> [SKIP][174] ([i915#2672] / [i915#3555])
   [174]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-downscaling@pipe-a-default-mode.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode:
    - shard-dg2:          NOTRUN -> [SKIP][175] ([i915#2672])
   [175]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling@pipe-a-valid-mode.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-valid-mode:
    - shard-tglu:         NOTRUN -> [SKIP][176] ([i915#2587] / [i915#2672])
   [176]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-16bpp-yftile-downscaling@pipe-a-valid-mode.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc:
    - shard-mtlp:         NOTRUN -> [SKIP][177] ([i915#1825]) +18 other tests skip
   [177]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite:
    - shard-dg2:          NOTRUN -> [SKIP][178] ([i915#3458]) +15 other tests skip
   [178]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-draw-pwrite.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render:
    - shard-dg2:          NOTRUN -> [SKIP][179] ([i915#5354]) +25 other tests skip
   [179]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-stridechange:
    - shard-tglu:         NOTRUN -> [SKIP][180] ([fdo#110189]) +9 other tests skip
   [180]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_frontbuffer_tracking@fbcpsr-stridechange.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt:
    - shard-tglu:         NOTRUN -> [SKIP][181] ([fdo#109280]) +15 other tests skip
   [181]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_frontbuffer_tracking@psr-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc:
    - shard-dg2:          NOTRUN -> [SKIP][182] ([i915#8708]) +21 other tests skip
   [182]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_frontbuffer_tracking@psr-2p-primscrn-pri-indfb-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt:
    - shard-mtlp:         NOTRUN -> [SKIP][183] ([i915#8708]) +5 other tests skip
   [183]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@kms_frontbuffer_tracking@psr-rgb565-draw-mmap-gtt.html

  * igt@kms_hdr@bpc-switch:
    - shard-dg2:          NOTRUN -> [SKIP][184] ([i915#3555] / [i915#8228])
   [184]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_hdr@bpc-switch.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-mtlp:         NOTRUN -> [SKIP][185] ([i915#3555] / [i915#8228])
   [185]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-tglu:         NOTRUN -> [SKIP][186] ([i915#3555] / [i915#8228])
   [186]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_panel_fitting@legacy:
    - shard-dg2:          NOTRUN -> [SKIP][187] ([i915#6301])
   [187]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_panel_fitting@legacy.html

  * igt@kms_plane_lowres@tiling-4@pipe-c-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][188] ([i915#3582]) +3 other tests skip
   [188]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_plane_lowres@tiling-4@pipe-c-edp-1.html

  * igt@kms_plane_lowres@tiling-yf:
    - shard-dg2:          NOTRUN -> [SKIP][189] ([i915#3555] / [i915#8821])
   [189]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_plane_lowres@tiling-yf.html

  * igt@kms_plane_scaling@intel-max-src-size:
    - shard-dg2:          NOTRUN -> [SKIP][190] ([i915#6953])
   [190]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@kms_plane_scaling@intel-max-src-size.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][191] ([i915#5176]) +1 other test skip
   [191]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-pixel-formats@pipe-b-edp-1.html

  * igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4:
    - shard-dg1:          NOTRUN -> [SKIP][192] ([i915#5176] / [i915#9423]) +3 other tests skip
   [192]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg1-17/igt@kms_plane_scaling@plane-scaler-with-clipping-clamping-rotation@pipe-c-hdmi-a-4.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-1:
    - shard-tglu:         NOTRUN -> [SKIP][193] ([i915#5235]) +7 other tests skip
   [193]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_plane_scaling@planes-downscale-factor-0-25-unity-scaling@pipe-c-hdmi-a-1.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d-dp-4:
    - shard-dg2:          NOTRUN -> [SKIP][194] ([i915#5235]) +11 other tests skip
   [194]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-11/igt@kms_plane_scaling@planes-downscale-factor-0-25-upscale-factor-0-25@pipe-d-dp-4.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-d-edp-1:
    - shard-mtlp:         NOTRUN -> [SKIP][195] ([i915#5235]) +3 other tests skip
   [195]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-d-edp-1.html

  * igt@kms_psr2_sf@overlay-plane-update-continuous-sf:
    - shard-tglu:         NOTRUN -> [SKIP][196] ([fdo#111068] / [i915#9683])
   [196]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_psr2_sf@overlay-plane-update-continuous-sf.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb:
    - shard-dg2:          NOTRUN -> [SKIP][197] ([i915#9683]) +1 other test skip
   [197]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-tglu:         NOTRUN -> [SKIP][198] ([fdo#109642] / [fdo#111068] / [i915#9683])
   [198]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr@psr2_cursor_mmap_cpu:
    - shard-dg2:          NOTRUN -> [SKIP][199] ([i915#9681]) +2 other tests skip
   [199]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_psr@psr2_cursor_mmap_cpu.html

  * igt@kms_psr@psr2_primary_mmap_gtt:
    - shard-tglu:         NOTRUN -> [SKIP][200] ([i915#9673]) +1 other test skip
   [200]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_psr@psr2_primary_mmap_gtt.html

  * igt@kms_rotation_crc@primary-rotation-270:
    - shard-dg2:          NOTRUN -> [SKIP][201] ([i915#4235]) +1 other test skip
   [201]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@kms_rotation_crc@primary-rotation-270.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270:
    - shard-tglu:         NOTRUN -> [SKIP][202] ([fdo#111615] / [i915#5289])
   [202]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-270.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90:
    - shard-mtlp:         NOTRUN -> [SKIP][203] ([i915#4235]) +1 other test skip
   [203]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-90.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - shard-mtlp:         NOTRUN -> [SKIP][204] ([i915#3555] / [i915#8809])
   [204]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@kms_setmode@invalid-clone-exclusive-crtc:
    - shard-dg2:          NOTRUN -> [SKIP][205] ([i915#3555] / [i915#4098])
   [205]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_setmode@invalid-clone-exclusive-crtc.html

  * igt@kms_sysfs_edid_timing:
    - shard-dg2:          NOTRUN -> [FAIL][206] ([IGT#2])
   [206]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@kms_sysfs_edid_timing.html

  * igt@kms_tiled_display@basic-test-pattern:
    - shard-tglu:         NOTRUN -> [SKIP][207] ([i915#8623])
   [207]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@kms_tiled_display@basic-test-pattern.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-mtlp:         NOTRUN -> [SKIP][208] ([i915#8623])
   [208]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@kms_universal_plane@cursor-fb-leak@pipe-b-edp-1:
    - shard-mtlp:         [PASS][209] -> [FAIL][210] ([i915#9196])
   [209]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-5/igt@kms_universal_plane@cursor-fb-leak@pipe-b-edp-1.html
   [210]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-2/igt@kms_universal_plane@cursor-fb-leak@pipe-b-edp-1.html

  * igt@kms_writeback@writeback-check-output:
    - shard-mtlp:         NOTRUN -> [SKIP][211] ([i915#2437])
   [211]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@kms_writeback@writeback-check-output.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-dg2:          NOTRUN -> [SKIP][212] ([i915#2437])
   [212]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_writeback@writeback-invalid-parameters.html

  * igt@perf@global-sseu-config:
    - shard-dg2:          NOTRUN -> [SKIP][213] ([i915#7387])
   [213]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@perf@global-sseu-config.html

  * igt@perf@per-context-mode-unprivileged:
    - shard-tglu:         NOTRUN -> [SKIP][214] ([fdo#109289]) +2 other tests skip
   [214]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@perf@per-context-mode-unprivileged.html

  * igt@perf_pmu@busy-double-start@rcs0:
    - shard-mtlp:         [PASS][215] -> [FAIL][216] ([i915#4349])
   [215]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-8/igt@perf_pmu@busy-double-start@rcs0.html
   [216]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@perf_pmu@busy-double-start@rcs0.html

  * igt@perf_pmu@busy-double-start@vecs1:
    - shard-dg2:          [PASS][217] -> [FAIL][218] ([i915#4349]) +3 other tests fail
   [217]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg2-11/igt@perf_pmu@busy-double-start@vecs1.html
   [218]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-10/igt@perf_pmu@busy-double-start@vecs1.html

  * igt@perf_pmu@cpu-hotplug:
    - shard-mtlp:         NOTRUN -> [SKIP][219] ([i915#8850])
   [219]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-5/igt@perf_pmu@cpu-hotplug.html

  * igt@perf_pmu@module-unload:
    - shard-dg2:          NOTRUN -> [FAIL][220] ([i915#5793])
   [220]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@perf_pmu@module-unload.html

  * igt@perf_pmu@rc6-all-gts:
    - shard-dg2:          NOTRUN -> [SKIP][221] ([i915#5608] / [i915#8516])
   [221]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@perf_pmu@rc6-all-gts.html

  * igt@perf_pmu@rc6@other-idle-gt0:
    - shard-tglu:         NOTRUN -> [SKIP][222] ([i915#8516])
   [222]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@perf_pmu@rc6@other-idle-gt0.html

  * igt@prime_vgem@coherency-gtt:
    - shard-dg2:          NOTRUN -> [SKIP][223] ([i915#3708] / [i915#4077]) +2 other tests skip
   [223]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@prime_vgem@coherency-gtt.html

  * igt@prime_vgem@fence-read-hang:
    - shard-dg2:          NOTRUN -> [SKIP][224] ([i915#3708])
   [224]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-5/igt@prime_vgem@fence-read-hang.html

  * igt@v3d/v3d_job_submission@array-job-submission:
    - shard-dg2:          NOTRUN -> [SKIP][225] ([i915#2575]) +13 other tests skip
   [225]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@v3d/v3d_job_submission@array-job-submission.html

  * igt@v3d/v3d_mmap@mmap-bo:
    - shard-mtlp:         NOTRUN -> [SKIP][226] ([i915#2575]) +6 other tests skip
   [226]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-7/igt@v3d/v3d_mmap@mmap-bo.html

  * igt@v3d/v3d_submit_cl@valid-submission:
    - shard-tglu:         NOTRUN -> [SKIP][227] ([fdo#109315] / [i915#2575]) +4 other tests skip
   [227]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@v3d/v3d_submit_cl@valid-submission.html

  * igt@vc4/vc4_mmap@mmap-bo:
    - shard-dg2:          NOTRUN -> [SKIP][228] ([i915#7711]) +8 other tests skip
   [228]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@vc4/vc4_mmap@mmap-bo.html

  * igt@vc4/vc4_perfmon@create-single-perfmon:
    - shard-mtlp:         NOTRUN -> [SKIP][229] ([i915#7711]) +3 other tests skip
   [229]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@vc4/vc4_perfmon@create-single-perfmon.html

  * igt@vc4/vc4_tiling@set-get:
    - shard-tglu:         NOTRUN -> [SKIP][230] ([i915#2575]) +2 other tests skip
   [230]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@vc4/vc4_tiling@set-get.html

  
#### Possible fixes ####

  * igt@debugfs_test@read_all_entries_display_off:
    - shard-mtlp:         [ABORT][231] ([i915#9414]) -> [PASS][232] +1 other test pass
   [231]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-8/igt@debugfs_test@read_all_entries_display_off.html
   [232]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@debugfs_test@read_all_entries_display_off.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglu:         [FAIL][233] ([i915#2842]) -> [PASS][234]
   [233]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-tglu-8/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [234]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-3/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-glk:          [FAIL][235] ([i915#2842]) -> [PASS][236]
   [235]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-glk6/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [236]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-glk2/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@i915_pm_freq_api@freq-suspend@gt0:
    - shard-dg2:          [INCOMPLETE][237] ([i915#9407]) -> [PASS][238]
   [237]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg2-2/igt@i915_pm_freq_api@freq-suspend@gt0.html
   [238]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@i915_pm_freq_api@freq-suspend@gt0.html

  * igt@i915_pm_rpm@system-suspend:
    - shard-dg1:          [FAIL][239] ([fdo#103375]) -> [PASS][240] +2 other tests pass
   [239]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg1-18/igt@i915_pm_rpm@system-suspend.html
   [240]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg1-12/igt@i915_pm_rpm@system-suspend.html

  * igt@i915_pm_rps@reset:
    - shard-snb:          [INCOMPLETE][241] ([i915#7790]) -> [PASS][242]
   [241]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-snb5/igt@i915_pm_rps@reset.html
   [242]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-snb4/igt@i915_pm_rps@reset.html
    - shard-tglu:         [INCOMPLETE][243] -> [PASS][244]
   [243]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-tglu-6/igt@i915_pm_rps@reset.html
   [244]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-7/igt@i915_pm_rps@reset.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - shard-mtlp:         [FAIL][245] ([i915#5138]) -> [PASS][246]
   [245]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-7/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
   [246]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_big_fb@4-tiled-max-hw-stride-64bpp-rotate-0-hflip.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite:
    - shard-dg2:          [FAIL][247] ([i915#6880]) -> [PASS][248]
   [247]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg2-11/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html
   [248]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-pwrite.html

  * {igt@kms_pm_rpm@dpms-non-lpsp}:
    - shard-dg2:          [SKIP][249] ([i915#9519]) -> [PASS][250]
   [249]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-dg2-10/igt@kms_pm_rpm@dpms-non-lpsp.html
   [250]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-dg2-2/igt@kms_pm_rpm@dpms-non-lpsp.html

  * igt@perf_pmu@busy-double-start@ccs0:
    - shard-mtlp:         [FAIL][251] ([i915#4349]) -> [PASS][252]
   [251]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-8/igt@perf_pmu@busy-double-start@ccs0.html
   [252]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-8/igt@perf_pmu@busy-double-start@ccs0.html

  
#### Warnings ####

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-tglu:         [FAIL][253] ([i915#2842]) -> [FAIL][254] ([i915#2876])
   [253]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-tglu-7/igt@gem_exec_fair@basic-pace@rcs0.html
   [254]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-tglu-9/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@kms_async_flips@crc@pipe-d-edp-1:
    - shard-mtlp:         [FAIL][255] ([i915#8247]) -> [DMESG-FAIL][256] ([i915#8561]) +1 other test dmesg-fail
   [255]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_13921/shard-mtlp-7/igt@kms_async_flips@crc@pipe-d-edp-1.html
   [256]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/shard-mtlp-6/igt@kms_async_flips@crc@pipe-d-edp-1.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109303]: https://bugs.freedesktop.org/show_bug.cgi?id=109303
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110542]: https://bugs.freedesktop.org/show_bug.cgi?id=110542
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111767]: https://bugs.freedesktop.org/show_bug.cgi?id=111767
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1769]: https://gitlab.freedesktop.org/drm/intel/issues/1769
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#2017]: https://gitlab.freedesktop.org/drm/intel/issues/2017
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2876]: https://gitlab.freedesktop.org/drm/intel/issues/2876
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3582]: https://gitlab.freedesktop.org/drm/intel/issues/3582
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3743]: https://gitlab.freedesktop.org/drm/intel/issues/3743
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4087]: https://gitlab.freedesktop.org/drm/intel/issues/4087
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4235]: https://gitlab.freedesktop.org/drm/intel/issues/4235
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4473]: https://gitlab.freedesktop.org/drm/intel/issues/4473
  [i915#4537]: https://gitlab.freedesktop.org/drm/intel/issues/4537
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4771]: https://gitlab.freedesktop.org/drm/intel/issues/4771
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4880]: https://gitlab.freedesktop.org/drm/intel/issues/4880
  [i915#4958]: https://gitlab.freedesktop.org/drm/intel/issues/4958
  [i915#5107]: https://gitlab.freedesktop.org/drm/intel/issues/5107
  [i915#5138]: https://gitlab.freedesktop.org/drm/intel/issues/5138
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#5608]: https://gitlab.freedesktop.org/drm/intel/issues/5608
  [i915#5784]: https://gitlab.freedesktop.org/drm/intel/issues/5784
  [i915#5793]: https://gitlab.freedesktop.org/drm/intel/issues/5793
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6187]: https://gitlab.freedesktop.org/drm/intel/issues/6187
  [i915#6227]: https://gitlab.freedesktop.org/drm/intel/issues/6227
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6880]: https://gitlab.freedesktop.org/drm/intel/issues/6880
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7213]: https://gitlab.freedesktop.org/drm/intel/issues/7213
  [i915#7297]: https://gitlab.freedesktop.org/drm/intel/issues/7297
  [i915#7387]: https://gitlab.freedesktop.org/drm/intel/issues/7387
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7790]: https://gitlab.freedesktop.org/drm/intel/issues/7790
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7975]: https://gitlab.freedesktop.org/drm/intel/issues/7975
  [i915#8190]: https://gitlab.freedesktop.org/drm/intel/issues/8190
  [i915#8213]: https://gitlab.freedesktop.org/drm/intel/issues/8213
  [i915#8228]: https://gitlab.freedesktop.org/drm/intel/issues/8228
  [i915#8247]: https://gitlab.freedesktop.org/drm/intel/issues/8247
  [i915#8293]: https://gitlab.freedesktop.org/drm/intel/issues/8293
  [i915#8381]: https://gitlab.freedesktop.org/drm/intel/issues/8381
  [i915#8411]: https://gitlab.freedesktop.org/drm/intel/issues/8411
  [i915#8414]: https://gitlab.freedesktop.org/drm/intel/issues/8414
  [i915#8428]: https://gitlab.freedesktop.org/drm/intel/issues/8428
  [i915#8516]: https://gitlab.freedesktop.org/drm/intel/issues/8516
  [i915#8555]: https://gitlab.freedesktop.org/drm/intel/issues/8555
  [i915#8561]: https://gitlab.freedesktop.org/drm/intel/issues/8561
  [i915#8562]: https://gitlab.freedesktop.org/drm/intel/issues/8562
  [i915#8623]: https://gitlab.freedesktop.org/drm/intel/issues/8623
  [i915#8708]: https://gitlab.freedesktop.org/drm/intel/issues/8708
  [i915#8709]: https://gitlab.freedesktop.org/drm/intel/issues/8709
  [i915#8809]: https://gitlab.freedesktop.org/drm/intel/issues/8809
  [i915#8810]: https://gitlab.freedesktop.org/drm/intel/issues/8810
  [i915#8814]: https://gitlab.freedesktop.org/drm/intel/issues/8814
  [i915#8821]: https://gitlab.freedesktop.org/drm/intel/issues/8821
  [i915#8850]: https://gitlab.freedesktop.org/drm/intel/issues/8850
  [i915#9196]: https://gitlab.freedesktop.org/drm/intel/issues/9196
  [i915#9310]: https://gitlab.freedesktop.org/drm/intel/issues/9310
  [i915#9340]: https://gitlab.freedesktop.org/drm/intel/issues/9340
  [i915#9407]: https://gitlab.freedesktop.org/drm/intel/issues/9407
  [i915#9412]: https://gitlab.freedesktop.org/drm/intel/issues/9412
  [i915#9413]: https://gitlab.freedesktop.org/drm/intel/issues/9413
  [i915#9414]: https://gitlab.freedesktop.org/drm/intel/issues/9414
  [i915#9423]: https://gitlab.freedesktop.org/drm/intel/issues/9423
  [i915#9424]: https://gitlab.freedesktop.org/drm/intel/issues/9424
  [i915#9433]: https://gitlab.freedesktop.org/drm/intel/issues/9433
  [i915#9519]: https://gitlab.freedesktop.org/drm/intel/issues/9519
  [i915#9673]: https://gitlab.freedesktop.org/drm/intel/issues/9673
  [i915#9681]: https://gitlab.freedesktop.org/drm/intel/issues/9681
  [i915#9683]: https://gitlab.freedesktop.org/drm/intel/issues/9683
  [i915#9685]: https://gitlab.freedesktop.org/drm/intel/issues/9685
  [i915#9688]: https://gitlab.freedesktop.org/drm/intel/issues/9688


Build changes
-------------

  * Linux: CI_DRM_13921 -> Patchwork_126883v1

  CI-20190529: 20190529
  CI_DRM_13921: 002e96d8067fa253ee53af2fa191717f4f5b782b @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_7603: 2ddd8cac90d4333943cd017319514949b047821b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_126883v1: 002e96d8067fa253ee53af2fa191717f4f5b782b @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_126883v1/index.html

[-- Attachment #2: Type: text/html, Size: 76855 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-24 20:55 [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables Gustavo Sousa
  2023-11-24 21:57 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
  2023-11-26  4:12 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
@ 2023-11-27 16:21 ` Matt Roper
  2023-11-28  8:43   ` Ville Syrjälä
  2 siblings, 1 reply; 14+ messages in thread
From: Matt Roper @ 2023-11-27 16:21 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> Use literal representation of cdclk tables"). It has been almost 4 years
> and the divider field was not really used yet. Let's remove it.

I think we need to go the other way and actually start using it instead
of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
driver is using today doesn't account for the potential use of
squashing, which means we program the wrong divider value into CDCLK_CTL
in some cases.  I pointed that out during the LNL code reviews a couple
months ago, and I believe Stan is working on fixing that.

I wonder if the misprogramming we're doing today is what requires the
"HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?


Matt

> 
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
>  1 file changed, 134 insertions(+), 135 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index b93d1ad7936d..7f85a216ff5c 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
>  	u32 cdclk;
>  	u16 refclk;
>  	u16 waveform;
> -	u8 divider;	/* CD2X divider * 2 */
>  	u8 ratio;
>  };
>  
>  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> -
> -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> -
> -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> +
> +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> +
> +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> -
> -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> -
> -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> +
> +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> +
> +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>  
> -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
>  
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> -
> -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> -
> -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> +
> +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> +
> +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> -
> -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> -
> -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> +
> +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> +
> +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
>  	{}
>  };
>  
>  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
>  	{}
>  };
>  
> -- 
> 2.42.1
> 

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-27 16:21 ` [Intel-gfx] [PATCH] " Matt Roper
@ 2023-11-28  8:43   ` Ville Syrjälä
  2023-11-28  8:53     ` Lisovskiy, Stanislav
                       ` (2 more replies)
  0 siblings, 3 replies; 14+ messages in thread
From: Ville Syrjälä @ 2023-11-28  8:43 UTC (permalink / raw)
  To: Matt Roper; +Cc: intel-gfx

On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > Use literal representation of cdclk tables"). It has been almost 4 years
> > and the divider field was not really used yet. Let's remove it.
> 
> I think we need to go the other way and actually start using it instead
> of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> driver is using today doesn't account for the potential use of
> squashing, which means we program the wrong divider value into CDCLK_CTL
> in some cases.  I pointed that out during the LNL code reviews a couple
> months ago, and I believe Stan is working on fixing that.

The code should be correct as is, but it does assume that the cd2x
divider is 2 when squashing is used. If that no longer holds then we
have to change something.

> 
> I wonder if the misprogramming we're doing today is what requires the
> "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> 
> 
> Matt
> 
> > 
> > Cc: Matt Roper <matthew.d.roper@intel.com>
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> >  1 file changed, 134 insertions(+), 135 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > index b93d1ad7936d..7f85a216ff5c 100644
> > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> >  	u32 cdclk;
> >  	u16 refclk;
> >  	u16 waveform;
> > -	u8 divider;	/* CD2X divider * 2 */
> >  	u8 ratio;
> >  };
> >  
> >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > -
> > -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > -
> > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > +
> > +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > +
> > +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > -
> > -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > -
> > -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > +
> > +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > +
> > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> >  
> > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> >  
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > -
> > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > -
> > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > +
> > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > +
> > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > -
> > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > -
> > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > +
> > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > +
> > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> >  	{}
> >  };
> >  
> >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> >  	{}
> >  };
> >  
> > -- 
> > 2.42.1
> > 
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-28  8:43   ` Ville Syrjälä
@ 2023-11-28  8:53     ` Lisovskiy, Stanislav
  2023-11-28  9:01     ` Ville Syrjälä
  2023-11-28  9:51     ` Ville Syrjälä
  2 siblings, 0 replies; 14+ messages in thread
From: Lisovskiy, Stanislav @ 2023-11-28  8:53 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx, Matt Roper

On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > > Use literal representation of cdclk tables"). It has been almost 4 years
> > > and the divider field was not really used yet. Let's remove it.
> > 
> > I think we need to go the other way and actually start using it instead
> > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> > driver is using today doesn't account for the potential use of
> > squashing, which means we program the wrong divider value into CDCLK_CTL
> > in some cases.  I pointed that out during the LNL code reviews a couple
> > months ago, and I believe Stan is working on fixing that.
> 
> The code should be correct as is, but it does assume that the cd2x
> divider is 2 when squashing is used. If that no longer holds then we
> have to change something.

So we need to have some kind of a consensus/agreement here, whether are we modify the
calculation function and remove divider from the table, or do we just
use the value from the table.

So which approach is better?

Stan

> 
> > 
> > I wonder if the misprogramming we're doing today is what requires the
> > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> > 
> > 
> > Matt
> > 
> > > 
> > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> > >  1 file changed, 134 insertions(+), 135 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > index b93d1ad7936d..7f85a216ff5c 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> > >  	u32 cdclk;
> > >  	u16 refclk;
> > >  	u16 waveform;
> > > -	u8 divider;	/* CD2X divider * 2 */
> > >  	u8 ratio;
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > > +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > > -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > > -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >  
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> > >  
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > > -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > > -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > > -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > > -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > > +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > > +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > > +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > > +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >  	{}
> > >  };
> > >  
> > > -- 
> > > 2.42.1
> > > 
> > 
> > -- 
> > Matt Roper
> > Graphics Software Engineer
> > Linux GPU Platform Enablement
> > Intel Corporation
> 
> -- 
> Ville Syrjälä
> Intel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-28  8:43   ` Ville Syrjälä
  2023-11-28  8:53     ` Lisovskiy, Stanislav
@ 2023-11-28  9:01     ` Ville Syrjälä
  2023-11-28  9:51     ` Ville Syrjälä
  2 siblings, 0 replies; 14+ messages in thread
From: Ville Syrjälä @ 2023-11-28  9:01 UTC (permalink / raw)
  To: Matt Roper; +Cc: intel-gfx

On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > > Use literal representation of cdclk tables"). It has been almost 4 years
> > > and the divider field was not really used yet. Let's remove it.
> > 
> > I think we need to go the other way and actually start using it instead
> > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> > driver is using today doesn't account for the potential use of
> > squashing, which means we program the wrong divider value into CDCLK_CTL
> > in some cases.  I pointed that out during the LNL code reviews a couple
> > months ago, and I believe Stan is working on fixing that.
> 
> The code should be correct as is, but it does assume that the cd2x
> divider is 2 when squashing is used. If that no longer holds then we
> have to change something.

BTW long ago I wrote some patches to cross check all the values in the
table (since there is redundancy in what we store there), but I was
too annoyed at having to do that cross check at runtime that I didn't
send the patches out. I was slightly hopeful that C23 constexpr could
save us, but apparently constexpr for functions didn't end up in in
the spec, so likely not really useful :(

> 
> > 
> > I wonder if the misprogramming we're doing today is what requires the
> > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> > 
> > 
> > Matt
> > 
> > > 
> > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> > >  1 file changed, 134 insertions(+), 135 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > index b93d1ad7936d..7f85a216ff5c 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> > >  	u32 cdclk;
> > >  	u16 refclk;
> > >  	u16 waveform;
> > > -	u8 divider;	/* CD2X divider * 2 */
> > >  	u8 ratio;
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > > +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > > -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > > -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >  
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> > >  
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > > -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > > -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > > -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > > -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > > +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > > +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > > +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > > +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >  	{}
> > >  };
> > >  
> > > -- 
> > > 2.42.1
> > > 
> > 
> > -- 
> > Matt Roper
> > Graphics Software Engineer
> > Linux GPU Platform Enablement
> > Intel Corporation
> 
> -- 
> Ville Syrjälä
> Intel

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-28  8:43   ` Ville Syrjälä
  2023-11-28  8:53     ` Lisovskiy, Stanislav
  2023-11-28  9:01     ` Ville Syrjälä
@ 2023-11-28  9:51     ` Ville Syrjälä
  2023-11-28 11:52       ` Ville Syrjälä
  2023-12-01 23:07       ` Matt Roper
  2 siblings, 2 replies; 14+ messages in thread
From: Ville Syrjälä @ 2023-11-28  9:51 UTC (permalink / raw)
  To: Matt Roper; +Cc: intel-gfx

On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > > Use literal representation of cdclk tables"). It has been almost 4 years
> > > and the divider field was not really used yet. Let's remove it.
> > 
> > I think we need to go the other way and actually start using it instead
> > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> > driver is using today doesn't account for the potential use of
> > squashing, which means we program the wrong divider value into CDCLK_CTL
> > in some cases.  I pointed that out during the LNL code reviews a couple
> > months ago, and I believe Stan is working on fixing that.
> 
> The code should be correct as is, but it does assume that the cd2x
> divider is 2 when squashing is used. If that no longer holds then we
> have to change something.

Something like this should be sufficient to eliminate that
assumption.

diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
index 8bb6bab7c8cd..58567d42e725 100644
--- a/drivers/gpu/drm/i915/display/intel_cdclk.c
+++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
@@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
 
 	waveform = cdclk_squash_waveform(dev_priv, cdclk);
 
-	if (waveform)
-		clock = vco / 2;
-	else
-		clock = cdclk;
+	clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
 
 	if (HAS_CDCLK_SQUASH(dev_priv))
 		dg2_cdclk_squash_program(dev_priv, waveform);
 
> 
> > 
> > I wonder if the misprogramming we're doing today is what requires the
> > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> > 
> > 
> > Matt
> > 
> > > 
> > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> > >  1 file changed, 134 insertions(+), 135 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > index b93d1ad7936d..7f85a216ff5c 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> > >  	u32 cdclk;
> > >  	u16 refclk;
> > >  	u16 waveform;
> > > -	u8 divider;	/* CD2X divider * 2 */
> > >  	u8 ratio;
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > > -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > > +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > > +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > > -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > > -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > > +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >  
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> > >  
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > -
> > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > -
> > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > +
> > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > +
> > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > > -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > > -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > > -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > > -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > > +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > > +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > > +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > > +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> > >  	{}
> > >  };
> > >  
> > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > > -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > > -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > > -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > > -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > > +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > > +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > > +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >  	{}
> > >  };
> > >  
> > > -- 
> > > 2.42.1
> > > 
> > 
> > -- 
> > Matt Roper
> > Graphics Software Engineer
> > Linux GPU Platform Enablement
> > Intel Corporation
> 
> -- 
> Ville Syrjälä
> Intel

-- 
Ville Syrjälä
Intel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-28  9:51     ` Ville Syrjälä
@ 2023-11-28 11:52       ` Ville Syrjälä
  2023-12-01 23:07       ` Matt Roper
  1 sibling, 0 replies; 14+ messages in thread
From: Ville Syrjälä @ 2023-11-28 11:52 UTC (permalink / raw)
  To: Matt Roper; +Cc: intel-gfx

On Tue, Nov 28, 2023 at 11:51:43AM +0200, Ville Syrjälä wrote:
> On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> > On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> > > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > > > Use literal representation of cdclk tables"). It has been almost 4 years
> > > > and the divider field was not really used yet. Let's remove it.
> > > 
> > > I think we need to go the other way and actually start using it instead
> > > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> > > driver is using today doesn't account for the potential use of
> > > squashing, which means we program the wrong divider value into CDCLK_CTL
> > > in some cases.  I pointed that out during the LNL code reviews a couple
> > > months ago, and I believe Stan is working on fixing that.
> > 
> > The code should be correct as is, but it does assume that the cd2x
> > divider is 2 when squashing is used. If that no longer holds then we
> > have to change something.
> 
> Something like this should be sufficient to eliminate that
> assumption.
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index 8bb6bab7c8cd..58567d42e725 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
>  
>  	waveform = cdclk_squash_waveform(dev_priv, cdclk);
>  
> -	if (waveform)
> -		clock = vco / 2;
> -	else
> -		clock = cdclk;
> +	clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
>  
>  	if (HAS_CDCLK_SQUASH(dev_priv))
>  		dg2_cdclk_squash_program(dev_priv, waveform);

Sent that, and a bunch of other cdclk stuff as a proper series to the
list.

>  
> > 
> > > 
> > > I wonder if the misprogramming we're doing today is what requires the
> > > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> > > 
> > > 
> > > Matt
> > > 
> > > > 
> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> > > >  1 file changed, 134 insertions(+), 135 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > > index b93d1ad7936d..7f85a216ff5c 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> > > >  	u32 cdclk;
> > > >  	u16 refclk;
> > > >  	u16 waveform;
> > > > -	u8 divider;	/* CD2X divider * 2 */
> > > >  	u8 ratio;
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > > > +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > > > -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > > > -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > > > +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > > > +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > > > +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > >  
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> > > >  
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > > > -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > > > -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > > > -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > > > -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > > > -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > > > -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > > > -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > > > -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > > > -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > > > +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > > > +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > > > +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > > > +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > > > +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > > > +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > > > +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > > > +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > > > -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > > -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > > > -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > > > -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > > > -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > > > -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > > > -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > > > -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > > > -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > > > -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > > +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > > > +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > > > +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > > > +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > > > +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > > > +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > > > +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > > >  	{}
> > > >  };
> > > >  
> > > > -- 
> > > > 2.42.1
> > > > 
> > > 
> > > -- 
> > > Matt Roper
> > > Graphics Software Engineer
> > > Linux GPU Platform Enablement
> > > Intel Corporation
> > 
> > -- 
> > Ville Syrjälä
> > Intel
> 
> -- 
> Ville Syrjälä
> Intel

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-11-28  9:51     ` Ville Syrjälä
  2023-11-28 11:52       ` Ville Syrjälä
@ 2023-12-01 23:07       ` Matt Roper
  2023-12-04 14:04         ` Gustavo Sousa
  1 sibling, 1 reply; 14+ messages in thread
From: Matt Roper @ 2023-12-01 23:07 UTC (permalink / raw)
  To: Ville Syrjälä; +Cc: intel-gfx

On Tue, Nov 28, 2023 at 11:51:43AM +0200, Ville Syrjälä wrote:
> On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> > On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> > > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > > > Use literal representation of cdclk tables"). It has been almost 4 years
> > > > and the divider field was not really used yet. Let's remove it.
> > > 
> > > I think we need to go the other way and actually start using it instead
> > > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> > > driver is using today doesn't account for the potential use of
> > > squashing, which means we program the wrong divider value into CDCLK_CTL
> > > in some cases.  I pointed that out during the LNL code reviews a couple
> > > months ago, and I believe Stan is working on fixing that.
> > 
> > The code should be correct as is, but it does assume that the cd2x
> > divider is 2 when squashing is used. If that no longer holds then we
> > have to change something.
> 
> Something like this should be sufficient to eliminate that
> assumption.
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> index 8bb6bab7c8cd..58567d42e725 100644
> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> @@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
>  
>  	waveform = cdclk_squash_waveform(dev_priv, cdclk);
>  
> -	if (waveform)
> -		clock = vco / 2;
> -	else
> -		clock = cdclk;
> +	clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
>  

I haven't had time to come back and revisit this (or check your new
series yet), but when I was reviewing the cdclk stuff a couple months
ago, my concern was around bxt_cdclk_cd2x_div_sel() which is deriving
the CD2X divider from the vco and cdclk value.  On a platform like DG2,
we use squashing instead of changes to PLL ratio to hit different cdclk
values, so the calculation there doesn't seem valid anymore.  Am I
overlooking something?


Matt

>  	if (HAS_CDCLK_SQUASH(dev_priv))
>  		dg2_cdclk_squash_program(dev_priv, waveform);
>  
> > 
> > > 
> > > I wonder if the misprogramming we're doing today is what requires the
> > > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> > > 
> > > 
> > > Matt
> > > 
> > > > 
> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> > > >  1 file changed, 134 insertions(+), 135 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > > index b93d1ad7936d..7f85a216ff5c 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> > > >  	u32 cdclk;
> > > >  	u16 refclk;
> > > >  	u16 waveform;
> > > > -	u8 divider;	/* CD2X divider * 2 */
> > > >  	u8 ratio;
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > > > -	{ .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > > > +	{ .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > > > +	{ .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > > > -	{ .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > > > -	{ .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > > > +	{ .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > > > +	{ .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > > > +	{ .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > > > -	{ .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > > > -	{ .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > > > +	{ .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > > > +	{ .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > >  
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> > > >  
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > > > -	{ .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > > > -	{ .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > > > -	{ .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > > > -	{ .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > > > -	{ .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > > > -	{ .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > > > -
> > > > -	{ .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > > > -	{ .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > > > -	{ .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > > > -	{ .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > > > -	{ .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > > > -
> > > > -	{ .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > > > +	{ .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > > > +	{ .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > > > +	{ .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > > > +	{ .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > > > +	{ .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > > > +	{ .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > > > +
> > > > +	{ .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > > > +	{ .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > > > +	{ .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > > > +	{ .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > > > +	{ .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > > > +	{ .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > > > +
> > > > +	{ .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > > > -	{ .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > > > -	{ .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > > > -	{ .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > > > -	{ .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > > > -	{ .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > > > -	{ .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > > > -	{ .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > > > -	{ .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > > > -	{ .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > > > -	{ .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > > > +	{ .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > > > +	{ .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > > > +	{ .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > > > +	{ .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > > > +	{ .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > > > +	{ .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > > > +	{ .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > > > +	{ .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > > > +	{ .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> > > >  	{}
> > > >  };
> > > >  
> > > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > > > -	{ .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > > > -	{ .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > > > -	{ .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > > > -	{ .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > > > -	{ .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > > > -	{ .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > > > -	{ .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > > > -	{ .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > > > -	{ .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > > > -	{ .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > > > -	{ .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > > > -	{ .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > > > -	{ .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > > > -	{ .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > > > -	{ .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > > > +	{ .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > > > +	{ .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > > > +	{ .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > > > +	{ .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > > > +	{ .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > > > +	{ .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > > > +	{ .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > > > +	{ .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > > > +	{ .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > > > +	{ .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > > > +	{ .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > > > +	{ .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > > >  	{}
> > > >  };
> > > >  
> > > > -- 
> > > > 2.42.1
> > > > 
> > > 
> > > -- 
> > > Matt Roper
> > > Graphics Software Engineer
> > > Linux GPU Platform Enablement
> > > Intel Corporation
> > 
> > -- 
> > Ville Syrjälä
> > Intel
> 
> -- 
> Ville Syrjälä
> Intel

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-12-01 23:07       ` Matt Roper
@ 2023-12-04 14:04         ` Gustavo Sousa
  2023-12-04 14:13           ` Gustavo Sousa
  0 siblings, 1 reply; 14+ messages in thread
From: Gustavo Sousa @ 2023-12-04 14:04 UTC (permalink / raw)
  To: Matt Roper, Ville Syrjälä; +Cc: intel-gfx

Quoting Matt Roper (2023-12-01 20:07:48-03:00)
>On Tue, Nov 28, 2023 at 11:51:43AM +0200, Ville Syrjälä wrote:
>> On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
>> > On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
>> > > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
>> > > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
>> > > > Use literal representation of cdclk tables"). It has been almost 4 years
>> > > > and the divider field was not really used yet. Let's remove it.
>> > > 
>> > > I think we need to go the other way and actually start using it instead
>> > > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
>> > > driver is using today doesn't account for the potential use of
>> > > squashing, which means we program the wrong divider value into CDCLK_CTL
>> > > in some cases.  I pointed that out during the LNL code reviews a couple
>> > > months ago, and I believe Stan is working on fixing that.
>> > 
>> > The code should be correct as is, but it does assume that the cd2x
>> > divider is 2 when squashing is used. If that no longer holds then we
>> > have to change something.
>> 
>> Something like this should be sufficient to eliminate that
>> assumption.
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> index 8bb6bab7c8cd..58567d42e725 100644
>> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
>> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> @@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
>>  
>>          waveform = cdclk_squash_waveform(dev_priv, cdclk);
>>  
>> -        if (waveform)
>> -                clock = vco / 2;
>> -        else
>> -                clock = cdclk;
>> +        clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
>>  
>
>I haven't had time to come back and revisit this (or check your new
>series yet), but when I was reviewing the cdclk stuff a couple months
>ago, my concern was around bxt_cdclk_cd2x_div_sel() which is deriving
>the CD2X divider from the vco and cdclk value.  On a platform like DG2,
>we use squashing instead of changes to PLL ratio to hit different cdclk
>values, so the calculation there doesn't seem valid anymore.  Am I
>overlooking something?

I looked at Ville's patches and they seem correct to me - althought I'm
not that experienced and might be missing something as well... Here goes
my rationale:

Looking at how cdclk works with our hardware, I would say that the
cdclock is defined by:

    cdclk = vco / div / sq_div / 2

, with: vco being the output of the CD2X PLL; "div", the CD2X divider;
"sq_div", the divider that is derived from the squash wave (16 / "sqash
wave 1's count"); and 2, the final division that is done at the end.

The DIV_ROUND_CLOSEST() operation suggested above is equivalent to
doing:

    x = cdclk * sq_div = vco / div / 2

Meaning that x is the "unsquashed cdclk". From this point, what
bxt_cdclk_cd2x_div_sel() is doing is:

    y = vco / x / 2

(the last "2" divisor comes from the switch-case statement).

That resolves to:

    y = vco / (vco / div / 2) / 2 = div

--
Gustavo Sousa

>
>
>Matt
>
>>          if (HAS_CDCLK_SQUASH(dev_priv))
>>                  dg2_cdclk_squash_program(dev_priv, waveform);
>>  
>> > 
>> > > 
>> > > I wonder if the misprogramming we're doing today is what requires the
>> > > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
>> > > 
>> > > 
>> > > Matt
>> > > 
>> > > > 
>> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
>> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> > > > ---
>> > > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
>> > > >  1 file changed, 134 insertions(+), 135 deletions(-)
>> > > > 
>> > > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> > > > index b93d1ad7936d..7f85a216ff5c 100644
>> > > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
>> > > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
>> > > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
>> > > >          u32 cdclk;
>> > > >          u16 refclk;
>> > > >          u16 waveform;
>> > > > -        u8 divider;        /* CD2X divider * 2 */
>> > > >          u8 ratio;
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
>> > > > -        { .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
>> > > > -        { .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
>> > > > -        { .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
>> > > > -        { .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
>> > > > +        { .refclk = 19200, .cdclk = 144000, .ratio = 60 },
>> > > > +        { .refclk = 19200, .cdclk = 288000, .ratio = 60 },
>> > > > +        { .refclk = 19200, .cdclk = 384000, .ratio = 60 },
>> > > > +        { .refclk = 19200, .cdclk = 576000, .ratio = 60 },
>> > > > +        { .refclk = 19200, .cdclk = 624000, .ratio = 65 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
>> > > > -        { .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
>> > > > -        { .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
>> > > > +        { .refclk = 19200, .cdclk =  79200, .ratio = 33 },
>> > > > +        { .refclk = 19200, .cdclk = 158400, .ratio = 33 },
>> > > > +        { .refclk = 19200, .cdclk = 316800, .ratio = 33 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>> > > > -
>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
>> > > > -
>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 18 },
>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 68 },
>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>> > > > +
>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio = 15 },
>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 54 },
>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
>> > > > +
>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio =  9 },
>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34 },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
>> > > > -
>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
>> > > > -
>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio =  36 },
>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio =  40 },
>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio =  64 },
>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 136 },
>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 116 },
>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 136 },
>> > > > +
>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio =  30 },
>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio =  32 },
>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio =  52 },
>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 108 },
>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio =  92 },
>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 108 },
>> > > > +
>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 18 },
>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 20 },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 32 },
>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 68 },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 58 },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 68 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>> > > >  
>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>> > > > -        { .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>> > > > +        { .refclk = 24400, .cdclk = 648000, .ratio = 54 },
>> > > >  
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>> > > > -
>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
>> > > > -
>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>> > > > +
>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
>> > > > +
>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>> > > > -        { .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>> > > > -
>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>> > > > -        { .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
>> > > > -
>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>> > > > +        { .refclk = 19200, .cdclk = 480000, .ratio = 50 },
>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>> > > > +
>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>> > > > +        { .refclk = 24000, .cdclk = 480000, .ratio = 40 },
>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
>> > > > +
>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25 },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
>> > > > -        { .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
>> > > > -        { .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
>> > > > -        { .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
>> > > > -        { .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
>> > > > -        { .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
>> > > > -        { .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
>> > > > -        { .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
>> > > > -        { .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
>> > > > -        { .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
>> > > > +        { .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
>> > > > +        { .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
>> > > > +        { .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
>> > > > +        { .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
>> > > > +        { .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
>> > > > +        { .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
>> > > > +        { .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
>> > > > +        { .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
>> > > > +        { .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
>> > > > -        { .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
>> > > > -        { .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
>> > > > -        { .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
>> > > > -        { .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
>> > > > -        { .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
>> > > > -        { .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
>> > > > -        { .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
>> > > > -        { .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
>> > > > -        { .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
>> > > > -        { .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
>> > > > -        { .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
>> > > > -        { .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
>> > > > -        { .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
>> > > > +        { .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
>> > > > +        { .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
>> > > > +        { .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
>> > > > +        { .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
>> > > > +        { .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
>> > > > +        { .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
>> > > > +        { .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
>> > > > +        { .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
>> > > > +        { .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
>> > > > +        { .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
>> > > > +        { .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
>> > > > +        { .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
>> > > > +        { .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
>> > > >          {}
>> > > >  };
>> > > >  
>> > > > -- 
>> > > > 2.42.1
>> > > > 
>> > > 
>> > > -- 
>> > > Matt Roper
>> > > Graphics Software Engineer
>> > > Linux GPU Platform Enablement
>> > > Intel Corporation
>> > 
>> > -- 
>> > Ville Syrjälä
>> > Intel
>> 
>> -- 
>> Ville Syrjälä
>> Intel
>
>-- 
>Matt Roper
>Graphics Software Engineer
>Linux GPU Platform Enablement
>Intel Corporation

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-12-04 14:04         ` Gustavo Sousa
@ 2023-12-04 14:13           ` Gustavo Sousa
  2023-12-14  0:07             ` Matt Roper
  0 siblings, 1 reply; 14+ messages in thread
From: Gustavo Sousa @ 2023-12-04 14:13 UTC (permalink / raw)
  To: Matt Roper, Ville Syrjälä; +Cc: intel-gfx

Quoting Gustavo Sousa (2023-12-04 11:04:20-03:00)
>Quoting Matt Roper (2023-12-01 20:07:48-03:00)
>>On Tue, Nov 28, 2023 at 11:51:43AM +0200, Ville Syrjälä wrote:
>>> On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
>>> > On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
>>> > > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
>>> > > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
>>> > > > Use literal representation of cdclk tables"). It has been almost 4 years
>>> > > > and the divider field was not really used yet. Let's remove it.
>>> > > 
>>> > > I think we need to go the other way and actually start using it instead
>>> > > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
>>> > > driver is using today doesn't account for the potential use of
>>> > > squashing, which means we program the wrong divider value into CDCLK_CTL
>>> > > in some cases.  I pointed that out during the LNL code reviews a couple
>>> > > months ago, and I believe Stan is working on fixing that.
>>> > 
>>> > The code should be correct as is, but it does assume that the cd2x
>>> > divider is 2 when squashing is used. If that no longer holds then we
>>> > have to change something.
>>> 
>>> Something like this should be sufficient to eliminate that
>>> assumption.
>>> 
>>> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
>>> index 8bb6bab7c8cd..58567d42e725 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
>>> @@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
>>>  
>>>          waveform = cdclk_squash_waveform(dev_priv, cdclk);
>>>  
>>> -        if (waveform)
>>> -                clock = vco / 2;

Ah, one thing I did not mention in my previous message is that, this
assignment here means that we were always assuming that the divisor was
always 1:

    x' = vco / 2

, meaning that bxt_cdclk_cd2x_div_sel() would do:

    y' = vco / x' / 2  = 1

--
Gustavo Sousa

>>> -        else
>>> -                clock = cdclk;
>>> +        clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
>>>  
>>
>>I haven't had time to come back and revisit this (or check your new
>>series yet), but when I was reviewing the cdclk stuff a couple months
>>ago, my concern was around bxt_cdclk_cd2x_div_sel() which is deriving
>>the CD2X divider from the vco and cdclk value.  On a platform like DG2,
>>we use squashing instead of changes to PLL ratio to hit different cdclk
>>values, so the calculation there doesn't seem valid anymore.  Am I
>>overlooking something?
>
>I looked at Ville's patches and they seem correct to me - althought I'm
>not that experienced and might be missing something as well... Here goes
>my rationale:
>
>Looking at how cdclk works with our hardware, I would say that the
>cdclock is defined by:
>
>    cdclk = vco / div / sq_div / 2
>
>, with: vco being the output of the CD2X PLL; "div", the CD2X divider;
>"sq_div", the divider that is derived from the squash wave (16 / "sqash
>wave 1's count"); and 2, the final division that is done at the end.
>
>The DIV_ROUND_CLOSEST() operation suggested above is equivalent to
>doing:
>
>    x = cdclk * sq_div = vco / div / 2
>
>Meaning that x is the "unsquashed cdclk". From this point, what
>bxt_cdclk_cd2x_div_sel() is doing is:
>
>    y = vco / x / 2
>
>(the last "2" divisor comes from the switch-case statement).
>
>That resolves to:
>
>    y = vco / (vco / div / 2) / 2 = div
>
>--
>Gustavo Sousa
>
>>
>>
>>Matt
>>
>>>          if (HAS_CDCLK_SQUASH(dev_priv))
>>>                  dg2_cdclk_squash_program(dev_priv, waveform);
>>>  
>>> > 
>>> > > 
>>> > > I wonder if the misprogramming we're doing today is what requires the
>>> > > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
>>> > > 
>>> > > 
>>> > > Matt
>>> > > 
>>> > > > 
>>> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
>>> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
>>> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>> > > > ---
>>> > > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
>>> > > >  1 file changed, 134 insertions(+), 135 deletions(-)
>>> > > > 
>>> > > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
>>> > > > index b93d1ad7936d..7f85a216ff5c 100644
>>> > > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
>>> > > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
>>> > > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
>>> > > >          u32 cdclk;
>>> > > >          u16 refclk;
>>> > > >          u16 waveform;
>>> > > > -        u8 divider;        /* CD2X divider * 2 */
>>> > > >          u8 ratio;
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
>>> > > > -        { .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
>>> > > > -        { .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
>>> > > > -        { .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
>>> > > > -        { .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
>>> > > > +        { .refclk = 19200, .cdclk = 144000, .ratio = 60 },
>>> > > > +        { .refclk = 19200, .cdclk = 288000, .ratio = 60 },
>>> > > > +        { .refclk = 19200, .cdclk = 384000, .ratio = 60 },
>>> > > > +        { .refclk = 19200, .cdclk = 576000, .ratio = 60 },
>>> > > > +        { .refclk = 19200, .cdclk = 624000, .ratio = 65 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
>>> > > > -        { .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
>>> > > > -        { .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
>>> > > > +        { .refclk = 19200, .cdclk =  79200, .ratio = 33 },
>>> > > > +        { .refclk = 19200, .cdclk = 158400, .ratio = 33 },
>>> > > > +        { .refclk = 19200, .cdclk = 316800, .ratio = 33 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
>>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
>>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
>>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>>> > > > -
>>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
>>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
>>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
>>> > > > -
>>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
>>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 18 },
>>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
>>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 68 },
>>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>>> > > > +
>>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio = 15 },
>>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
>>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 54 },
>>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
>>> > > > +
>>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio =  9 },
>>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34 },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
>>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
>>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
>>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
>>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
>>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
>>> > > > -
>>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
>>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
>>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
>>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
>>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
>>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
>>> > > > -
>>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
>>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
>>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
>>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio =  36 },
>>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio =  40 },
>>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio =  64 },
>>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 136 },
>>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 116 },
>>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 136 },
>>> > > > +
>>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio =  30 },
>>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio =  32 },
>>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio =  52 },
>>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 108 },
>>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio =  92 },
>>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 108 },
>>> > > > +
>>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 18 },
>>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 20 },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 32 },
>>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 68 },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 58 },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 68 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>>> > > >  
>>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>>> > > > -        { .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
>>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>>> > > > +        { .refclk = 24400, .cdclk = 648000, .ratio = 54 },
>>> > > >  
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
>>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
>>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>>> > > > -
>>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
>>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
>>> > > > -
>>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
>>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
>>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
>>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>>> > > > +
>>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
>>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
>>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
>>> > > > +
>>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
>>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
>>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
>>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
>>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
>>> > > > -        { .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
>>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
>>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
>>> > > > -
>>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
>>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
>>> > > > -        { .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
>>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
>>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
>>> > > > -
>>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
>>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
>>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
>>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
>>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
>>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
>>> > > > +        { .refclk = 19200, .cdclk = 480000, .ratio = 50 },
>>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
>>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
>>> > > > +
>>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
>>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
>>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
>>> > > > +        { .refclk = 24000, .cdclk = 480000, .ratio = 40 },
>>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
>>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
>>> > > > +
>>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
>>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
>>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25 },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
>>> > > > -        { .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
>>> > > > -        { .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
>>> > > > -        { .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
>>> > > > -        { .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
>>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
>>> > > > -        { .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
>>> > > > -        { .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
>>> > > > -        { .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
>>> > > > -        { .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
>>> > > > -        { .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
>>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
>>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
>>> > > > +        { .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
>>> > > > +        { .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
>>> > > > +        { .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
>>> > > > +        { .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
>>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
>>> > > > +        { .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
>>> > > > +        { .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
>>> > > > +        { .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
>>> > > > +        { .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
>>> > > > +        { .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
>>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
>>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
>>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
>>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
>>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
>>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
>>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
>>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
>>> > > > -        { .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
>>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
>>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
>>> > > > -        { .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
>>> > > > -        { .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
>>> > > > -        { .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
>>> > > > -        { .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
>>> > > > -        { .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
>>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
>>> > > > -        { .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
>>> > > > -        { .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
>>> > > > -        { .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
>>> > > > -        { .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
>>> > > > -        { .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
>>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
>>> > > > -        { .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
>>> > > > -        { .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
>>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
>>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
>>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
>>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
>>> > > > +        { .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
>>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
>>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
>>> > > > +        { .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
>>> > > > +        { .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
>>> > > > +        { .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
>>> > > > +        { .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
>>> > > > +        { .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
>>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
>>> > > > +        { .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
>>> > > > +        { .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
>>> > > > +        { .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
>>> > > > +        { .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
>>> > > > +        { .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
>>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
>>> > > > +        { .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
>>> > > > +        { .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
>>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
>>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
>>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
>>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
>>> > > >          {}
>>> > > >  };
>>> > > >  
>>> > > > -- 
>>> > > > 2.42.1
>>> > > > 
>>> > > 
>>> > > -- 
>>> > > Matt Roper
>>> > > Graphics Software Engineer
>>> > > Linux GPU Platform Enablement
>>> > > Intel Corporation
>>> > 
>>> > -- 
>>> > Ville Syrjälä
>>> > Intel
>>> 
>>> -- 
>>> Ville Syrjälä
>>> Intel
>>
>>-- 
>>Matt Roper
>>Graphics Software Engineer
>>Linux GPU Platform Enablement
>>Intel Corporation

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-12-04 14:13           ` Gustavo Sousa
@ 2023-12-14  0:07             ` Matt Roper
  2023-12-20 21:13               ` Matt Roper
  0 siblings, 1 reply; 14+ messages in thread
From: Matt Roper @ 2023-12-14  0:07 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

On Mon, Dec 04, 2023 at 11:13:52AM -0300, Gustavo Sousa wrote:
> Quoting Gustavo Sousa (2023-12-04 11:04:20-03:00)
> >Quoting Matt Roper (2023-12-01 20:07:48-03:00)
> >>On Tue, Nov 28, 2023 at 11:51:43AM +0200, Ville Syrjälä wrote:
> >>> On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> >>> > On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> >>> > > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> >>> > > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> >>> > > > Use literal representation of cdclk tables"). It has been almost 4 years
> >>> > > > and the divider field was not really used yet. Let's remove it.
> >>> > > 
> >>> > > I think we need to go the other way and actually start using it instead
> >>> > > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> >>> > > driver is using today doesn't account for the potential use of
> >>> > > squashing, which means we program the wrong divider value into CDCLK_CTL
> >>> > > in some cases.  I pointed that out during the LNL code reviews a couple
> >>> > > months ago, and I believe Stan is working on fixing that.
> >>> > 
> >>> > The code should be correct as is, but it does assume that the cd2x
> >>> > divider is 2 when squashing is used. If that no longer holds then we
> >>> > have to change something.
> >>> 
> >>> Something like this should be sufficient to eliminate that
> >>> assumption.
> >>> 
> >>> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> >>> index 8bb6bab7c8cd..58567d42e725 100644
> >>> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> >>> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> >>> @@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
> >>>  
> >>>          waveform = cdclk_squash_waveform(dev_priv, cdclk);
> >>>  
> >>> -        if (waveform)
> >>> -                clock = vco / 2;
> 
> Ah, one thing I did not mention in my previous message is that, this
> assignment here means that we were always assuming that the divisor was
> always 1:
> 
>     x' = vco / 2
> 
> , meaning that bxt_cdclk_cd2x_div_sel() would do:
> 
>     y' = vco / x' / 2  = 1
> 

I finally got back to looking at this.  With Ville's cleanups it's a lot
clearer and I agree we should be safe to drop the dividers from the
table.

Reviewed-by: Matt Roper <matthew.d.roper@intel.com>

Sorry for the delay getting back to this.


Matt

> --
> Gustavo Sousa
> 
> >>> -        else
> >>> -                clock = cdclk;
> >>> +        clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
> >>>  
> >>
> >>I haven't had time to come back and revisit this (or check your new
> >>series yet), but when I was reviewing the cdclk stuff a couple months
> >>ago, my concern was around bxt_cdclk_cd2x_div_sel() which is deriving
> >>the CD2X divider from the vco and cdclk value.  On a platform like DG2,
> >>we use squashing instead of changes to PLL ratio to hit different cdclk
> >>values, so the calculation there doesn't seem valid anymore.  Am I
> >>overlooking something?
> >
> >I looked at Ville's patches and they seem correct to me - althought I'm
> >not that experienced and might be missing something as well... Here goes
> >my rationale:
> >
> >Looking at how cdclk works with our hardware, I would say that the
> >cdclock is defined by:
> >
> >    cdclk = vco / div / sq_div / 2
> >
> >, with: vco being the output of the CD2X PLL; "div", the CD2X divider;
> >"sq_div", the divider that is derived from the squash wave (16 / "sqash
> >wave 1's count"); and 2, the final division that is done at the end.
> >
> >The DIV_ROUND_CLOSEST() operation suggested above is equivalent to
> >doing:
> >
> >    x = cdclk * sq_div = vco / div / 2
> >
> >Meaning that x is the "unsquashed cdclk". From this point, what
> >bxt_cdclk_cd2x_div_sel() is doing is:
> >
> >    y = vco / x / 2
> >
> >(the last "2" divisor comes from the switch-case statement).
> >
> >That resolves to:
> >
> >    y = vco / (vco / div / 2) / 2 = div
> >
> >--
> >Gustavo Sousa
> >
> >>
> >>
> >>Matt
> >>
> >>>          if (HAS_CDCLK_SQUASH(dev_priv))
> >>>                  dg2_cdclk_squash_program(dev_priv, waveform);
> >>>  
> >>> > 
> >>> > > 
> >>> > > I wonder if the misprogramming we're doing today is what requires the
> >>> > > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> >>> > > 
> >>> > > 
> >>> > > Matt
> >>> > > 
> >>> > > > 
> >>> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> >>> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >>> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> >>> > > > ---
> >>> > > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> >>> > > >  1 file changed, 134 insertions(+), 135 deletions(-)
> >>> > > > 
> >>> > > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> >>> > > > index b93d1ad7936d..7f85a216ff5c 100644
> >>> > > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> >>> > > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> >>> > > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> >>> > > >          u32 cdclk;
> >>> > > >          u16 refclk;
> >>> > > >          u16 waveform;
> >>> > > > -        u8 divider;        /* CD2X divider * 2 */
> >>> > > >          u8 ratio;
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> >>> > > > -        { .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> >>> > > > -        { .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> >>> > > > -        { .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> >>> > > > -        { .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> >>> > > > +        { .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> >>> > > > +        { .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> >>> > > > +        { .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> >>> > > > +        { .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> >>> > > > +        { .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> >>> > > > -        { .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> >>> > > > -        { .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> >>> > > > +        { .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> >>> > > > +        { .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> >>> > > > +        { .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> >>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> >>> > > > -
> >>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> >>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> >>> > > > -
> >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> >>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> >>> > > > +
> >>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> >>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> >>> > > > +
> >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> >>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> >>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> >>> > > > -
> >>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> >>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> >>> > > > -
> >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> >>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> >>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> >>> > > > +
> >>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> >>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> >>> > > > +
> >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> >>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> >>> > > >  
> >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> >>> > > > -        { .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> >>> > > > +        { .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> >>> > > >  
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> >>> > > > -
> >>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> >>> > > > -
> >>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> >>> > > > +
> >>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> >>> > > > +
> >>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> >>> > > > -        { .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> >>> > > > -
> >>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> >>> > > > -        { .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> >>> > > > -
> >>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> >>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> >>> > > > +        { .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> >>> > > > +
> >>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> >>> > > > +        { .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> >>> > > > +
> >>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> >>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> >>> > > > -        { .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> >>> > > > -        { .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> >>> > > > -        { .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> >>> > > > -        { .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> >>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> >>> > > > -        { .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> >>> > > > -        { .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> >>> > > > -        { .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> >>> > > > -        { .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> >>> > > > -        { .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> >>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> >>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> >>> > > > +        { .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> >>> > > > +        { .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> >>> > > > +        { .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> >>> > > > +        { .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> >>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> >>> > > > +        { .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> >>> > > > +        { .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> >>> > > > +        { .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> >>> > > > +        { .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> >>> > > > +        { .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> >>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> >>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> >>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> >>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> >>> > > > -        { .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> >>> > > > -        { .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> >>> > > > -        { .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> >>> > > > -        { .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> >>> > > > -        { .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> >>> > > > -        { .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> >>> > > > -        { .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> >>> > > > -        { .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> >>> > > > -        { .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> >>> > > > -        { .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> >>> > > > -        { .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> >>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> >>> > > > -        { .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> >>> > > > -        { .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> >>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> >>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> >>> > > > +        { .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> >>> > > > +        { .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> >>> > > > +        { .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> >>> > > > +        { .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> >>> > > > +        { .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> >>> > > > +        { .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> >>> > > > +        { .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> >>> > > > +        { .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> >>> > > > +        { .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> >>> > > > +        { .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> >>> > > > +        { .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> >>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> >>> > > > +        { .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> >>> > > > +        { .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> >>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> >>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> >>> > > >          {}
> >>> > > >  };
> >>> > > >  
> >>> > > > -- 
> >>> > > > 2.42.1
> >>> > > > 
> >>> > > 
> >>> > > -- 
> >>> > > Matt Roper
> >>> > > Graphics Software Engineer
> >>> > > Linux GPU Platform Enablement
> >>> > > Intel Corporation
> >>> > 
> >>> > -- 
> >>> > Ville Syrjälä
> >>> > Intel
> >>> 
> >>> -- 
> >>> Ville Syrjälä
> >>> Intel
> >>
> >>-- 
> >>Matt Roper
> >>Graphics Software Engineer
> >>Linux GPU Platform Enablement
> >>Intel Corporation

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables
  2023-12-14  0:07             ` Matt Roper
@ 2023-12-20 21:13               ` Matt Roper
  0 siblings, 0 replies; 14+ messages in thread
From: Matt Roper @ 2023-12-20 21:13 UTC (permalink / raw)
  To: Gustavo Sousa; +Cc: intel-gfx

On Wed, Dec 13, 2023 at 04:07:26PM -0800, Matt Roper wrote:
> On Mon, Dec 04, 2023 at 11:13:52AM -0300, Gustavo Sousa wrote:
> > Quoting Gustavo Sousa (2023-12-04 11:04:20-03:00)
> > >Quoting Matt Roper (2023-12-01 20:07:48-03:00)
> > >>On Tue, Nov 28, 2023 at 11:51:43AM +0200, Ville Syrjälä wrote:
> > >>> On Tue, Nov 28, 2023 at 10:43:36AM +0200, Ville Syrjälä wrote:
> > >>> > On Mon, Nov 27, 2023 at 08:21:46AM -0800, Matt Roper wrote:
> > >>> > > On Fri, Nov 24, 2023 at 05:55:23PM -0300, Gustavo Sousa wrote:
> > >>> > > > The cdclk tables were introduced with commit 736da8112fee ("drm/i915:
> > >>> > > > Use literal representation of cdclk tables"). It has been almost 4 years
> > >>> > > > and the divider field was not really used yet. Let's remove it.
> > >>> > > 
> > >>> > > I think we need to go the other way and actually start using it instead
> > >>> > > of (incorrectly) trying to re-derive it from cdclk->vco.  The logic the
> > >>> > > driver is using today doesn't account for the potential use of
> > >>> > > squashing, which means we program the wrong divider value into CDCLK_CTL
> > >>> > > in some cases.  I pointed that out during the LNL code reviews a couple
> > >>> > > months ago, and I believe Stan is working on fixing that.
> > >>> > 
> > >>> > The code should be correct as is, but it does assume that the cd2x
> > >>> > divider is 2 when squashing is used. If that no longer holds then we
> > >>> > have to change something.
> > >>> 
> > >>> Something like this should be sufficient to eliminate that
> > >>> assumption.
> > >>> 
> > >>> diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > >>> index 8bb6bab7c8cd..58567d42e725 100644
> > >>> --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > >>> +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > >>> @@ -1897,10 +1897,7 @@ static void _bxt_set_cdclk(struct drm_i915_private *dev_priv,
> > >>>  
> > >>>          waveform = cdclk_squash_waveform(dev_priv, cdclk);
> > >>>  
> > >>> -        if (waveform)
> > >>> -                clock = vco / 2;
> > 
> > Ah, one thing I did not mention in my previous message is that, this
> > assignment here means that we were always assuming that the divisor was
> > always 1:
> > 
> >     x' = vco / 2
> > 
> > , meaning that bxt_cdclk_cd2x_div_sel() would do:
> > 
> >     y' = vco / x' / 2  = 1
> > 
> 
> I finally got back to looking at this.  With Ville's cleanups it's a lot
> clearer and I agree we should be safe to drop the dividers from the
> table.
> 
> Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
> 
> Sorry for the delay getting back to this.

And applied to drm-intel-next.  Thanks for the patch.


Matt

> 
> 
> Matt
> 
> > --
> > Gustavo Sousa
> > 
> > >>> -        else
> > >>> -                clock = cdclk;
> > >>> +        clock = DIV_ROUND_CLOSEST(cdclk * 16, cdclk_squash_divider(waveform));
> > >>>  
> > >>
> > >>I haven't had time to come back and revisit this (or check your new
> > >>series yet), but when I was reviewing the cdclk stuff a couple months
> > >>ago, my concern was around bxt_cdclk_cd2x_div_sel() which is deriving
> > >>the CD2X divider from the vco and cdclk value.  On a platform like DG2,
> > >>we use squashing instead of changes to PLL ratio to hit different cdclk
> > >>values, so the calculation there doesn't seem valid anymore.  Am I
> > >>overlooking something?
> > >
> > >I looked at Ville's patches and they seem correct to me - althought I'm
> > >not that experienced and might be missing something as well... Here goes
> > >my rationale:
> > >
> > >Looking at how cdclk works with our hardware, I would say that the
> > >cdclock is defined by:
> > >
> > >    cdclk = vco / div / sq_div / 2
> > >
> > >, with: vco being the output of the CD2X PLL; "div", the CD2X divider;
> > >"sq_div", the divider that is derived from the squash wave (16 / "sqash
> > >wave 1's count"); and 2, the final division that is done at the end.
> > >
> > >The DIV_ROUND_CLOSEST() operation suggested above is equivalent to
> > >doing:
> > >
> > >    x = cdclk * sq_div = vco / div / 2
> > >
> > >Meaning that x is the "unsquashed cdclk". From this point, what
> > >bxt_cdclk_cd2x_div_sel() is doing is:
> > >
> > >    y = vco / x / 2
> > >
> > >(the last "2" divisor comes from the switch-case statement).
> > >
> > >That resolves to:
> > >
> > >    y = vco / (vco / div / 2) / 2 = div
> > >
> > >--
> > >Gustavo Sousa
> > >
> > >>
> > >>
> > >>Matt
> > >>
> > >>>          if (HAS_CDCLK_SQUASH(dev_priv))
> > >>>                  dg2_cdclk_squash_program(dev_priv, waveform);
> > >>>  
> > >>> > 
> > >>> > > 
> > >>> > > I wonder if the misprogramming we're doing today is what requires the
> > >>> > > "HACK" at the bottom of intel_crtc_compute_min_cdclk for DG2?
> > >>> > > 
> > >>> > > 
> > >>> > > Matt
> > >>> > > 
> > >>> > > > 
> > >>> > > > Cc: Matt Roper <matthew.d.roper@intel.com>
> > >>> > > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >>> > > > Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> > >>> > > > ---
> > >>> > > >  drivers/gpu/drm/i915/display/intel_cdclk.c | 269 ++++++++++-----------
> > >>> > > >  1 file changed, 134 insertions(+), 135 deletions(-)
> > >>> > > > 
> > >>> > > > diff --git a/drivers/gpu/drm/i915/display/intel_cdclk.c b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > >>> > > > index b93d1ad7936d..7f85a216ff5c 100644
> > >>> > > > --- a/drivers/gpu/drm/i915/display/intel_cdclk.c
> > >>> > > > +++ b/drivers/gpu/drm/i915/display/intel_cdclk.c
> > >>> > > > @@ -1227,183 +1227,182 @@ struct intel_cdclk_vals {
> > >>> > > >          u32 cdclk;
> > >>> > > >          u16 refclk;
> > >>> > > >          u16 waveform;
> > >>> > > > -        u8 divider;        /* CD2X divider * 2 */
> > >>> > > >          u8 ratio;
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals bxt_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk = 144000, .divider = 8, .ratio = 60 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 288000, .divider = 4, .ratio = 60 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 384000, .divider = 3, .ratio = 60 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 576000, .divider = 2, .ratio = 60 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 624000, .divider = 2, .ratio = 65 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 144000, .ratio = 60 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 288000, .ratio = 60 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 384000, .ratio = 60 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 576000, .ratio = 60 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 624000, .ratio = 65 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals glk_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk =  79200, .divider = 8, .ratio = 33 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 158400, .divider = 4, .ratio = 33 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 316800, .divider = 2, .ratio = 33 },
> > >>> > > > +        { .refclk = 19200, .cdclk =  79200, .ratio = 33 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 158400, .ratio = 33 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 316800, .ratio = 33 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals icl_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 2, .ratio = 18 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 4, .ratio = 68 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 2, .ratio = 15 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 4, .ratio = 54 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio =  9 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 4, .ratio = 34 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 18 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 68 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio = 15 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 54 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio =  9 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals rkl_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 4, .ratio =  36 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 4, .ratio =  40 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 4, .ratio =  64 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 326400, .divider = 8, .ratio = 136 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 4, .ratio = 116 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 4, .ratio = 136 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 24000, .cdclk = 180000, .divider = 4, .ratio =  30 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 4, .ratio =  32 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 4, .ratio =  52 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 324000, .divider = 8, .ratio = 108 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 4, .ratio =  92 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 4, .ratio = 108 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 4, .ratio = 18 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 4, .ratio = 20 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 4, .ratio = 32 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 8, .ratio = 68 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 4, .ratio = 58 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 4, .ratio = 68 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio =  36 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio =  40 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio =  64 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 326400, .ratio = 136 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 116 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 136 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 24000, .cdclk = 180000, .ratio =  30 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio =  32 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio =  52 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 324000, .ratio = 108 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio =  92 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 108 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 18 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 20 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 32 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 68 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 58 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 68 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals adlp_a_step_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >>> > > >  
> > >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > >>> > > > -        { .refclk = 24400, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > >>> > > > +        { .refclk = 24400, .cdclk = 648000, .ratio = 54 },
> > >>> > > >  
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals adlp_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals rplu_cdclk_table[] = {
> > >>> > > > -        { .refclk = 19200, .cdclk = 172800, .divider = 3, .ratio = 27 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 192000, .divider = 2, .ratio = 20 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 307200, .divider = 2, .ratio = 32 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 480000, .divider = 2, .ratio = 50 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 556800, .divider = 2, .ratio = 58 },
> > >>> > > > -        { .refclk = 19200, .cdclk = 652800, .divider = 2, .ratio = 68 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 24000, .cdclk = 176000, .divider = 3, .ratio = 22 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 192000, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 312000, .divider = 2, .ratio = 26 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 480000, .divider = 2, .ratio = 40 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 552000, .divider = 2, .ratio = 46 },
> > >>> > > > -        { .refclk = 24000, .cdclk = 648000, .divider = 2, .ratio = 54 },
> > >>> > > > -
> > >>> > > > -        { .refclk = 38400, .cdclk = 179200, .divider = 3, .ratio = 14 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 10 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 172800, .ratio = 27 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 192000, .ratio = 20 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 307200, .ratio = 32 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 480000, .ratio = 50 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 556800, .ratio = 58 },
> > >>> > > > +        { .refclk = 19200, .cdclk = 652800, .ratio = 68 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 24000, .cdclk = 176000, .ratio = 22 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 192000, .ratio = 16 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 312000, .ratio = 26 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 480000, .ratio = 40 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 552000, .ratio = 46 },
> > >>> > > > +        { .refclk = 24000, .cdclk = 648000, .ratio = 54 },
> > >>> > > > +
> > >>> > > > +        { .refclk = 38400, .cdclk = 179200, .ratio = 14 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 10 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals dg2_cdclk_table[] = {
> > >>> > > > -        { .refclk = 38400, .cdclk = 163200, .divider = 2, .ratio = 34, .waveform = 0x8888 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 204000, .divider = 2, .ratio = 34, .waveform = 0x9248 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 244800, .divider = 2, .ratio = 34, .waveform = 0xa4a4 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 285600, .divider = 2, .ratio = 34, .waveform = 0xa54a },
> > >>> > > > -        { .refclk = 38400, .cdclk = 326400, .divider = 2, .ratio = 34, .waveform = 0xaaaa },
> > >>> > > > -        { .refclk = 38400, .cdclk = 367200, .divider = 2, .ratio = 34, .waveform = 0xad5a },
> > >>> > > > -        { .refclk = 38400, .cdclk = 408000, .divider = 2, .ratio = 34, .waveform = 0xb6b6 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 448800, .divider = 2, .ratio = 34, .waveform = 0xdbb6 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 489600, .divider = 2, .ratio = 34, .waveform = 0xeeee },
> > >>> > > > -        { .refclk = 38400, .cdclk = 530400, .divider = 2, .ratio = 34, .waveform = 0xf7de },
> > >>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > >>> > > > +        { .refclk = 38400, .cdclk = 163200, .ratio = 34, .waveform = 0x8888 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 204000, .ratio = 34, .waveform = 0x9248 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 244800, .ratio = 34, .waveform = 0xa4a4 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 285600, .ratio = 34, .waveform = 0xa54a },
> > >>> > > > +        { .refclk = 38400, .cdclk = 326400, .ratio = 34, .waveform = 0xaaaa },
> > >>> > > > +        { .refclk = 38400, .cdclk = 367200, .ratio = 34, .waveform = 0xad5a },
> > >>> > > > +        { .refclk = 38400, .cdclk = 408000, .ratio = 34, .waveform = 0xb6b6 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 448800, .ratio = 34, .waveform = 0xdbb6 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 489600, .ratio = 34, .waveform = 0xeeee },
> > >>> > > > +        { .refclk = 38400, .cdclk = 530400, .ratio = 34, .waveform = 0xf7de },
> > >>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals mtl_cdclk_table[] = {
> > >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0x0000 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0x0000 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0x0000 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0x0000 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0x0000 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0x0000 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0x0000 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0x0000 },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > >  static const struct intel_cdclk_vals lnl_cdclk_table[] = {
> > >>> > > > -        { .refclk = 38400, .cdclk = 153600, .divider = 2, .ratio = 16, .waveform = 0xaaaa },
> > >>> > > > -        { .refclk = 38400, .cdclk = 172800, .divider = 2, .ratio = 16, .waveform = 0xad5a },
> > >>> > > > -        { .refclk = 38400, .cdclk = 192000, .divider = 2, .ratio = 16, .waveform = 0xb6b6 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 211200, .divider = 2, .ratio = 16, .waveform = 0xdbb6 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 230400, .divider = 2, .ratio = 16, .waveform = 0xeeee },
> > >>> > > > -        { .refclk = 38400, .cdclk = 249600, .divider = 2, .ratio = 16, .waveform = 0xf7de },
> > >>> > > > -        { .refclk = 38400, .cdclk = 268800, .divider = 2, .ratio = 16, .waveform = 0xfefe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 288000, .divider = 2, .ratio = 16, .waveform = 0xfffe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 307200, .divider = 2, .ratio = 16, .waveform = 0xffff },
> > >>> > > > -        { .refclk = 38400, .cdclk = 330000, .divider = 2, .ratio = 25, .waveform = 0xdbb6 },
> > >>> > > > -        { .refclk = 38400, .cdclk = 360000, .divider = 2, .ratio = 25, .waveform = 0xeeee },
> > >>> > > > -        { .refclk = 38400, .cdclk = 390000, .divider = 2, .ratio = 25, .waveform = 0xf7de },
> > >>> > > > -        { .refclk = 38400, .cdclk = 420000, .divider = 2, .ratio = 25, .waveform = 0xfefe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 450000, .divider = 2, .ratio = 25, .waveform = 0xfffe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 480000, .divider = 2, .ratio = 25, .waveform = 0xffff },
> > >>> > > > -        { .refclk = 38400, .cdclk = 487200, .divider = 2, .ratio = 29, .waveform = 0xfefe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 522000, .divider = 2, .ratio = 29, .waveform = 0xfffe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 556800, .divider = 2, .ratio = 29, .waveform = 0xffff },
> > >>> > > > -        { .refclk = 38400, .cdclk = 571200, .divider = 2, .ratio = 34, .waveform = 0xfefe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 612000, .divider = 2, .ratio = 34, .waveform = 0xfffe },
> > >>> > > > -        { .refclk = 38400, .cdclk = 652800, .divider = 2, .ratio = 34, .waveform = 0xffff },
> > >>> > > > +        { .refclk = 38400, .cdclk = 153600, .ratio = 16, .waveform = 0xaaaa },
> > >>> > > > +        { .refclk = 38400, .cdclk = 172800, .ratio = 16, .waveform = 0xad5a },
> > >>> > > > +        { .refclk = 38400, .cdclk = 192000, .ratio = 16, .waveform = 0xb6b6 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 211200, .ratio = 16, .waveform = 0xdbb6 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 230400, .ratio = 16, .waveform = 0xeeee },
> > >>> > > > +        { .refclk = 38400, .cdclk = 249600, .ratio = 16, .waveform = 0xf7de },
> > >>> > > > +        { .refclk = 38400, .cdclk = 268800, .ratio = 16, .waveform = 0xfefe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 288000, .ratio = 16, .waveform = 0xfffe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 307200, .ratio = 16, .waveform = 0xffff },
> > >>> > > > +        { .refclk = 38400, .cdclk = 330000, .ratio = 25, .waveform = 0xdbb6 },
> > >>> > > > +        { .refclk = 38400, .cdclk = 360000, .ratio = 25, .waveform = 0xeeee },
> > >>> > > > +        { .refclk = 38400, .cdclk = 390000, .ratio = 25, .waveform = 0xf7de },
> > >>> > > > +        { .refclk = 38400, .cdclk = 420000, .ratio = 25, .waveform = 0xfefe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 450000, .ratio = 25, .waveform = 0xfffe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 480000, .ratio = 25, .waveform = 0xffff },
> > >>> > > > +        { .refclk = 38400, .cdclk = 487200, .ratio = 29, .waveform = 0xfefe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 522000, .ratio = 29, .waveform = 0xfffe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 556800, .ratio = 29, .waveform = 0xffff },
> > >>> > > > +        { .refclk = 38400, .cdclk = 571200, .ratio = 34, .waveform = 0xfefe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 612000, .ratio = 34, .waveform = 0xfffe },
> > >>> > > > +        { .refclk = 38400, .cdclk = 652800, .ratio = 34, .waveform = 0xffff },
> > >>> > > >          {}
> > >>> > > >  };
> > >>> > > >  
> > >>> > > > -- 
> > >>> > > > 2.42.1
> > >>> > > > 
> > >>> > > 
> > >>> > > -- 
> > >>> > > Matt Roper
> > >>> > > Graphics Software Engineer
> > >>> > > Linux GPU Platform Enablement
> > >>> > > Intel Corporation
> > >>> > 
> > >>> > -- 
> > >>> > Ville Syrjälä
> > >>> > Intel
> > >>> 
> > >>> -- 
> > >>> Ville Syrjälä
> > >>> Intel
> > >>
> > >>-- 
> > >>Matt Roper
> > >>Graphics Software Engineer
> > >>Linux GPU Platform Enablement
> > >>Intel Corporation
> 
> -- 
> Matt Roper
> Graphics Software Engineer
> Linux GPU Platform Enablement
> Intel Corporation

-- 
Matt Roper
Graphics Software Engineer
Linux GPU Platform Enablement
Intel Corporation

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2023-12-20 21:13 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-24 20:55 [Intel-gfx] [PATCH] drm/i915/cdclk: Remove divider field from tables Gustavo Sousa
2023-11-24 21:57 ` [Intel-gfx] ✓ Fi.CI.BAT: success for " Patchwork
2023-11-26  4:12 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
2023-11-27 16:21 ` [Intel-gfx] [PATCH] " Matt Roper
2023-11-28  8:43   ` Ville Syrjälä
2023-11-28  8:53     ` Lisovskiy, Stanislav
2023-11-28  9:01     ` Ville Syrjälä
2023-11-28  9:51     ` Ville Syrjälä
2023-11-28 11:52       ` Ville Syrjälä
2023-12-01 23:07       ` Matt Roper
2023-12-04 14:04         ` Gustavo Sousa
2023-12-04 14:13           ` Gustavo Sousa
2023-12-14  0:07             ` Matt Roper
2023-12-20 21:13               ` Matt Roper

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.