diff mbox series

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

Message ID 20250113-hdmi-conn-edid-read-fix-v2-1-d2a0438a44ab@collabora.com (mailing list archive)
State New
Headers show
Series [v2] drm/display: hdmi: Do not read EDID on disconnected connectors | expand

Commit Message

Cristian Ciocaltea Jan. 13, 2025, 1:36 p.m. UTC
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@collabora.com>
---
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@collabora.com
---
 drivers/gpu/drm/display/drm_hdmi_state_helper.c | 2 ++
 1 file changed, 2 insertions(+)


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

Comments

Maxime Ripard Jan. 14, 2025, 6:04 p.m. UTC | #1
On Mon, 13 Jan 2025 15:36:18 +0200, Cristian Ciocaltea wrote:
> 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.
> 
> [...]

Applied to misc/kernel.git (drm-misc-next-fixes).

Thanks!
Maxime
diff mbox series

Patch

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)