From 5e8c7c54a9b297dae0081dd19a7bb94e23040a3d Mon Sep 17 00:00:00 2001 From: Joshua Lock Date: Tue, 18 May 2010 14:51:13 +0100 Subject: linux-moblin: add 2.6.33.2 kernel from MeeGo 1.0 Signed-off-by: Joshua Lock --- ...VDS-EDID-when-it-is-unavailabe-or-invalid.patch | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 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 (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') 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 000000000..f2ee81104 --- /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 +Patch-mainline: 2.6.34 +References: https://patchwork.kernel.org/patch/83556/, BMC# 331 + +From: Zhao Yakui + +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 +Tested-by: Sitsofe Wheeler +Signed-off-by: Zhenyu Wang +Acked-by: Yin Kangkai + +--- + 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); -- cgit v1.2.3