[PATCH] drm/edid: Ignore the "DFP 1.x" bit for non-TMDS outputs

From: =3D?UTF-8?q?Ville=3D20Syrj=3DC3=3DA4l=3DC3=3DA4?=3D

Date: Thu May 14 2026 - 11:46:54 EST


Limit the "DFP 1.x" EDID bit parsing to connector types
that use a DFP compatible interface, namely DVI and HDMI.

This avoid populating info->bpc for other output types,
allowing for driver specific fallbacks to kick in. In this
particular case we have a 6bpc eDP panel where we need to
rely on the bpc override from the Intel Video BIOS Table (VBT)
to determine the proper color depth. Unfortunately the VBT
override can't be generally trusted because it tends to be
left at the default 6bpc value regardless of the color depth
of the panel. So we only trust it if the EDID doesn't specify
a color depth explicitly.

Cc: Mario Kleiner <mario.kleiner.de@xxxxxxxxx>
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/16045
Fixes: 210a021dab63 ("drm/edid: Set 8 bpc color depth for displays
with "DFP 1.x compliant TMDS".")
Signed-off-by: Ville Syrj=C3=A4l=C3=A4 <ville.syrjala@xxxxxxxxxxxxxxx>
---
drivers/gpu/drm/drm_edid.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 404208bf23a6..ee99f680e8f5 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -5693,6 +5693,19 @@ void drm_edid_cta_sad_set(struct cea_sad
*cta_sad, const u8 *sad)
cta_sad->byte2 =3D sad[2];
}

+static bool connector_is_dfp_compatible(struct drm_connector *connector)
+{
+ switch (connector->connector_type) {
+ case DRM_MODE_CONNECTOR_DVII:
+ case DRM_MODE_CONNECTOR_DVID:
+ case DRM_MODE_CONNECTOR_HDMIA:
+ case DRM_MODE_CONNECTOR_HDMIB:
+ return true;
+ default:
+ return false;
+ }
+}
+
/*
* drm_edid_to_eld - build ELD from EDID
* @connector: connector corresponding to the HDMI/DP sink
@@ -6783,6 +6796,7 @@ static void update_display_info(struct
drm_connector *connector,
* extensions which tell otherwise.
*/
if (info->bpc =3D=3D 0 && edid->revision =3D=3D 3 &&
+ connector_is_dfp_compatible(connector) &&
edid->input & DRM_EDID_DIGITAL_DFP_1_X) {
info->bpc =3D 8;
drm_dbg_kms(connector->dev,
--=20
2.52.0