drm/i915: Make force_load_detect effective even w/ DMI quirks/hotplug
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 22 Mar 2018 17:41:35 +0000 (19:41 +0200)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 29 Mar 2018 16:14:21 +0000 (19:14 +0300)
When doing forced load detection testing we should totally ignore any
hotplug status for the connector. This is mostly relevant for machines
where we already ignore the hotplug status based on the DMI quirks. On
other machines we would currently skip the force load detection tests
on account of the connector already being connected.

v2: Drop the other force_load_detect check since it's useless now (Maarten)

Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180322174135.5982-1-ville.syrjala@linux.intel.com
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
drivers/gpu/drm/i915/intel_crt.c

index c0a8805b277faaa19d2bc0215fd8e9217e0ec297..de0e22322c76ed649c2f36266e65247ed9d02c28 100644 (file)
@@ -748,6 +748,11 @@ intel_crt_detect(struct drm_connector *connector,
                      connector->base.id, connector->name,
                      force);
 
+       if (i915_modparams.load_detect_test) {
+               intel_display_power_get(dev_priv, intel_encoder->power_domain);
+               goto load_detect;
+       }
+
        /* Skip machines without VGA that falsely report hotplug events */
        if (dmi_check_system(intel_spurious_crt_detect))
                return connector_status_disconnected;
@@ -776,11 +781,12 @@ intel_crt_detect(struct drm_connector *connector,
         * broken monitor (without edid) to work behind a broken kvm (that fails
         * to have the right resistors for HP detection) needs to fix this up.
         * For now just bail out. */
-       if (I915_HAS_HOTPLUG(dev_priv) && !i915_modparams.load_detect_test) {
+       if (I915_HAS_HOTPLUG(dev_priv)) {
                status = connector_status_disconnected;
                goto out;
        }
 
+load_detect:
        if (!force) {
                status = connector->status;
                goto out;