On Tue, May 03, 2022 at 12:23:58PM +0300, Jani Nikula wrote: > Iterate through all CTA data blocks across all CTA Extensions and > DisplayID data blocks. > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Jani Nikula <jani.nikula@xxxxxxxxx> > --- > drivers/gpu/drm/drm_edid.c | 25 +++++++++++++------------ > 1 file changed, 13 insertions(+), 12 deletions(-) > > diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c > index 3433d9fa4799..98b2e6164468 100644 > --- a/drivers/gpu/drm/drm_edid.c > +++ b/drivers/gpu/drm/drm_edid.c > @@ -5497,8 +5497,9 @@ static void drm_parse_cea_ext(struct drm_connector *connector, > const struct edid *edid) > { > struct drm_display_info *info = &connector->display_info; > + const struct cea_db *db; > + struct cea_db_iter iter; > const u8 *edid_ext; > - int i, start, end; > > edid_ext = drm_find_cea_extension(edid); > if (!edid_ext) > @@ -5517,26 +5518,26 @@ static void drm_parse_cea_ext(struct drm_connector *connector, > info->color_formats |= DRM_COLOR_FORMAT_YCBCR422; > } > > - if (cea_db_offsets(edid_ext, &start, &end)) > - return; > - > - for_each_cea_db(edid_ext, i, start, end) { > - const u8 *db = &edid_ext[i]; > + cea_db_iter_edid_begin(edid, &iter); > + cea_db_iter_for_each(db, &iter) { > + /* FIXME: convert parsers to use struct cea_db */ > + const u8 *data = (const u8 *)db; > > if (cea_db_is_hdmi_vsdb(db)) > - drm_parse_hdmi_vsdb_video(connector, db); > + drm_parse_hdmi_vsdb_video(connector, data); > if (cea_db_is_hdmi_forum_vsdb(db) || > cea_db_is_hdmi_forum_scdb(db)) BTW looks like all of these could be 'else if'. Dunno if that actually affects the generated code though, or if the compiler is smart enough to see only one condition can by true. Reviewed-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > - drm_parse_hdmi_forum_scds(connector, db); > + drm_parse_hdmi_forum_scds(connector, data); > if (cea_db_is_microsoft_vsdb(db)) > - drm_parse_microsoft_vsdb(connector, db); > + drm_parse_microsoft_vsdb(connector, data); > if (cea_db_is_y420cmdb(db)) > - drm_parse_y420cmdb_bitmap(connector, db); > + drm_parse_y420cmdb_bitmap(connector, data); > if (cea_db_is_vcdb(db)) > - drm_parse_vcdb(connector, db); > + drm_parse_vcdb(connector, data); > if (cea_db_is_hdmi_hdr_metadata_block(db)) > - drm_parse_hdr_metadata_block(connector, db); > + drm_parse_hdr_metadata_block(connector, data); > } > + cea_db_iter_end(&iter); > } > > static > -- > 2.30.2 -- Ville Syrjälä Intel