drm/radeon/kms: fix tv dac conflict resolver

Previous thread: fib: suppress lockdep-RCU false positive in FIB trie. by Linux Kernel Mailing List on Monday, April 19, 2010 - 8:59 am. (1 message)

Next thread: net: dev_pick_tx() fix by Linux Kernel Mailing List on Monday, April 19, 2010 - 8:59 am. (1 message)
From: Linux Kernel Mailing List
Date: Monday, April 19, 2010 - 8:59 am

Gitweb:     http://git.kernel.org/linus/08d075116db3592db218bfe0f554cd93c9e12505
Commit:     08d075116db3592db218bfe0f554cd93c9e12505
Parent:     16823d16f55afc303af7864b9a055d8a1c012e1b
Author:     Alex Deucher <alexdeucher@gmail.com>
AuthorDate: Thu Apr 15 13:31:12 2010 -0400
Committer:  Dave Airlie <airlied@redhat.com>
CommitDate: Mon Apr 19 11:59:58 2010 +1000

    drm/radeon/kms: fix tv dac conflict resolver
    
    On systems with the tv dac shared between DVI and TV,
    we can only use the dac for one of the connectors.
    However, when using a digital monitor on the DVI port,
    you can use the dac for the TV connector just fine.
    Check the use_digital status when resolving the conflict.
    
    Fixes fdo bug 27649, possibly others.
    
    Signed-off-by: Alex Deucher <alexdeucher@gmail.com>
    Cc: stable <stable@kernel.org>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
---
 drivers/gpu/drm/radeon/radeon_connectors.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c
index 3bc2040..1331351 100644
--- a/drivers/gpu/drm/radeon/radeon_connectors.c
+++ b/drivers/gpu/drm/radeon/radeon_connectors.c
@@ -162,12 +162,14 @@ radeon_connector_analog_encoder_conflict_solve(struct drm_connector *connector,
 {
 	struct drm_device *dev = connector->dev;
 	struct drm_connector *conflict;
+	struct radeon_connector *radeon_conflict;
 	int i;
 
 	list_for_each_entry(conflict, &dev->mode_config.connector_list, head) {
 		if (conflict == connector)
 			continue;
 
+		radeon_conflict = to_radeon_connector(conflict);
 		for (i = 0; i < DRM_CONNECTOR_MAX_ENCODER; i++) {
 			if (conflict->encoder_ids[i] == 0)
 				break;
@@ -177,6 +179,9 @@ radeon_connector_analog_encoder_conflict_solve(struct drm_connector *connector,
 				if (conflict->status != connector_status_connected)
 					continue;
 
+				if (radeon_conflict->use_digital)
+					continue;
+
 ...
Previous thread: fib: suppress lockdep-RCU false positive in FIB trie. by Linux Kernel Mailing List on Monday, April 19, 2010 - 8:59 am. (1 message)

Next thread: net: dev_pick_tx() fix by Linux Kernel Mailing List on Monday, April 19, 2010 - 8:59 am. (1 message)