[PATCH v2] drm/display: hdmi: Do not read EDID on disconnected connectors

From: Cristian Ciocaltea
Date: Mon Jan 13 2025 - 08:36:59 EST


The recently introduced hotplug event handler in the HDMI Connector
framework attempts to unconditionally read the EDID data, leading to a
bunch of non-harmful, yet quite annoying DDC/I2C related errors being
reported.

Ensure the operation is done only for connectors having the status
connected or unknown. Additionally, perform an explicit reset of the
connector information when dealing with a disconnected status.

Fixes: ab716b74dc9d ("drm/display/hdmi: implement hotplug functions")
Signed-off-by: Cristian Ciocaltea <cristian.ciocaltea@xxxxxxxxxxxxx>
---
Changes in v2:
- Moved drm_edid_connector_update() after
drm_connector_hdmi_audio_plugged_notify(), per Dmitry's review
- Updated commit description to mention the explicit connector
information reset (Maxime)
- Link to v1: https://lore.kernel.org/r/20250111-hdmi-conn-edid-read-fix-v1-1-d68361624380@xxxxxxxxxxxxx
---
drivers/gpu/drm/display/drm_hdmi_state_helper.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
index 2691e8b3e480131ac6e4e4b74b24947be55694bd..ca3c99b3805fbd78fb3162818b3877450d72b178 100644
--- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c
+++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c
@@ -788,6 +788,8 @@ drm_atomic_helper_connector_hdmi_update(struct drm_connector *connector,
if (status == connector_status_disconnected) {
// TODO: also handle CEC and scramber, HDMI sink disconnected.
drm_connector_hdmi_audio_plugged_notify(connector, false);
+ drm_edid_connector_update(connector, NULL);
+ return;
}

if (connector->hdmi.funcs->read_edid)

---
base-commit: 1854df7087be70ad54e24b2e308d7558ebea9f27
change-id: 20250110-hdmi-conn-edid-read-fix-178513c2b7ea