diff options
Diffstat (limited to 'drivers/gpu/drm/i915/intel_dp.c')
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c index 2c555f91bfae..1a431377d83b 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c | |||
@@ -1401,6 +1401,26 @@ static void intel_dp_get_config(struct intel_encoder *encoder, | |||
1401 | else | 1401 | else |
1402 | pipe_config->port_clock = 270000; | 1402 | pipe_config->port_clock = 270000; |
1403 | } | 1403 | } |
1404 | |||
1405 | if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp && | ||
1406 | pipe_config->pipe_bpp > dev_priv->vbt.edp_bpp) { | ||
1407 | /* | ||
1408 | * This is a big fat ugly hack. | ||
1409 | * | ||
1410 | * Some machines in UEFI boot mode provide us a VBT that has 18 | ||
1411 | * bpp and 1.62 GHz link bandwidth for eDP, which for reasons | ||
1412 | * unknown we fail to light up. Yet the same BIOS boots up with | ||
1413 | * 24 bpp and 2.7 GHz link. Use the same bpp as the BIOS uses as | ||
1414 | * max, not what it tells us to use. | ||
1415 | * | ||
1416 | * Note: This will still be broken if the eDP panel is not lit | ||
1417 | * up by the BIOS, and thus we can't get the mode at module | ||
1418 | * load. | ||
1419 | */ | ||
1420 | DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n", | ||
1421 | pipe_config->pipe_bpp, dev_priv->vbt.edp_bpp); | ||
1422 | dev_priv->vbt.edp_bpp = pipe_config->pipe_bpp; | ||
1423 | } | ||
1404 | } | 1424 | } |
1405 | 1425 | ||
1406 | static bool is_edp_psr(struct intel_dp *intel_dp) | 1426 | static bool is_edp_psr(struct intel_dp *intel_dp) |