diff options
author | Joshua Lock <josh@linux.intel.com> | 2010-05-18 14:51:13 +0100 |
---|---|---|
committer | Joshua Lock <josh@linux.intel.com> | 2010-05-19 12:20:16 +0100 |
commit | 5e8c7c54a9b297dae0081dd19a7bb94e23040a3d (patch) | |
tree | 948e3642c1bf426870b83c72c68c997dce66766c /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 | |
parent | 5e07bc91281969d54896dd0a13e3d6134e432027 (diff) | |
download | openembedded-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.patch | 67 |
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); |