[Intel-gfx] [PATCH v2 13/20] drm/edid: convert drm_parse_cea_ext() to use cea db iter

Ville Syrjälä ville.syrjala at linux.intel.com
Wed May 4 22:14:40 UTC 2022


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 at linux.intel.com>
> Signed-off-by: Jani Nikula <jani.nikula at intel.com>
> ---
>  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 at linux.intel.com>

> -			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


More information about the Intel-gfx mailing list