commit 40812fd284a6a6dcf5e72edf55ce3880811af374
Author: Jan RÄ™korajski <[email protected]>
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 <[email protected]>
+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 <[email protected]>
+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 <[email protected]>
+Tested-by: jkp <[email protected]>
+CC: [email protected]
+Signed-off-by: Jani Nikula <[email protected]>
+Signed-off-by: Daniel Vetter <[email protected]>
+---
+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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to