Message ID | 20240503122449.27266-36-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm/i915/bios: Define (almost) all BDB blocks | expand |
On Fri, 03 May 2024, Ville Syrjala <ville.syrjala@linux.intel.com> wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > Define the contents of VBT block 253 (PRD Table). > > Unfortunately the block has two definitions, with the cutoff > supposedly happening on ICL vs. TGL. Also according to some > notes it might be that the VBIOS (if that's still a thing) > still uses the old definition even on TGL+. Quite the mess. > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> > --- > drivers/gpu/drm/i915/display/intel_vbt_defs.h | 26 +++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h > index 338f6133bb1e..9d5b87ff1728 100644 > --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h > +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h > @@ -189,6 +189,7 @@ enum bdb_block_id { > BDB_VSWING_PREEMPH = 57, /* 218+ */ > BDB_GENERIC_DTD = 58, /* 229+ */ > BDB_INT15_HOOK = 252, /* VBIOS only */ > + BDB_PRD_TABLE = 253, > BDB_SKIP = 254, /* VBIOS only */ > }; > > @@ -1576,4 +1577,29 @@ struct bdb_generic_dtd { > struct generic_dtd_entry dtd[]; /* up to 24 DTD's */ > } __packed; > > +/* > + * Block 253 - PRD Table > + */ > + > +struct prd_entry_old { > + u8 displays_attached; > + u8 display_in_pipe_a; > + u8 display_in_pipe_b; > +} __packed; > + > +struct bdb_prd_table_old { > + struct prd_entry_old list[0]; /* ???-216 */ > + u16 num_entries; /* ???-216 */ > +} __packed; > + > +struct prd_entry_new { > + u16 primary_display; > + u16 secondary_display; > +} __packed; > + > +struct bdb_prd_table_new { > + u16 num_entries; /* 217+ */ > + struct prd_entry_new list[]; /* 217+ */ > +} __packed; > + > #endif /* _INTEL_VBT_DEFS_H_ */
diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h index 338f6133bb1e..9d5b87ff1728 100644 --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h @@ -189,6 +189,7 @@ enum bdb_block_id { BDB_VSWING_PREEMPH = 57, /* 218+ */ BDB_GENERIC_DTD = 58, /* 229+ */ BDB_INT15_HOOK = 252, /* VBIOS only */ + BDB_PRD_TABLE = 253, BDB_SKIP = 254, /* VBIOS only */ }; @@ -1576,4 +1577,29 @@ struct bdb_generic_dtd { struct generic_dtd_entry dtd[]; /* up to 24 DTD's */ } __packed; +/* + * Block 253 - PRD Table + */ + +struct prd_entry_old { + u8 displays_attached; + u8 display_in_pipe_a; + u8 display_in_pipe_b; +} __packed; + +struct bdb_prd_table_old { + struct prd_entry_old list[0]; /* ???-216 */ + u16 num_entries; /* ???-216 */ +} __packed; + +struct prd_entry_new { + u16 primary_display; + u16 secondary_display; +} __packed; + +struct bdb_prd_table_new { + u16 num_entries; /* 217+ */ + struct prd_entry_new list[]; /* 217+ */ +} __packed; + #endif /* _INTEL_VBT_DEFS_H_ */