drm/i915: Add a module parameter to ignore lid status
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 17 Feb 2011 13:44:48 +0000 (13:44 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 22 Feb 2011 15:56:06 +0000 (15:56 +0000)
Seems like we are forever to be cursed with buggy firmware, so allow the
user to explicitly set the panel connection status.

Of secondary utility for cases where I run laptops with the lid closed,
but still want to configure the LVDS.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/i915_drv.h
drivers/gpu/drm/i915/intel_panel.c

index 64fb21e4bd2dc0aa1c3a48814acb6fb0765a5017..bdf4ceb1049df11e01e6908c3c697e309b21433b 100644 (file)
@@ -43,6 +43,9 @@ module_param_named(modeset, i915_modeset, int, 0400);
 unsigned int i915_fbpercrtc = 0;
 module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400);
 
+int i915_panel_ignore_lid = 0;
+module_param_named(panel_ignore_lid, i915_panel_ignore_lid, int, 0600);
+
 unsigned int i915_powersave = 1;
 module_param_named(powersave, i915_powersave, int, 0600);
 
index 0c91262d259b4f290d594baecf0c8974452a83f5..bd24861bcd950853862ffb01b616b22ca5a0ee55 100644 (file)
@@ -958,6 +958,7 @@ enum intel_chip_family {
 extern struct drm_ioctl_desc i915_ioctls[];
 extern int i915_max_ioctl;
 extern unsigned int i915_fbpercrtc;
+extern int i915_panel_ignore_lid;
 extern unsigned int i915_powersave;
 extern unsigned int i915_lvds_downclock;
 extern unsigned int i915_panel_use_ssc;
index 286995a9a84ae6c7fc32a918e799f0cf6ff8546d..784660a3667b51c12ed453d9b82adae6a3ce9ba2 100644 (file)
@@ -287,6 +287,11 @@ intel_panel_detect(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
 
+       if (i915_panel_ignore_lid)
+               return i915_panel_ignore_lid > 0 ?
+                       connector_status_connected :
+                       connector_status_disconnected;
+
        /* Assume that the BIOS does not lie through the OpRegion... */
        if (dev_priv->opregion.lid_state)
                return ioread32(dev_priv->opregion.lid_state) & 0x1 ?