drm/edid: no CEA v3 extension is not an error
authorJean Delvare <jdelvare@suse.de>
Fri, 15 Nov 2019 16:07:36 +0000 (17:07 +0100)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Fri, 15 Nov 2019 19:06:30 +0000 (21:06 +0200)
It is fine for displays without audio functionality to not implement
CEA v3 extension in their EDID. Do not return an error in that case,
instead return 0 as if there was a CEA v3 extension with no audio or
speaker block.

This fixes the second half of bug fdo#107825:
https://bugs.freedesktop.org/show_bug.cgi?id=107825

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Sean Paul <sean@poorly.run>
Cc: David Airlie <airlied@linux.ie>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191115170736.7d88593d@endymion
drivers/gpu/drm/drm_edid.c

index 474ac04d5600689393e80041729bdb3358fc17b0..a98f43e64582876d43d1cefe58c5dba1b48f4eec 100644 (file)
@@ -4279,12 +4279,12 @@ int drm_edid_to_sad(struct edid *edid, struct cea_sad **sads)
        cea = drm_find_cea_extension(edid);
        if (!cea) {
                DRM_DEBUG_KMS("SAD: no CEA Extension found\n");
-               return -ENOENT;
+               return 0;
        }
 
        if (cea_revision(cea) < 3) {
                DRM_DEBUG_KMS("SAD: wrong CEA revision\n");
-               return -EOPNOTSUPP;
+               return 0;
        }
 
        if (cea_db_offsets(cea, &start, &end)) {
@@ -4340,12 +4340,12 @@ int drm_edid_to_speaker_allocation(struct edid *edid, u8 **sadb)
        cea = drm_find_cea_extension(edid);
        if (!cea) {
                DRM_DEBUG_KMS("SAD: no CEA Extension found\n");
-               return -ENOENT;
+               return 0;
        }
 
        if (cea_revision(cea) < 3) {
                DRM_DEBUG_KMS("SAD: wrong CEA revision\n");
-               return -EOPNOTSUPP;
+               return 0;
        }
 
        if (cea_db_offsets(cea, &start, &end)) {