[PATCH] drm: Parse Colorimetry data block from EDID

Stephen Boyd swboyd at chromium.org
Mon Jan 27 18:46:01 UTC 2020


Quoting Abhinav Kumar (2020-01-23 14:40:45)
> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
> index 99769d6..148bfa4 100644
> --- a/drivers/gpu/drm/drm_edid.c
> +++ b/drivers/gpu/drm/drm_edid.c
> @@ -4199,6 +4200,57 @@ static void fixup_detailed_cea_mode_clock(struct drm_display_mode *mode)
>         mode->clock = clock;
>  }
>  
> +static bool cea_db_is_hdmi_colorimetry_data_block(const u8 *db)
> +{
> +       if (cea_db_tag(db) != USE_EXTENDED_TAG)
> +               return false;
> +
> +       if (db[1] != COLORIMETRY_DATA_BLOCK)
> +               return false;
> +
> +       if (cea_db_payload_len(db) < 2)
> +               return false;
> +
> +       return true;
> +}
> +
> +static void
> +drm_parse_colorimetry_data_block(struct drm_connector *connector, const u8 *db)
> +{
> +       struct drm_hdmi_info *info = &connector->display_info.hdmi;
> +
> +       /* As per CEA 861-G spec */
> +       /* Byte 3 Bit 0: xvYCC_601 */
> +       if (db[2] & BIT(0))

Why not use the defines added in drm_edid.h in this patch? Then the
comments can be removed because the code would look like

	if (db[2] & DRM_EDID_CLRMETRY_xvYCC_601)



More information about the dri-devel mailing list