]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
drm/i915/bios: Define ALM only VBT block 9 contents
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 3 May 2024 12:24:30 +0000 (15:24 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 8 May 2024 13:40:35 +0000 (16:40 +0300)
For some reason ALM VBT has two dot clock override tables.
One as the normal block 15 and a second one as block 9.
The table in block 9 has no row_size/num_rows information.

On my Fujitsu Lifebook S6010 only the block 9 table has actual
data in it. Block 15 is present but all zeroes.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240503122449.27266-17-ville.syrjala@linux.intel.com
Acked-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_vbt_defs.h

index 75c702c9890b3d9a697cd8aec7e9be016303f875..0a3a7e3d1d99107961f26bd5ee6bb6a65740590d 100644 (file)
@@ -147,6 +147,7 @@ enum bdb_block_id {
        BDB_EXT_MMIO_REGS               = 6, /* VBIOS only */
        BDB_SWF_IO                      = 7, /* VBIOS only */
        BDB_SWF_MMIO                    = 8, /* VBIOS only */
+       BDB_DOT_CLOCK_OVERRIDE_ALM      = 9,
        BDB_PSR                         = 9, /* 165+ */
        BDB_MODE_REMOVAL_TABLE          = 10,
        BDB_CHILD_DEVICE_TABLE          = 11,
@@ -650,6 +651,25 @@ struct bdb_reg_table {
        /* u16 table_end_marker; */
 } __packed;
 
+/*
+ * Block 9 - Undocumented table (ALM only)
+ */
+
+struct dot_clock_override_entry_gen2 {
+       u32 dotclock;
+       u8 n;
+       u8 m1;
+       u8 m2;
+       u8 p1:5;
+       u8 p1_div_by_2:1;
+       u8 reserved:1;
+       u8 p2_div_by_4:1;
+} __packed;
+
+struct bdb_dot_clock_override_alm {
+       struct dot_clock_override_entry_gen2 t[0];
+} __packed;
+
 /*
  * Block 9 - SRD Feature Block
  */
@@ -801,17 +821,6 @@ struct bdb_driver_persistence {
  * Block 15 - Dot Clock Override Table
  */
 
-struct dot_clock_override_entry_gen2 {
-       u32 dotclock;
-       u8 n;
-       u8 m1;
-       u8 m2;
-       u8 p1:5;
-       u8 p1_div_by_2:1;
-       u8 reserved:1;
-       u8 p2_div_by_4:1;
-} __packed;
-
 struct dot_clock_override_entry_gen3 {
        u32 dotclock;
        u8 n;