Forces LVDS downclock with module parameter. Module paramter is the dot clock in Khz diff -uNrp a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c --- a/drivers/gpu/drm/i915/i915_drv.c 2012-12-10 22:30:57.000000000 -0500 +++ b/drivers/gpu/drm/i915/i915_drv.c 2012-12-27 16:21:43.607099597 -0500 @@ -90,6 +90,12 @@ MODULE_PARM_DESC(lvds_channel_mode, "Specify LVDS channel mode " "(0=probe BIOS [default], 1=single-channel, 2=dual-channel)"); +unsigned int i915_lvds_force_downclock __read_mostly = 0; +module_param_named(lvds_force_downclock, i915_lvds_force_downclock, int, 0444); +MODULE_PARM_DESC(lvds_force_downclock, + "Force lvds panel downclock to be on with a the " + "dotclock given"); + int i915_panel_use_ssc __read_mostly = -1; module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600); MODULE_PARM_DESC(lvds_use_ssc, diff -uNrp a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h --- a/drivers/gpu/drm/i915/i915_drv.h 2012-12-10 22:30:57.000000000 -0500 +++ b/drivers/gpu/drm/i915/i915_drv.h 2012-12-27 16:42:25.968568436 -0500 @@ -1210,6 +1210,7 @@ extern int i915_panel_ignore_lid __read_ extern unsigned int i915_powersave __read_mostly; extern int i915_semaphores __read_mostly; extern unsigned int i915_lvds_downclock __read_mostly; +extern unsigned int i915_lvds_force_downclock __read_mostly; extern int i915_lvds_channel_mode __read_mostly; extern int i915_panel_use_ssc __read_mostly; extern int i915_vbt_sdvo_panel_type __read_mostly; diff -uNrp a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c --- a/drivers/gpu/drm/i915/intel_lvds.c 2012-12-10 22:30:57.000000000 -0500 +++ b/drivers/gpu/drm/i915/intel_lvds.c 2012-12-27 16:21:43.613099523 -0500 @@ -838,6 +838,15 @@ static void intel_find_lvds_downclock(st "Normal clock %dKhz, downclock %dKhz\n", fixed_mode->clock, temp_downclock); } + else if (i915_lvds_force_downclock > 0 && i915_lvds_downclock) { + /* Using user set downclock for LVDS. */ + dev_priv->lvds_downclock_avail = 1; + temp_downclock = i915_lvds_force_downclock; + dev_priv->lvds_downclock = temp_downclock; + DRM_DEBUG_KMS("LVDS downclock forced by user. " + "Normal clock %dKhz, downclock %dKhz\n", + fixed_mode->clock, temp_downclock); + } } /*