From: Jani Nikula <jani.nikula@intel.com>
To: "Michał Grzelak" <michal.grzelak@intel.com>,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org
Cc: "Suraj Kandpal" <suraj.kandpal@intel.com>,
"Michał Grzelak" <michal.grzelak@intel.com>
Subject: Re: [PATCH v11 0/8] Vswing / Pre-emphasis Override
Date: Tue, 01 Sep 2026 10:56:31 +0300 [thread overview]
Message-ID: <3a9f683f18c23e5439b45af72bc054378f2247c6@intel.com> (raw)
In-Reply-To: <20260813160918.918857-1-michal.grzelak@intel.com>
On Thu, 13 Aug 2026, Michał Grzelak <michal.grzelak@intel.com> wrote:
> Next version of [1]. v5 of IGT part is at [2].
>
> Removed dead NULL check of devdata which is no longer needed.
> Also improved code style of previous version.
On the whole,
Acked-by: Jani Nikula <jani.nikula@intel.com>
but please look into the Sashiko comments. I think there's some valid
feedback there, but see for yourself.
BR,
Jani.
>
> This series still does not include LT patches.
>
> Tested by loading xe with custom VBT#57 on PTL. Same for i915 on EHL.
>
> Custom VBT#57 from PTL decoded by [2]:
>
> Block 57 min size 2 less than block size 1154
> BDB block 57 (1154 bytes, min 2 bytes) - Vswing Preemph:
> Number of vswing tables: 6
> Number of columns: 3
> Number of rows: 16
> PHY type: Cx0
> Vswing Table #1 (C10: DP 1.4 RBR/HBR; C20: UNUSED):
> Preset #01: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #02: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #03: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #04: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #05: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #06: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #07: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #08: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #09: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #10: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Vswing Table #2 (C10: DP 1.4 HBR2/HBR3; C20: UNUSED):
> Preset #01: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #02: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #03: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #04: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #05: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #06: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #07: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #08: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #09: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #10: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Vswing Table #3 (C10: eDP non-HBR3; C20: UNUSED):
> Preset #01: vswing: 0x0000001a, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #02: vswing: 0x00000021, pre-cursor: 0x00000000, post-cursor: 0x00000006
> Preset #03: vswing: 0x00000026, pre-cursor: 0x00000000, post-cursor: 0x0000000b
> Preset #04: vswing: 0x0000002b, pre-cursor: 0x00000000, post-cursor: 0x00000013
> Preset #05: vswing: 0x00000027, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #06: vswing: 0x0000002d, pre-cursor: 0x00000000, post-cursor: 0x00000007
> Preset #07: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x0000000d
> Preset #08: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #09: vswing: 0x00000037, pre-cursor: 0x00000000, post-cursor: 0x00000007
> Preset #10: vswing: 0x0000003e, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Vswing Table #4 (C10: eDP HBR3; C20: UNUSED):
> Preset #01: vswing: 0x0000001a, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #02: vswing: 0x00000021, pre-cursor: 0x00000000, post-cursor: 0x00000006
> Preset #03: vswing: 0x00000026, pre-cursor: 0x00000000, post-cursor: 0x0000000b
> Preset #04: vswing: 0x0000002b, pre-cursor: 0x00000000, post-cursor: 0x00000013
> Preset #05: vswing: 0x00000027, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #06: vswing: 0x0000002d, pre-cursor: 0x00000000, post-cursor: 0x00000007
> Preset #07: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x0000000d
> Preset #08: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #09: vswing: 0x00000037, pre-cursor: 0x00000000, post-cursor: 0x00000007
> Preset #10: vswing: 0x0000003e, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Vswing Table #5 (C10: UNUSED; C20: DP 1.4):
> Preset #01: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #02: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #03: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #04: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #05: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #06: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #07: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #08: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #09: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #10: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Vswing Table #6 (C10: UNUSED; C20: DP 2.X):
> Preset #01: vswing: 0x00000030, pre-cursor: 0x00000000, post-cursor: 0x00000000
> Preset #02: vswing: 0x0000002b, pre-cursor: 0x00000000, post-cursor: 0x00000005
> Preset #03: vswing: 0x00000028, pre-cursor: 0x00000000, post-cursor: 0x00000008
> Preset #04: vswing: 0x00000025, pre-cursor: 0x00000000, post-cursor: 0x0000000b
> Preset #05: vswing: 0x00000021, pre-cursor: 0x00000000, post-cursor: 0x0000000f
> Preset #06: vswing: 0x0000002e, pre-cursor: 0x00000002, post-cursor: 0x00000000
> Preset #07: vswing: 0x0000002a, pre-cursor: 0x00000002, post-cursor: 0x00000004
> Preset #08: vswing: 0x00000026, pre-cursor: 0x00000002, post-cursor: 0x00000008
> Preset #09: vswing: 0x00000023, pre-cursor: 0x00000002, post-cursor: 0x0000000b
> Preset #10: vswing: 0x00000021, pre-cursor: 0x00000002, post-cursor: 0x0000000d
> Preset #11: vswing: 0x0000002c, pre-cursor: 0x00000004, post-cursor: 0x00000000
> Preset #12: vswing: 0x00000028, pre-cursor: 0x00000004, post-cursor: 0x00000004
> Preset #13: vswing: 0x00000025, pre-cursor: 0x00000004, post-cursor: 0x00000007
> Preset #14: vswing: 0x00000021, pre-cursor: 0x00000004, post-cursor: 0x0000000b
> Preset #15: vswing: 0x00000028, pre-cursor: 0x00000008, post-cursor: 0x00000000
> Preset #16: vswing: 0x0000001e, pre-cursor: 0x00000002, post-cursor: 0x00000002
>
> Custom VBT#57 from EHL decoded by [2]:
>
> Block 57 min size 2 less than block size 1322
> BDB block 57 (1322 bytes, min 2 bytes) - Vswing Preemph:
> Warning: purpose of tables varies between EHL & JSL
> Number of vswing tables: 3
> Number of columns: 11
> Number of rows: 10
> PHY type: Combo
> Vswing Table #1 (High Vswing eDP/DP upto HBR3):
> V0-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P1:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P2:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P3:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P1:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P2:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V2-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V2-P1:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V3-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> Vswing Table #2 (Low Vswing eDP upto HBR2):
> V0-P0:
> dw2_swing_sel: 0x0000000a, dw7_n_scalar: 0x00000033, dw4_cursor_coeff: 0x0000003f,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P1:
> dw2_swing_sel: 0x0000000a, dw7_n_scalar: 0x00000047, dw4_cursor_coeff: 0x00000038,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000007, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P2:
> dw2_swing_sel: 0x0000000c, dw7_n_scalar: 0x00000064, dw4_cursor_coeff: 0x00000033,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x0000000c, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P3:
> dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x0000002f,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000010, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P0:
> dw2_swing_sel: 0x0000000a, dw7_n_scalar: 0x00000046, dw4_cursor_coeff: 0x0000003f,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P1:
> dw2_swing_sel: 0x0000000c, dw7_n_scalar: 0x00000064, dw4_cursor_coeff: 0x00000037,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000008, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P2:
> dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x00000032,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x0000000d, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V2-P0:
> dw2_swing_sel: 0x0000000c, dw7_n_scalar: 0x00000061, dw4_cursor_coeff: 0x0000003f,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V2-P1:
> dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x00000037,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000008, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V3-P0:
> dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x0000003f,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> Vswing Table #3 (Low Vswing eDP upto HBR3):
> V0-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P1:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P2:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V0-P3:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P1:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V1-P2:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V2-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V2-P1:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
> V3-P0:
> dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
> dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
> rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
> cursor_program: 0x00000000, coeff_polarity: 0x00000000
>
>
> BR,
> Michał
>
> [1] https://lore.kernel.org/intel-gfx/20260702185839.4042397-1-michal.grzelak@intel.com/
> [2] https://lore.kernel.org/igt-dev/20260702182619.3973788-1-michal.grzelak@intel.com/
>
> ---
> Changelog:
> v10->v11
> - remove no-longer-relevant check for NULL devdata (Jani)
> - initialize local variables at declaration block (Jani)
> - branch with 'else` instead of initializing twice (Jani)
> - use blank line before 'return` (Jani)
>
> v9->v10
> - drop deconstifying default tables (Suraj, Jani)
> - add separate non-const field for `entries` caching
> - cache `entries` into const field after data is overwritten (Jani)
> - call dedicated VS/PE-O vfunc
>
> v8->v9
> - init vspeo before using it
> - deconstify intel_ddi_buf_trans_entry in separate commit
>
> v7->v8
> - remove comments (Suraj)
> - add check for LT (Suraj)
>
> v6->v7
> - parse VBT#57 before blocks dependant on child device list (Jani)
> - expand VS/PE-O acronym in debug logging (Jani)
> - handle VS/PE-O's VBT details in intel_bios_* functions (Jani)
> - remove vspeo's cast to (void *) (Jani)
> - check devdata->vspeo if VS/PE-O was requested
> - call encoder->get_buf_trans() once (Jani)
> - return NULL from intel_bios_get_* when using default (Jani)
> - validate VS/PE-O in intel_bios.c (Jani)
> - inline *_get_vspeo_buf_trans()
> - remove temporarily LT
>
> v5->v6
> - check if devdata is not NULL
> - add Bspec (Suraj)
> - remove drm_WARN_ONCE (Suraj)
> - pass default VS/PE tables to LT's BIOS accessor (Suraj)
> - set txswing & _level from default VS/PE tables (Suraj)
> - add helper checking if VS/PE-O has been allocated (Suraj)
>
> v4->v5
> - set devdata->vspeo->num_entries in intel_bios.c
> - add if-ladder instead of function pointer
> - blend index computation with table parsing
> - remove WARN and debug messages
> - remove enums entirely
> - add spaces around operators (Suraj)
> - remove spaces after type casting (Suraj)
> - remove INTEL_DISPLAY_STATE_WARN (Suraj)
> - change funcs prefix from snps_ to mtl_ (Suraj)
>
> v3->v4
> - add Bspec (Suraj)
> - remove unnecessary init of VS/PE-O metadata (Suraj)
> - add helper for computing number of rows (Suraj)
> - fix num_rows's type (Jani, Suraj)
> - declare num_rows (Suraj)
> - change debug message when requesting VS/PE-O (Suraj)
> - stick to solely changing VBT data into current structures (Jani)
> - move iterator declaration to declaration block (Suraj)
>
> v2->v3
> - remove unnecessary braces from if block (Suraj)
> - return -EINVAL instead of -1 (Suraj)
>
> Michał Grzelak (8):
> drm/i915/bios: search for VBT #57 by default
> drm/i915/bios: store VBT #57's metadata in intel_vbt_data
> drm/i915/bios: print VS/PE-O port info
> drm/i915/bios: de/allocate VS/PE-O buffers for each port
> drm/i915/buf_trans: add vfunc for VS/PE-O
> drm/i915: override Snps's VS/PE when requested
> drm/i915: override Combo's VS/PE when requested
> drm/i915/bios: remove VS/PE-O warning
>
> drivers/gpu/drm/i915/display/intel_bios.c | 267 +++++++++++++++++-
> drivers/gpu/drm/i915/display/intel_bios.h | 14 +
> .../drm/i915/display/intel_ddi_buf_trans.c | 86 +++++-
> .../gpu/drm/i915/display/intel_display_core.h | 7 +
> .../drm/i915/display/intel_display_types.h | 3 +
> 5 files changed, 363 insertions(+), 14 deletions(-)
--
Jani Nikula, Intel
prev parent reply other threads:[~2026-09-01 7:56 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 1/8] drm/i915/bios: search for VBT #57 by default Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data Michał Grzelak
2026-08-13 16:20 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 3/8] drm/i915/bios: print VS/PE-O port info Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port Michał Grzelak
2026-08-13 16:17 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 5/8] drm/i915/buf_trans: add vfunc for VS/PE-O Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested Michał Grzelak
2026-08-13 16:29 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 7/8] drm/i915: override Combo's " Michał Grzelak
2026-08-13 16:50 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 8/8] drm/i915/bios: remove VS/PE-O warning Michał Grzelak
2026-08-13 19:16 ` ✓ i915.CI.BAT: success for Vswing / Pre-emphasis Override (rev6) Patchwork
2026-08-14 2:12 ` ✗ i915.CI.Full: failure " Patchwork
2026-09-01 7:56 ` Jani Nikula [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3a9f683f18c23e5439b45af72bc054378f2247c6@intel.com \
--to=jani.nikula@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=michal.grzelak@intel.com \
--cc=suraj.kandpal@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox