aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-02-17 08:44:48 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2011-02-22 10:56:06 -0500
commitfca874092597ef946b8f07031d8c31c58b212144 (patch)
tree38eb33c44f5be00a102a22b7dab177fae5e247fa
parentc87252266352c5201e2925740018f52578fa92bb (diff)
drm/i915: Add a module parameter to ignore lid status
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>
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c3
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c5
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 64fb21e4bd2d..bdf4ceb1049d 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -43,6 +43,9 @@ module_param_named(modeset, i915_modeset, int, 0400);
43unsigned int i915_fbpercrtc = 0; 43unsigned int i915_fbpercrtc = 0;
44module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400); 44module_param_named(fbpercrtc, i915_fbpercrtc, int, 0400);
45 45
46int i915_panel_ignore_lid = 0;
47module_param_named(panel_ignore_lid, i915_panel_ignore_lid, int, 0600);
48
46unsigned int i915_powersave = 1; 49unsigned int i915_powersave = 1;
47module_param_named(powersave, i915_powersave, int, 0600); 50module_param_named(powersave, i915_powersave, int, 0600);
48 51
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 0c91262d259b..bd24861bcd95 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -958,6 +958,7 @@ enum intel_chip_family {
958extern struct drm_ioctl_desc i915_ioctls[]; 958extern struct drm_ioctl_desc i915_ioctls[];
959extern int i915_max_ioctl; 959extern int i915_max_ioctl;
960extern unsigned int i915_fbpercrtc; 960extern unsigned int i915_fbpercrtc;
961extern int i915_panel_ignore_lid;
961extern unsigned int i915_powersave; 962extern unsigned int i915_powersave;
962extern unsigned int i915_lvds_downclock; 963extern unsigned int i915_lvds_downclock;
963extern unsigned int i915_panel_use_ssc; 964extern unsigned int i915_panel_use_ssc;
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 286995a9a84a..784660a3667b 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -287,6 +287,11 @@ intel_panel_detect(struct drm_device *dev)
287{ 287{
288 struct drm_i915_private *dev_priv = dev->dev_private; 288 struct drm_i915_private *dev_priv = dev->dev_private;
289 289
290 if (i915_panel_ignore_lid)
291 return i915_panel_ignore_lid > 0 ?
292 connector_status_connected :
293 connector_status_disconnected;
294
290 /* Assume that the BIOS does not lie through the OpRegion... */ 295 /* Assume that the BIOS does not lie through the OpRegion... */
291 if (dev_priv->opregion.lid_state) 296 if (dev_priv->opregion.lid_state)
292 return ioread32(dev_priv->opregion.lid_state) & 0x1 ? 297 return ioread32(dev_priv->opregion.lid_state) & 0x1 ?