Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:pzskc383
kernel
linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File linux-2.6.34-drm-i915-Ignore-LVDS-EDID-when-it-is-unavailabe-or-invalid.patch of Package kernel
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);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor