[PATCH] drm/edid: Refine HDMI VSDB detect

Lee, Shawn C shawn.c.lee at intel.com
Mon Dec 13 14:09:33 UTC 2021


On Monday, December 13, 2021 at 12:45 p.m, Ville Syrjälä wrote:
>On Mon, Dec 13, 2021 at 12:42:22PM +0000, Lee, Shawn C wrote:
>> 
>> On Monday, December 13, 2021 8:31 PM, Ville Syrjälä wrote:
>> >On Sun, Dec 12, 2021 at 11:33:31PM +0800, Lee Shawn C wrote:
>> >> According to CEA-861-F chapter 7.5.4. It says "The VSDB shall contain 
>> >> the
>> >> 3 bytes of the IEEE OUI as well as any additional payload bytes needed."
>> >> Now DRM driver check HDMI OUI but VSDB payload size at least five bytes.
>> >> That may caused some HDMI monitors' audio feature can't be enabled.
>> >> Because of they only have three bytes payload (OUI only) in VSDB.
>> >
>> >HDMI 1.4a says
>> >"Sinks shall contain an HDMI VSDB minimally containing a 2-byte Source  Physical Address field following the 24-bit identifier. ...
>> > The minimum value of N (length) is 5 and the maximum value of N is 31."
>> >
>> >Do you actually have an EDID that violates that?
>> >
>> 
>> Yes! User report when connect to HDMI port on Acer V226HQL. Audio is not working.
>> But windows system did not have the same problem. We found its VSDB just have 3 bytes
>> payload (OUI). Then we share this patch to user then they report audio works properly
>> with this patch.
>
>Hrm. This deserves a comment then since it clearly violates the spec.
>Also a link to the bug if you have one would be nice to include here.
>

Let me create an issue and update monitor's EDID for you reference.
But I'm not sure which community is suitable to report this problem.
It looks to me should belong to DRM driver https://gitlab.freedesktop.org/drm/misc/-/issues.
Do you have any suggestion? Thanks!

>> 
>> Best regards,
>> Shawn
>> 
>> >> 
>> >> Cc: Ville Syrjälä <ville.syrjala at linux.intel.com>
>> >> Cc: Adam Jackson <ajax at redhat.com>
>> >> Cc: Dave Airlie <airlied at redhat.com>
>> >> Signed-off-by: Lee Shawn C <shawn.c.lee 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 12893e7be89b..5aa4a6bf4a13 100644
>> >> --- a/drivers/gpu/drm/drm_edid.c
>> >> +++ b/drivers/gpu/drm/drm_edid.c
>> >> @@ -4205,7 +4205,7 @@ static bool cea_db_is_hdmi_vsdb(const u8 *db)
>> >>  	if (cea_db_tag(db) != VENDOR_BLOCK)
>> >>  		return false;
>> >>  
>> >> -	if (cea_db_payload_len(db) < 5)
>> >> +	if (cea_db_payload_len(db) < 3)
>> >>  		return false;
>> >>  
>> >>  	return oui(db[3], db[2], db[1]) == HDMI_IEEE_OUI;
>> >> --
>> >> 2.31.1
>> >
>> >--
>> >Ville Syrjälä
>> >Intel
>> >


More information about the dri-devel mailing list