From: Jani Nikula Date: Mon, 15 Jan 2024 07:38:05 +0000 (+0200) Subject: Merge drm/drm-next into drm-intel-next X-Git-Tag: v6.9-rc1~126^2~21^2~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ea5c948cb64bab5bc7a5516774eb8536f05aa0d;p=thirdparty%2Flinux.git Merge drm/drm-next into drm-intel-next Backmerge to bring Xe driver to drm-intel-next. Signed-off-by: Jani Nikula --- 0ea5c948cb64bab5bc7a5516774eb8536f05aa0d diff --cc drivers/gpu/drm/i915/display/intel_dp.c index 3730a4de480fd,c3b906ebe542f..ab415f41924d7 --- a/drivers/gpu/drm/i915/display/intel_dp.c +++ b/drivers/gpu/drm/i915/display/intel_dp.c @@@ -6055,11 -6040,21 +6052,21 @@@ static void intel_dp_oob_hotplug_event( { struct intel_encoder *encoder = intel_attached_encoder(to_intel_connector(connector)); struct drm_i915_private *i915 = to_i915(connector->dev); + bool hpd_high = hpd_state == connector_status_connected; + unsigned int hpd_pin = encoder->hpd_pin; + bool need_work = false; spin_lock_irq(&i915->irq_lock); - i915->display.hotplug.event_bits |= BIT(encoder->hpd_pin); + if (hpd_high != test_bit(hpd_pin, &i915->display.hotplug.oob_hotplug_last_state)) { + i915->display.hotplug.event_bits |= BIT(hpd_pin); + + __assign_bit(hpd_pin, &i915->display.hotplug.oob_hotplug_last_state, hpd_high); + need_work = true; + } spin_unlock_irq(&i915->irq_lock); - intel_hpd_schedule_detection(i915); + + if (need_work) - queue_delayed_work(i915->unordered_wq, &i915->display.hotplug.hotplug_work, 0); ++ intel_hpd_schedule_detection(i915); } static const struct drm_connector_funcs intel_dp_connector_funcs = {