On Wed, 23 Mar 2022, "Lee, Shawn C" <shawn.c....@intel.com> wrote:
> On Wednesday, March 23, 2022 6:04 PM, Nikula, Jani <jani.nik...@intel.com> 
> wrote :
>>On Mon, 21 Mar 2022, Cooper Chiou <cooper.ch...@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.nik...@intel.com>
>>> Cc: Shawn C Lee <shawn.c....@intel.com>
>>>
>>> Signed-off-by: Cooper Chiou <cooper.ch...@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

Reply via email to