[packages/kernel/LINUX_3_10] - added workaround for BIOS eDP bpp clamping issue on i915
baggins
baggins at pld-linux.org
Mon Nov 18 13:26:55 CET 2013
commit 40812fd284a6a6dcf5e72edf55ce3880811af374
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Mon Nov 18 13:24:38 2013 +0100
- added workaround for BIOS eDP bpp clamping issue on i915
https://bugzilla.kernel.org/show_bug.cgi?id=59841
kernel-i915-eDP-bpp-clamping.patch | 83 ++++++++++++++++++++++++++++++++++++++
kernel.spec | 2 +
2 files changed, 85 insertions(+)
---
diff --git a/kernel.spec b/kernel.spec
index 85706b1..18f3628 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -241,6 +241,7 @@ Patch505: dm-crypt-sort-requests.patch
Patch2000: kernel-small_fixes.patch
Patch2001: kernel-pwc-uncompress.patch
+Patch2002: kernel-i915-eDP-bpp-clamping.patch
Patch2003: kernel-regressions.patch
# http://git.kernel.org/?p=linux/kernel/git/jj/linux-apparmor.git;a=shortlog;h=refs/heads/v3.5-aa2.8
@@ -739,6 +740,7 @@ cd linux-%{basever}
# Small fixes:
%patch2000 -p1
%patch2001 -p1
+%patch2002 -p1
#%patch2003 -p1
# Do not remove this, please!
diff --git a/kernel-i915-eDP-bpp-clamping.patch b/kernel-i915-eDP-bpp-clamping.patch
new file mode 100644
index 0000000..8ad09b4
--- /dev/null
+++ b/kernel-i915-eDP-bpp-clamping.patch
@@ -0,0 +1,83 @@
+From c6cd2ee2d59111a07cd9199564c9bdcb2d11e5cf Mon Sep 17 00:00:00 2001
+From: Jani Nikula <jani.nikula at intel.com>
+Date: Mon, 21 Oct 2013 07:52:07 +0000
+Subject: drm/i915/dp: workaround BIOS eDP bpp clamping issue
+
+This isn't a real fix to the problem, but rather a stopgap measure while
+trying to find a proper solution.
+
+There are several laptops out there that fail to light up the eDP panel
+in UEFI boot mode. They seem to be mostly IVB machines, including but
+apparently not limited to Dell XPS 13, Asus TX300, Asus UX31A, Asus
+UX32VD, Acer Aspire S7. They seem to work in CSM or legacy boot.
+
+The difference between UEFI and CSM is that the BIOS provides a
+different VBT to the kernel. The UEFI VBT typically specifies 18 bpp and
+1.62 GHz link for eDP, while CSM VBT has 24 bpp and 2.7 GHz link. We end
+up clamping to 18 bpp in UEFI mode, which we can fit in the 1.62 Ghz
+link, and for reasons yet unknown fail to light up the panel.
+
+Dithering from 24 to 18 bpp itself seems to work; if we use 18 bpp with
+2.7 GHz link, the eDP panel lights up. So essentially this is a link
+speed issue, and *not* a bpp clamping issue.
+
+The bug raised its head since
+commit 657445fe8660100ad174600ebfa61536392b7624
+Author: Daniel Vetter <daniel.vetter at ffwll.ch>
+Date: Sat May 4 10:09:18 2013 +0200
+
+ Revert "drm/i915: revert eDP bpp clamping code changes"
+
+which started clamping bpp *before* computing the link requirements, and
+thus affecting the required bandwidth. Clamping after the computations
+kept the link at 2.7 GHz.
+
+Even though the BIOS tells us to use 18 bpp through the VBT, it happily
+boots up at 24 bpp and 2.7 GHz itself! Use this information to
+selectively ignore the VBT provided value.
+
+We can't ignore the VBT eDP bpp altogether, as there are other laptops
+that do require the clamping to be used due to EDID reporting higher bpp
+than the panel can support.
+
+Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=59841
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=67950
+Tested-by: Ulf Winkelvos <ulf at winkelvos.de>
+Tested-by: jkp <jkp at iki.fi>
+CC: stable at vger.kernel.org
+Signed-off-by: Jani Nikula <jani.nikula at intel.com>
+Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
+---
+diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
+index 2c555f9..1a43137 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,
+ else
+ pipe_config->port_clock = 270000;
+ }
++
++ if (is_edp(intel_dp) && dev_priv->vbt.edp_bpp &&
++ pipe_config->pipe_bpp > dev_priv->vbt.edp_bpp) {
++ /*
++ * This is a big fat ugly hack.
++ *
++ * Some machines in UEFI boot mode provide us a VBT that has 18
++ * bpp and 1.62 GHz link bandwidth for eDP, which for reasons
++ * unknown we fail to light up. Yet the same BIOS boots up with
++ * 24 bpp and 2.7 GHz link. Use the same bpp as the BIOS uses as
++ * max, not what it tells us to use.
++ *
++ * Note: This will still be broken if the eDP panel is not lit
++ * up by the BIOS, and thus we can't get the mode at module
++ * load.
++ */
++ DRM_DEBUG_KMS("pipe has %d bpp for eDP panel, overriding BIOS-provided max %d bpp\n",
++ pipe_config->pipe_bpp, dev_priv->vbt.edp_bpp);
++ dev_priv->vbt.edp_bpp = pipe_config->pipe_bpp;
++ }
+ }
+
+ static bool is_edp_psr(struct intel_dp *intel_dp)
+--
+cgit v0.9.2
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/kernel.git/commitdiff/00b79b8921afe5481f79737de26b127a545cb806
More information about the pld-cvs-commit
mailing list