Op 23-06-2020 om 20:57 schreef Kunal Joshi: > From: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > > Added epoch counter checking to intel_encoder_hotplug > in order to be able process all the connector changes, > besides connection status. Also now any change in connector > would result in epoch counter change, so no multiple checks > are needed. > > v2: Renamed change counter to epoch counter. Fixed type name. > > v3: Fixed rebase conflict > > v4: Remove duplicate drm_edid_equal checks from hdmi and dp, > lets use only once edid property is getting updated and > increment epoch counter from there. > Also lets now call drm_connector_update_edid_property > right after we get edid always to make sure there is a > unified way to handle edid change, without having to > change tons of source code as currently > drm_connector_update_edid_property is called only in > certain cases like reprobing and not right after edid is > actually updated. > > v5: Fixed const modifiers, removed blank line > > v6: Removed drm specific part from this patch, leaving only > i915 specific changes here. > > Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@xxxxxxxxx> > --- Much better! Reviewed-by: Maarten Lankhorst <maarten.lankhorst@xxxxxxxxxxxxxxx> for whole series > drivers/gpu/drm/i915/display/intel_hotplug.c | 26 +++++++++++--------- > 1 file changed, 15 insertions(+), 11 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c > index 2e94c1413c02..393813494523 100644 > --- a/drivers/gpu/drm/i915/display/intel_hotplug.c > +++ b/drivers/gpu/drm/i915/display/intel_hotplug.c > @@ -283,6 +283,8 @@ intel_encoder_hotplug(struct intel_encoder *encoder, > { > struct drm_device *dev = connector->base.dev; > enum drm_connector_status old_status; > + u64 old_epoch_counter; > + bool ret = false; > > drm_WARN_ON(dev, !mutex_is_locked(&dev->mode_config.mutex)); > old_status = connector->base.status; > @@ -290,17 +292,19 @@ intel_encoder_hotplug(struct intel_encoder *encoder, > connector->base.status = > drm_helper_probe_detect(&connector->base, NULL, false); > > - if (old_status == connector->base.status) > - return INTEL_HOTPLUG_UNCHANGED; > - > - drm_dbg_kms(&to_i915(dev)->drm, > - "[CONNECTOR:%d:%s] status updated from %s to %s\n", > - connector->base.base.id, > - connector->base.name, > - drm_get_connector_status_name(old_status), > - drm_get_connector_status_name(connector->base.status)); > - > - return INTEL_HOTPLUG_CHANGED; > + if (old_epoch_counter != connector->base.epoch_counter) > + ret = true; > + > + if(ret) { > + DRM_DEBUG_KMS("[CONNECTOR:%d:%s] status updated from %s to %s(epoch counter %llu)\n", > + connector->base.base.id, > + connector->base.name, > + drm_get_connector_status_name(old_status), > + drm_get_connector_status_name(connector->base.status), > + connector->base.epoch_counter); > + return INTEL_HOTPLUG_CHANGED; > + } > + return INTEL_HOTPLUG_UNCHANGED; > } > > static bool intel_encoder_has_hpd_pulse(struct intel_encoder *encoder) _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel