On 2/17/23 13:46, Jani Nikula wrote: > Currently we only parse the Tiled Display Topology Data Block for > DisplayID structure version 1.2, but not 2.0. The contents seem to be > the same for both, so expand the parsing to structure version 2.0. > > Note that DisplayID spec version is not the same as DisplayID structure > version; DisplayID 1.3 uses structure version 1.2, and DisplayID 2.0-2.1 > use structure version 2.0. Lovely. > > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/drm_edid.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 03ad53a1ba82..ebab862b8b1a 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -7267,6 +7267,15 @@ static void drm_parse_tiled_block(struct drm_connector *connector, > } > } > > +static bool displayid_is_tiled_block(const struct displayid_iter *iter, > + const struct displayid_block *block) > +{ > + return (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_12 && > + block->tag == DATA_BLOCK_TILED_DISPLAY) || > + (displayid_version(iter) == DISPLAY_ID_STRUCTURE_VER_20 && > + block->tag == DATA_BLOCK_2_TILED_DISPLAY_TOPOLOGY); > +} > + > static void _drm_update_tile_info(struct drm_connector *connector, > const struct drm_edid *drm_edid) > { > @@ -7277,7 +7286,7 @@ static void _drm_update_tile_info(struct drm_connector *connector, > > displayid_iter_edid_begin(drm_edid, &iter); > displayid_iter_for_each(block, &iter) { > - if (block->tag == DATA_BLOCK_TILED_DISPLAY) > + if (displayid_is_tiled_block(&iter, block)) > drm_parse_tiled_block(connector, block); > } > displayid_iter_end(&iter); I don't have display setup to test this, but looks okay. Reviewed-by: Dmitry Osipenko <dmitry.osipenko@xxxxxxxxxxxxx> -- Best regards, Dmitry