|
@@ -686,7 +686,14 @@ static int intel_lid_notify(struct notifier_block *nb, unsigned long val,
|
|
|
struct drm_i915_private *dev_priv =
|
|
|
container_of(nb, struct drm_i915_private, lid_notifier);
|
|
|
struct drm_device *dev = dev_priv->dev;
|
|
|
+ struct drm_connector *connector = dev_priv->int_lvds_connector;
|
|
|
|
|
|
+ /*
|
|
|
+ * check and update the status of LVDS connector after receiving
|
|
|
+ * the LID nofication event.
|
|
|
+ */
|
|
|
+ if (connector)
|
|
|
+ connector->status = connector->funcs->detect(connector);
|
|
|
if (!acpi_lid_open()) {
|
|
|
dev_priv->modeset_on_lid = 1;
|
|
|
return NOTIFY_OK;
|
|
@@ -1124,6 +1131,8 @@ out:
|
|
|
DRM_DEBUG_KMS("lid notifier registration failed\n");
|
|
|
dev_priv->lid_notifier.notifier_call = NULL;
|
|
|
}
|
|
|
+ /* keep the LVDS connector */
|
|
|
+ dev_priv->int_lvds_connector = connector;
|
|
|
drm_sysfs_connector_add(connector);
|
|
|
return;
|
|
|
|