[PATCH] Fix radeon DDC regression
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 17 Nov 2006 04:35:00 +0000 (15:35 +1100)
committerLinus Torvalds <torvalds@woody.osdl.org>
Fri, 17 Nov 2006 05:59:41 +0000 (21:59 -0800)
When radeonfb was changed to use the new "generic" ddc, a bit of
code initializing the GPIO lines was lost, causing it to not work
if the firmware didn't configure them properly, which seems to
happen on some cards.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/video/aty/radeon_i2c.c

index 676754520099ca8e1ad53f52940b0ba0895c23b2..869725a13c21f6d4430a9a07c9bd152c82ead9a2 100644 (file)
@@ -139,7 +139,13 @@ void radeon_delete_i2c_busses(struct radeonfb_info *rinfo)
 int radeon_probe_i2c_connector(struct radeonfb_info *rinfo, int conn,
                               u8 **out_edid)
 {
-       u8 *edid = fb_ddc_read(&rinfo->i2c[conn-1].adapter);
+       u32 reg = rinfo->i2c[conn-1].ddc_reg;
+       u8 *edid;
+
+       OUTREG(reg, INREG(reg) &
+                       ~(VGA_DDC_DATA_OUTPUT | VGA_DDC_CLK_OUTPUT));
+
+       edid = fb_ddc_read(&rinfo->i2c[conn-1].adapter);
 
        if (out_edid)
                *out_edid = edid;