drm/i915/display/dg2: Introduce CD clock squashing table
authorMika Kahola <mika.kahola@intel.com>
Fri, 19 Nov 2021 13:13:44 +0000 (15:13 +0200)
committerStanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Tue, 7 Dec 2021 14:54:03 +0000 (16:54 +0200)
For CD clock squashing method, we need to define corresponding CD clock table for
reference clocks, dividers and ratios for all CD clock options.

BSpec: 54034

v2: Add CD squashing waveforms as part of CD clock table (Ville)
v3: Waveform is 16 bits wide (Ville)
[v4: vsyrjala: Nuke the non-squasher based table,
               Set .divider=2 for consistency,
       Pack intel_cdclk_vals a bit nicer]
v5: Fix error in waveform value (Swati)
v6 (Lucas): Rebase on upstream
v7 (MattR): Drop 40.8, 81.6, and 122.4 MHz frequencies to reflect new
    bspec update.

Signed-off-by: Mika Kahola <mika.kahola@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20211119131348.725220-2-mika.kahola@intel.com
drivers/gpu/drm/i915/display/intel_cdclk.c
drivers/gpu/drm/i915/display/intel_cdclk.h

index 986fb9ba750ee1eb02626e77a5a86d5264373133..29c1bc12e225ab91b93d7cf98ad258091afba487 100644 (file)
@@ -1313,12 +1313,19 @@ static const struct intel_cdclk_vals adlp_cdclk_table[] = {
 };
 
 static const struct intel_cdclk_vals dg2_cdclk_table[] = {
-       { .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 = 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 },
        {}
 };
 
index 309b3f394e24182e8518348f928165543b55aa9b..89ca59c461020a28e9f1f3bf1a8cd2f16d20a3cc 100644 (file)
@@ -19,6 +19,7 @@ struct intel_crtc_state;
 struct intel_cdclk_vals {
        u32 cdclk;
        u16 refclk;
+       u16 waveform;
        u8 divider;     /* CD2X divider * 2 */
        u8 ratio;
 };