diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-11-18 01:38:16 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-11-19 10:59:39 -0500 |
commit | 1021442098ee9328fdd4d113d63a3a7f2f40c37b (patch) | |
tree | 2a9e3dbd3a535aa6d3b49b4f3f0e1840536bee4f | |
parent | 7c6c2652bab9601883ed579071aa56ab52a28ea6 (diff) |
drm/i915: Replicate BIOS eDP bpp clamping hack for hsw
Haswell's DDI encoders have their own ->get_config callback and in
commit c6cd2ee2d59111a07cd9199564c9bdcb2d11e5cf
Author: Jani Nikula <jani.nikula@intel.com>
Date: Mon Oct 21 10:52:07 2013 +0300
drm/i915/dp: workaround BIOS eDP bpp clamping issue
we've forgotten to replicate this hack. So let's do it that.
Note for backporters: The above commit and all it's depencies need to
be backported first.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=71049
Cc: stable@vger.kernel.org
Tested-by: Gökçen Eraslan <gokcen.eraslan@gmail.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c index 1591576a6101..330077bcd0bd 100644 --- a/drivers/gpu/drm/i915/intel_ddi.c +++ b/drivers/gpu/drm/i915/intel_ddi.c | |||
@@ -1406,6 +1406,26 @@ void intel_ddi_get_config(struct intel_encoder *encoder, | |||
1406 | default: | 1406 | default: |
1407 | break; | 1407 | break; |
1408 | } | 1408 | } |
1409 | |||
1410 | if (encoder->type == INTEL_OUTPUT_EDP && dev_priv->vbt.edp_bpp && | ||
1411 | pipe_config->pipe_bpp > dev_priv->vbt.edp_bpp) { | ||
1412 | /* | ||
1413 | * This is a big fat ugly hack. | ||
1414 | * | ||
1415 | * Some machines in UEFI boot mode provide us a VBT that has 18 | ||
1416 | * bpp and 1.62 GHz link bandwidth for eDP, which for reasons | ||
1417 | * unknown we fail to light up. Yet the same BIOS boots up with | ||
1418 | * 24 bpp and 2.7 GHz link. Use the same bpp as the BIOS uses as | ||
1419 | * max, not what it tells us to use. | ||
1420 | * | ||
1421 | * Note: This will still be broken if the eDP panel is not lit | ||
1422 | * up by the BIOS, and thus we can't get the mode at module | ||
1423 | * load. | ||
1424 | */ | ||
1425 | DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n", | ||
1426 | pipe_config->pipe_bpp, dev_priv->vbt.edp_bpp); | ||
1427 | dev_priv->vbt.edp_bpp = pipe_config->pipe_bpp; | ||
1428 | } | ||
1409 | } | 1429 | } |
1410 | 1430 | ||
1411 | static void intel_ddi_destroy(struct drm_encoder *encoder) | 1431 | static void intel_ddi_destroy(struct drm_encoder *encoder) |