On Thu, Jul 01, 2010 at 10:35:34AM -0400, Alex Deucher wrote:
On Thu, Jul 1, 2010 at 10:07 AM, Pasi Kärkkäinen pasik@iki.fi wrote:
On Mon, Jun 21, 2010 at 09:18:01PM +0300, Pasi Kärkkäinen wrote:
I am not sure your patch is right, my guess is that devices field of radeon connector structure btw the HDMI & DVI connector are different and thus that drm_detect_hdmi_monitor is not call. I expect it's normal for the device field to be different (my understanding being that HDMI will have one more bit set than the DVI connector). Bottom line is i think we want to discard non hdmi connector just in case we face shared connector.
Alex would have to comment on the device field test, maybe your atombios is broken. Does it works if instead of removing if (connector == list_connector) continue; You remove : if (radeon_connector->devices == list_radeon_connector->devices)
Also can you print the radeon_connector->devices of all your connector so we can compare them.
The code was for systems with shared ddc lines and shared encoders, but it looks like your system may have a shared ddc line and (sort of) non-shared encoders. I suspect the DVI port is using UNIPHY A or A+B (for dual link) and HDMI is using UNIPHY link B. It's probably actually using router objects (gpio toggle to switch gpio routing between physical ports), however support for that is not implemented yet which is why we have the current code. Can you send me a copy of your vbios so I can verify?
To access your vbios (as root): cd /sys/bus/pci/device/<pci bus id> echo 1 > rom cat rom > /tmp/vbios.rom echo 0 > rom
Does the attached patch fix the issue?
Thanks for the patch. I'll try it when I'm back where the dock is.. will take a couple of days.
Sorry it took a while.. I tried your patch now. It seems to fix the problem!
When you send it upstream please also CC it for 2.6.33/2.6.34 stable branches? Just hoping to get the fix into Fedora 13..
I've sent the patch to Dave and cc'ed stable.
Great, thanks!
-- Pasi
Alex
-- Pasi
From 557b452536c9390105539a264d342d963d71b087 Mon Sep 17 00:00:00 2001 From: Alex Deucher alexdeucher@gmail.com Date: Mon, 21 Jun 2010 12:07:52 -0400 Subject: [PATCH] drm/radeon/kms: fix shared ddc handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit
Connectors with a shared ddc line can be connected to different encoders.
Reported by Pasi Kärkkäinen pasik@iki.fi on dri-devel
Signed-off-by: Alex Deucher alexdeucher@gmail.com
drivers/gpu/drm/radeon/radeon_connectors.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/gpu/drm/radeon/radeon_connectors.c b/drivers/gpu/drm/radeon/radeon_connectors.c index 0c7ccc6..f58f8bd 100644 --- a/drivers/gpu/drm/radeon/radeon_connectors.c +++ b/drivers/gpu/drm/radeon/radeon_connectors.c @@ -785,7 +785,9 @@ static enum drm_connector_status radeon_dvi_detect(struct drm_connector *connect if (connector == list_connector) continue; list_radeon_connector = to_radeon_connector(list_connector);
- if (radeon_connector->devices == list_radeon_connector->devices) {
- if (list_radeon_connector->shared_ddc &&
- (list_radeon_connector->ddc_bus->rec.i2c_id ==
- radeon_connector->ddc_bus->rec.i2c_id)) {
if (drm_detect_hdmi_monitor(radeon_connector->edid)) { if (connector->connector_type == DRM_MODE_CONNECTOR_DVID) { kfree(radeon_connector->edid); -- 1.7.0.1