The code should obviously check the EDID feature field for EDID feature flags and not the color_formats field of the drm_display_info struct. Also it should update the color_formats field with new modes instead of overwriting the current mode.
Signed-off-by: Lars-Peter Clausen lars@metafoo.de --- drivers/gpu/drm/drm_edid.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c index 7ee7be1..a6bb2f5 100644 --- a/drivers/gpu/drm/drm_edid.c +++ b/drivers/gpu/drm/drm_edid.c @@ -1700,10 +1700,10 @@ static void drm_add_display_info(struct edid *edid, }
info->color_formats = DRM_COLOR_FORMAT_RGB444; - if (info->color_formats & DRM_EDID_FEATURE_RGB_YCRCB444) - info->color_formats = DRM_COLOR_FORMAT_YCRCB444; - if (info->color_formats & DRM_EDID_FEATURE_RGB_YCRCB422) - info->color_formats = DRM_COLOR_FORMAT_YCRCB422; + if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB444) + info->color_formats |= DRM_COLOR_FORMAT_YCRCB444; + if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422) + info->color_formats |= DRM_COLOR_FORMAT_YCRCB422;
/* Get data from CEA blocks if present */ edid_ext = drm_find_cea_extension(edid);