Next version of [1]. Corresponding IGT v3 is at [2].
Apparently in previous version I included enabling patch for LT; this
time it should be better.
Booted & loaded custom VBT#57 on PTL. Used VBT#57 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
[1]
https://lore.kernel.org/intel-gfx/[email protected]/
[2]
https://lore.kernel.org/igt-dev/[email protected]/
BR,
Michał
---
Changelog:
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 (7):
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 buffer for each port
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 | 275 +++++++++++++++++-
drivers/gpu/drm/i915/display/intel_bios.h | 14 +
.../drm/i915/display/intel_ddi_buf_trans.c | 27 ++
.../gpu/drm/i915/display/intel_display_core.h | 7 +
4 files changed, 314 insertions(+), 9 deletions(-)
--
2.45.2