!dmi_check_system(intel_spurious_crt_detect)) {
                crt->base.hpd_pin = HPD_CRT;
                crt->base.hotplug = intel_encoder_hotplug;
+               intel_connector->polled = DRM_CONNECTOR_POLL_HPD;
        } else {
                intel_connector->polled = DRM_CONNECTOR_POLL_CONNECT;
        }
 
                connector->ycbcr_420_allowed = true;
 
        intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
+       intel_connector->polled = DRM_CONNECTOR_POLL_HPD;
 
        intel_dp_aux_init(intel_dp);
 
 
                connector->ycbcr_420_allowed = true;
 
        intel_encoder->hpd_pin = intel_hpd_pin_default(dev_priv, port);
+       intel_connector->polled = DRM_CONNECTOR_POLL_HPD;
 
        if (HAS_DDI(dev_priv))
                intel_connector->get_hw_state = intel_ddi_connector_get_hw_state;
 
                        DRM_DEBUG_DRIVER("Reenabling HPD on connector %s\n",
                                         connector->base.name);
                connector->base.polled = connector->polled;
-               if (!connector->base.polled)
-                       connector->base.polled = DRM_CONNECTOR_POLL_HPD;
        }
        drm_connector_list_iter_end(&conn_iter);
 
 
        drm_connector_list_iter_begin(dev, &conn_iter);
        for_each_intel_connector_iter(connector, &conn_iter) {
-               enum hpd_pin pin = intel_connector_hpd_pin(connector);
+               enum hpd_pin pin;
+
+               pin = intel_connector_hpd_pin(connector);
+               if (pin == HPD_NONE)
+                       continue;
 
                connector->base.polled = connector->polled;
 
-               if (pin != HPD_NONE && I915_HAS_HOTPLUG(dev_priv) &&
-                   !connector->base.polled)
-                       connector->base.polled = enabled ?
-                               DRM_CONNECTOR_POLL_CONNECT |
-                               DRM_CONNECTOR_POLL_DISCONNECT :
-                               DRM_CONNECTOR_POLL_HPD;
+               if (enabled && connector->base.polled == DRM_CONNECTOR_POLL_HPD)
+                       connector->base.polled = DRM_CONNECTOR_POLL_CONNECT |
+                               DRM_CONNECTOR_POLL_DISCONNECT;
        }
        drm_connector_list_iter_end(&conn_iter);
 
 
                 * Some SDVO devices have one-shot hotplug interrupts.
                 * Ensure that they get re-enabled when an interrupt happens.
                 */
+               intel_connector->polled = DRM_CONNECTOR_POLL_HPD;
                intel_encoder->hotplug = intel_sdvo_hotplug;
                intel_sdvo_enable_hotplug(intel_encoder);
        } else {