i915: Add option to bypass vbt table.
authorMathias Fröhlich <Mathias.Froehlich@web.de>
Thu, 1 Mar 2012 05:44:35 +0000 (06:44 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 1 Mar 2012 22:22:30 +0000 (23:22 +0100)
This change enables the use of displays where the vbt table just
contains inappropriate values, but either the vesa defaults or
the video=... modes do something sensible with the attached display.

The problem happens with an embedded board that contains vbt bios
tables that do not match the attached display.  Using this change and
the appropriate kernel boot command line they are able to use an
otherwise completely unusable secondary display on that embedded
board.

Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Signed-off-by: Mathias Froehlich <Mathias.Froehlich@web.de>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_drv.c
drivers/gpu/drm/i915/intel_bios.c

index 0694e170a338932ca7f81fa3559e0bf615076949..0e797d3cb5f4fea45332a63340b9afea644cf6ff 100644 (file)
@@ -89,8 +89,8 @@ MODULE_PARM_DESC(lvds_use_ssc,
 int i915_vbt_sdvo_panel_type __read_mostly = -1;
 module_param_named(vbt_sdvo_panel_type, i915_vbt_sdvo_panel_type, int, 0600);
 MODULE_PARM_DESC(vbt_sdvo_panel_type,
-               "Override selection of SDVO panel mode in the VBT "
-               "(default: auto)");
+               "Override/Ignore selection of SDVO panel mode in the VBT "
+               "(-2=ignore, -1=auto [default], index in VBT BIOS table)");
 
 static bool i915_try_reset __read_mostly = true;
 module_param_named(reset, i915_try_reset, bool, 0600);
index 8168d8f8a634ed8ccf8644f2039ee02c21b7d480..0ae76d6b6eab5950fd973c9da577e9bff992d53c 100644 (file)
@@ -255,6 +255,11 @@ parse_sdvo_panel_data(struct drm_i915_private *dev_priv,
        int index;
 
        index = i915_vbt_sdvo_panel_type;
+       if (index == -2) {
+               DRM_DEBUG_KMS("Ignore SDVO panel mode from BIOS VBT tables.\n");
+               return;
+       }
+
        if (index == -1) {
                struct bdb_sdvo_lvds_options *sdvo_lvds_options;