On Fri, 03 May 2024, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > 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@xxxxxxxxxxxxxxx> Reviewed-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > 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_ */ -- Jani Nikula, Intel