Message ID | 20240908132823.3308029-10-jonas@kwiboo.se (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | drm: bridge: dw_hdmi: Misc enable/disable, CEC and EDID cleanup | expand |
On 08/09/2024 15:28, Jonas Karlman wrote: > Update successfully read EDID during hotplug processing to ensure the > connector diplay_info is always up-to-date. > > Signed-off-by: Jonas Karlman <jonas@kwiboo.se> > --- > v2: No change > --- > drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > index c19307120909..7bd9f895f03f 100644 > --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c > @@ -2457,6 +2457,18 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force) > > status = dw_hdmi_detect(hdmi); > > + /* Update EDID during hotplug processing (force=false) */ > + if (status == connector_status_connected && !force) { > + const struct drm_edid *drm_edid; > + > + drm_edid = dw_hdmi_edid_read(hdmi, connector); > + if (drm_edid) > + drm_edid_connector_update(connector, drm_edid); > + cec_notifier_set_phys_addr(hdmi->cec_notifier, > + connector->display_info.source_physical_address); > + drm_edid_free(drm_edid); > + } > + > if (status == connector_status_disconnected) > cec_notifier_phys_addr_invalidate(hdmi->cec_notifier); > I wonder why we should read edid at each dw_hdmi_connector_detect() call, AFAIK it should only be when we have HPD pulses Neil
diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c index c19307120909..7bd9f895f03f 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2457,6 +2457,18 @@ dw_hdmi_connector_detect(struct drm_connector *connector, bool force) status = dw_hdmi_detect(hdmi); + /* Update EDID during hotplug processing (force=false) */ + if (status == connector_status_connected && !force) { + const struct drm_edid *drm_edid; + + drm_edid = dw_hdmi_edid_read(hdmi, connector); + if (drm_edid) + drm_edid_connector_update(connector, drm_edid); + cec_notifier_set_phys_addr(hdmi->cec_notifier, + connector->display_info.source_physical_address); + drm_edid_free(drm_edid); + } + if (status == connector_status_disconnected) cec_notifier_phys_addr_invalidate(hdmi->cec_notifier);
Update successfully read EDID during hotplug processing to ensure the connector diplay_info is always up-to-date. Signed-off-by: Jonas Karlman <jonas@kwiboo.se> --- v2: No change --- drivers/gpu/drm/bridge/synopsys/dw-hdmi.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)