On Wed, 15 Jun 2022, Ville Syrjala <ville.syrjala@xxxxxxxxxxxxxxx> wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Older VBTs don't have all the stuff we've defined for the > LVDS options block (40). In particular we're currently parsing > the DPS panel type bits even though they may not exist, which > could mean we end up flagging the machine as supporting static > DRRS when the VBT declared no such thing. > > We don't actually have a clear idea which VBT versions have > which bits so we rely on the block size instead. > > Here's a quick list from my VBT stash: > mgm version 108 -> 4 bytes > alv version 120 -> 4 bytes > cst version 134 -> 14 bytes > pnv version 144 -> 14 bytes > cl version 142 -> 16 bytes > ctg version 155 -> 24 bytes > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Acked-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_bios.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c > index df52f406e1ae..807184fd5618 100644 > --- a/drivers/gpu/drm/i915/display/intel_bios.c > +++ b/drivers/gpu/drm/i915/display/intel_bios.c > @@ -758,6 +758,14 @@ parse_panel_options(struct drm_i915_private *i915, > > panel->vbt.lvds_dither = lvds_options->pixel_dither; > > + /* > + * Empirical evidence indicates the block size can be > + * either 4,14,16,24+ bytes. For older VBTs no clear > + * relationship between the block size vs. BDB version. > + */ > + if (get_blocksize(lvds_options) < 16) > + return; > + > drrs_mode = (lvds_options->dps_panel_type_bits > >> (panel_type * 2)) & MODE_MASK; > /* -- Jani Nikula, Intel Open Source Graphics Center