[PATCH 05/13] drm/meson: encoder_hdmi: Use CEC phys addr from display_info

Jonas Karlman jonas at kwiboo.se
Mon May 18 12:47:33 PDT 2026


The dw-hdmi bridge detect() func now updates EDID for the connector.
Something that ensures that display_info.source_physical_address has an
updated CEC phys addr when the hpd_notify() func is called.

Change to use display_info source_physical_address directly instead of
re-reading EDID to set the CEC phys addr at HPD interrupt.

Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
---
 drivers/gpu/drm/meson/meson_encoder_hdmi.c | 26 ++++------------------
 1 file changed, 4 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/meson/meson_encoder_hdmi.c b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
index 55c0601df3c6..1b9a1d9ed3d3 100644
--- a/drivers/gpu/drm/meson/meson_encoder_hdmi.c
+++ b/drivers/gpu/drm/meson/meson_encoder_hdmi.c
@@ -330,28 +330,10 @@ static void meson_encoder_hdmi_hpd_notify(struct drm_bridge *bridge,
 	if (!encoder_hdmi->cec_notifier)
 		return;
 
-	if (status == connector_status_connected) {
-		const struct drm_edid *drm_edid;
-		const struct edid *edid;
-
-		drm_edid = drm_bridge_edid_read(encoder_hdmi->bridge.next_bridge,
-						encoder_hdmi->connector);
-		if (!drm_edid)
-			return;
-
-		/*
-		 * FIXME: The CEC physical address should be set using
-		 * cec_notifier_set_phys_addr(encoder_hdmi->cec_notifier,
-		 * connector->display_info.source_physical_address) from a path
-		 * that has read the EDID and called
-		 * drm_edid_connector_update().
-		 */
-		edid = drm_edid_raw(drm_edid);
-
-		cec_notifier_set_phys_addr_from_edid(encoder_hdmi->cec_notifier, edid);
-
-		drm_edid_free(drm_edid);
-	} else
+	if (status == connector_status_connected)
+		cec_notifier_set_phys_addr(encoder_hdmi->cec_notifier,
+					   connector->display_info.source_physical_address);
+	else
 		cec_notifier_phys_addr_invalidate(encoder_hdmi->cec_notifier);
 }
 
-- 
2.54.0




More information about the Linux-rockchip mailing list