aboutsummaryrefslogtreecommitdiffstats
path: root/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch
diff options
context:
space:
mode:
authorJoshua Lock <josh@linux.intel.com>2010-05-18 14:51:13 +0100
committerJoshua Lock <josh@linux.intel.com>2010-05-19 12:20:16 +0100
commit5e8c7c54a9b297dae0081dd19a7bb94e23040a3d (patch)
tree948e3642c1bf426870b83c72c68c997dce66766c /meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch
parent5e07bc91281969d54896dd0a13e3d6134e432027 (diff)
downloadopenembedded-core-5e8c7c54a9b297dae0081dd19a7bb94e23040a3d.tar.gz
linux-moblin: add 2.6.33.2 kernel from MeeGo 1.0
Signed-off-by: Joshua Lock <josh@linux.intel.com>
Diffstat (limited to 'meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch')
-rw-r--r--meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch67
1 files changed, 67 insertions, 0 deletions
diff --git a/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch
new file mode 100644
index 0000000000..f2ee811045
--- /dev/null
+++ b/meta-moblin/packages/linux/linux-moblin-2.6.33.2/linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch
@@ -0,0 +1,67 @@
+Subject: [3/3] drm/i915: Ignore LVDS EDID when it is unavailabe or invalid
+Date: Thu, 04 Mar 2010 08:17:31 -0000
+From: Zhenyu Wang <zhenyuw@linux.intel.com>
+Patch-mainline: 2.6.34
+References: https://patchwork.kernel.org/patch/83556/, BMC# 331
+
+From: Zhao Yakui <yakui.zhao@intel.com>
+
+In course of probing the display mode for LVDS, we will firstly try to
+check the EDID for LVDS panel. But on some laptops the EDID is invalid for
+the LVDS panel. In such case it will complain the invalida EDID warning
+message and print the EDID raw data every time when probing the LVDS mode.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=23099
+https://bugs.freedesktop.org/show_bug.cgi?id=26395
+
+Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
+Tested-by: Sitsofe Wheeler <sitsofe@yahoo.com>
+Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
+Acked-by: Yin Kangkai <kangkai.yin@intel.com>
+
+---
+ drivers/gpu/drm/i915/i915_drv.h | 2 ++
+ drivers/gpu/drm/i915/intel_lvds.c | 13 +++++++++----
+ 2 files changed, 11 insertions(+), 4 deletions(-)
+
+--- a/drivers/gpu/drm/i915/i915_drv.h
++++ b/drivers/gpu/drm/i915/i915_drv.h
+@@ -581,6 +581,8 @@ typedef struct drm_i915_private {
+ /* Reclocking support */
+ bool render_reclock_avail;
+ bool lvds_downclock_avail;
++ /* indicate whether the LVDS EDID is OK */
++ bool lvds_edid_ok;
+ /* indicates the reduced downclock for LVDS*/
+ int lvds_downclock;
+ struct work_struct idle_work;
+--- a/drivers/gpu/drm/i915/intel_lvds.c
++++ b/drivers/gpu/drm/i915/intel_lvds.c
+@@ -680,10 +680,13 @@ static int intel_lvds_get_modes(struct d
+ struct drm_i915_private *dev_priv = dev->dev_private;
+ int ret = 0;
+
+- ret = intel_ddc_get_modes(intel_output);
++ if (dev_priv->lvds_edid_ok) {
++ ret = intel_ddc_get_modes(intel_output);
++ if (ret)
++ return ret;
+
+- if (ret)
+- return ret;
++ dev_priv->lvds_edid_ok = false;
++ }
+
+ /* Didn't get an EDID, so
+ * Set wide sync ranges so we get all modes
+@@ -1097,7 +1100,9 @@ void intel_lvds_init(struct drm_device *
+ * Attempt to get the fixed panel mode from DDC. Assume that the
+ * preferred mode is the right one.
+ */
+- intel_ddc_get_modes(intel_output);
++ dev_priv->lvds_edid_ok = true;
++ if (!intel_ddc_get_modes(intel_output))
++ dev_priv->lvds_edid_ok = false;
+
+ list_for_each_entry(scan, &connector->probed_modes, head) {
+ mutex_lock(&dev->mode_config.mutex);