[Intel-gfx] [PATCH] drm/edid: filter DisplayID v2.0 CTA block in audio detection
Jani Nikula
jani.nikula at intel.com
Wed Mar 23 10:40:23 UTC 2022
On Wed, 23 Mar 2022, "Lee, Shawn C" <shawn.c.lee at intel.com> wrote:
> On Wednesday, March 23, 2022 6:04 PM, Nikula, Jani <jani.nikula at intel.com> wrote :
>>On Mon, 21 Mar 2022, Cooper Chiou <cooper.chiou at intel.com> 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 at intel.com>
>>> Cc: Shawn C Lee <shawn.c.lee at intel.com>
>>>
>>> Signed-off-by: Cooper Chiou <cooper.chiou at intel.com>
>>> ---
>>> 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
More information about the Intel-gfx
mailing list