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 <[email protected]> --- 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
