drm/i915/bios: Define VBT block 10 (Mode Removal Table) contents
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 3 May 2024 12:24:27 +0000 (15:24 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Wed, 8 May 2024 13:38:45 +0000 (16:38 +0300)
Define the contents of VBT block 10 (Mode Removal Table).

There seem to be two variants:
- 8 byte entries for desktop systems
- 10 byte entries for mobile systems, with the extra
  panel_flags being a bitmask of LFPs

It seems starting from HSW only the mobile variant is
used anymore.

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

index 8aff4816f463169ed87dce8d605ba95ceb3b1cf9..c4435438508ed210d5d6b8618125a25981659f85 100644 (file)
@@ -677,6 +677,29 @@ struct bdb_psr {
        u32 psr2_tp2_tp3_wakeup_time;                           /* 226+ */
 } __packed;
 
+/*
+ * Block 10 - Mode Removal Table
+ */
+
+struct mode_removal_table {
+       u16 x_res;
+       u16 y_res;
+       u8 bpp;
+       u16 refresh_rate;
+       u8 removal_flags;
+       u16 panel_flags;
+} __packed;
+
+struct bdb_mode_removal {
+       u8 row_size; /* 8 or 10 bytes */
+       /*
+        * VBT spec says this is always 20 entries,
+        * but ALM seems to have only 15 entries.
+        */
+       struct mode_removal_table modes[];
+       /* u16 terminator; 0x0000 */
+} __packed;
+
 /*
  * Block 12 - Driver Features Data Block
  */