One more patch to address a possible case of systems with bad native
mode info for lvds, but a valid edid.

Alex

On Fri, Oct 9, 2009 at 5:53 PM, Alex Deucher <alexdeuc...@gmail.com> wrote:
> Attached are some updates to radeon kms; mostly clean-ups I ran into
> while preparing for evergreen support.
>
> patches:
> 1 - make sure lvds panels have valid native mode info.  if not, report
> lvds as disconnected
> 2 - fix up crtc dpms ordering based on recommendation from bios docs
> 3 - add support for AdjustDisplayPll table which is used to adjust the
> clock to meet special requirements of different encoders (e.g.,
> tv-out, DP, certain low dot clocks on tmds, etc.)
> 4. clean up the crtc mode set path
> 5. switch lvds to use the drm_mode struct rather than the
> radeon_native_mode struct.  Eliminates a layer of indirection.
>
> Patch 5 could probably use some more testing to make sure I didn't
> accidentally break lvds on any picky panels due to a typo in the
> conversion.
>
> Alex
>
From 6b048a2582762c916617554cb7e68e92d8950175 Mon Sep 17 00:00:00 2001
From: Alex Deucher <alexdeuc...@gmail.com>
Date: Fri, 9 Oct 2009 18:41:19 -0400
Subject: [PATCH] drm/radeon/kms: also check for edid in lvds detect

In case the system has bad native mode info but
valid edid.

Signed-off-by: Alex Deucher <alexdeuc...@gmail.com>
---
 drivers/gpu/drm/radeon/radeon_connectors.c |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index da3a049..17d5659 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -398,8 +398,10 @@ static int radeon_lvds_mode_valid(struct drm_connector *connector,
 
 static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connector)
 {
-	enum drm_connector_status ret = connector_status_disconnected;
+	struct radeon_connector *radeon_connector = to_radeon_connector(connector);
 	struct drm_encoder *encoder = radeon_best_single_encoder(connector);
+	enum drm_connector_status ret = connector_status_disconnected;
+	bool dret;
 
 	if (encoder) {
 		struct radeon_encoder *radeon_encoder = to_radeon_encoder(encoder);
@@ -410,6 +412,15 @@ static enum drm_connector_status radeon_lvds_detect(struct drm_connector *connec
 			ret = connector_status_connected;
 
 	}
+
+	/* check for edid as well */
+	if (radeon_connector->ddc_bus) {
+		radeon_i2c_do_lock(radeon_connector, 1);
+		dret = radeon_ddc_probe(radeon_connector);
+		radeon_i2c_do_lock(radeon_connector, 0);
+		if (dret)
+			ret = connector_status_connected;
+	}
 	/* check acpi lid status ??? */
 
 	radeon_connector_update_scratch_regs(connector, ret);
-- 
1.5.6.3

------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
--
_______________________________________________
Dri-devel mailing list
Dri-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to