On Wed, 23 Mar 2022, "Lee, Shawn C" <shawn.c.lee@xxxxxxxxx> wrote: > On Wednesday, March 23, 2022 6:04 PM, Nikula, Jani <jani.nikula@xxxxxxxxx> wrote : >>On Mon, 21 Mar 2022, Cooper Chiou <cooper.chiou@xxxxxxxxx> wrote: >>> In DisplayID v2.0 CTS data block 0x81 case, there is no any audio >>> information definition, but drm_detect_monitor_audio didn't filter it >>> so that it caused eDP dummy audio card be detected improperly. >>> >>> We observed this issue on some AUO/BOE eDP panel with DID v2.0 CTA >>> block, and fix issue by adding filter for edid_ext[0]=DATA_BLOCK_CTA >>> case. >> >>Out of curiosity, what does the CTA DisplayID Data Block have for Data Block revision? >> >>I haven't found any mention anywhere that it should have any correspondence to the CEA *extension* revision number, which is supposed to be 1..3, and really only 3 for about a decade now. >> >>Both the DisplayID v1.3 and v2.0 specs only mention revision 0. >> >>BR, >>Jani. >> > > We don't get many issues in EDID with DisplayID structure. In this case, the revision number is "0" as well. > As you mentioned, DisplayID v1.3 and v2.0 spec define the block revision value is always 0. Do you think it would cause any problem? A lot of places in the EDID parser expect CEA revision >= 3. This isn't true for DisplayID data blocks, so we end up skipping a bunch of stuff if there's no CEA extension and only a DisplayID block. I'm fixing this in my series. BR, Jani. > > Best regards, > Shawn > >>> >>> Cc: Jani Nikula <jani.nikula@xxxxxxxxx> >>> Cc: Shawn C Lee <shawn.c.lee@xxxxxxxxx> >>> >>> Signed-off-by: Cooper Chiou <cooper.chiou@xxxxxxxxx> >>> --- >>> drivers/gpu/drm/drm_edid.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c >>> index f5f5de362ff2..6c9ae4b130bd 100644 >>> --- a/drivers/gpu/drm/drm_edid.c >>> +++ b/drivers/gpu/drm/drm_edid.c >>> @@ -4845,7 +4845,7 @@ bool drm_detect_monitor_audio(struct edid *edid) >>> int start_offset, end_offset; >>> >>> edid_ext = drm_find_cea_extension(edid); >>> - if (!edid_ext) >>> + if (!edid_ext || (edid_ext[0] == DATA_BLOCK_CTA)) >>> goto end; >>> >>> has_audio = ((edid_ext[3] & EDID_BASIC_AUDIO) != 0); >> >>-- >>Jani Nikula, Intel Open Source Graphics Center >> -- Jani Nikula, Intel Open Source Graphics Center