Update EDID and CEC phys addr in the bridge detect() func to closely match the behavior of a bridge connector with a HDMI bridge attached and the dw-hdmi connector.
This change introduce a slight delay to the bridge connector detect() and get_modes() funcs due to multiple EDID reads. This is an acceptable added delay to help ensure EDID and CEC phys addr always are correct. Signed-off-by: Jonas Karlman <[email protected]> --- v7: Update commit message v6: New patch This is a temporary change until dw-hdmi is fully converted into a HDMI bridge in a future part of this multi-series effort. The patch "drm/bridge-connector: Use cached connector status in .get_modes()" [1] can help remove one unnecessary EDID read until dw-hdmi is fully converted into a HDMI bridge. [1] https://lore.kernel.org/dri-devel/[email protected]/ --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index 37406555af7b..0c4388e7aa5e 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2947,8 +2947,17 @@ static enum drm_connector_status dw_hdmi_bridge_detect(struct drm_bridge *bridge, struct drm_connector *connector) { struct dw_hdmi *hdmi = bridge->driver_private; + enum drm_connector_status status; - return dw_hdmi_detect(hdmi); + status = dw_hdmi_detect(hdmi); + + /* + * Update EDID and CEC phys addr to match the behavior of a bridge + * connector with a HDMI bridge attached and the dw-hdmi connector. + */ + dw_hdmi_connector_status_update(hdmi, connector, status); + + return status; } static const struct drm_edid *dw_hdmi_bridge_edid_read(struct drm_bridge *bridge, -- 2.54.0
