diff -Naur linux-4.9~rc8/drivers/gpu/drm/i915/intel_bios.c linux-4.9~rc8-patched/drivers/gpu/drm/i915/intel_bios.c --- linux-4.9~rc8/drivers/gpu/drm/i915/intel_bios.c 2016-12-04 21:50:51.000000000 +0100 +++ linux-4.9~rc8-patched/drivers/gpu/drm/i915/intel_bios.c 2016-12-07 13:39:00.247987113 +0100 @@ -218,19 +218,25 @@ dev_priv->vbt.lvds_dither = lvds_options->pixel_dither; - ret = intel_opregion_get_panel_type(dev_priv); - if (ret >= 0) { - WARN_ON(ret > 0xf); - panel_type = ret; - DRM_DEBUG_KMS("Panel type: %d (OpRegion)\n", panel_type); - } else { - if (lvds_options->panel_type > 0xf) { - DRM_DEBUG_KMS("Invalid VBT panel type 0x%x\n", - lvds_options->panel_type); - return; + panel_type = i915.vbt_sdvo_panel_type; + if (panel_type == -2) + return; + + if (panel_type < 0) { + ret = intel_opregion_get_panel_type(dev_priv); + if (ret >= 0) { + WARN_ON(ret > 0xf); + panel_type = ret; + DRM_DEBUG_KMS("Panel type: %d (OpRegion)\n", panel_type); + } else { + if (lvds_options->panel_type > 0xf) { + DRM_DEBUG_KMS("Invalid VBT panel type 0x%x\n", + lvds_options->panel_type); + return; + } + panel_type = lvds_options->panel_type; + DRM_DEBUG_KMS("Panel type: %d (VBT)\n", panel_type); } - panel_type = lvds_options->panel_type; - DRM_DEBUG_KMS("Panel type: %d (VBT)\n", panel_type); } dev_priv->vbt.panel_type = panel_type;