A RAGE128TR chipset with a VGA port uses different i2c clock bits than
the VGA cards previously tested. It seems reasonable to assume that
other Pro2 cards are set up this way as well. In case this is incorrect,
a newly added xf86I2CProbeAddress() should still allow a monitor to be
detected.

Signed-off-by: Connor Behan <[email protected]>
---
 src/r128_output.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/src/r128_output.c b/src/r128_output.c
index 0160880..bd418ba 100644
--- a/src/r128_output.c
+++ b/src/r128_output.c
@@ -239,6 +239,9 @@ static R128MonitorType 
R128DisplayDDCConnected(xf86OutputPtr output)
 
     if (r128_output->type == OUTPUT_LVDS) {
         return MT_LCD;
+    } else if (r128_output->type == OUTPUT_VGA && info->isPro2) {
+        mask1 = R128_GPIO_MONID_MASK_1 | R128_GPIO_MONID_MASK_2;
+        mask2 = R128_GPIO_MONID_A_1    | R128_GPIO_MONID_A_2;
     } else if (r128_output->type == OUTPUT_VGA) {
         mask1 = R128_GPIO_MONID_MASK_1 | R128_GPIO_MONID_MASK_3;
         mask2 = R128_GPIO_MONID_A_1    | R128_GPIO_MONID_A_3;
@@ -268,6 +271,9 @@ static R128MonitorType 
R128DisplayDDCConnected(xf86OutputPtr output)
             else
                 MonType = MT_CRT;
        }
+    } else if (xf86I2CProbeAddress(r128_output->pI2CBus, 0x0060)) {
+        /* Just in case. */
+        MonType = MT_CRT;
     }
 
     return MonType;
@@ -454,8 +460,13 @@ Bool R128SetupConnectors(ScrnInfoPtr pScrn)
 
         if (otypes[i] != OUTPUT_LVDS && info->DDC) {
             i2c.ddc_reg      = R128_GPIO_MONID;
-            i2c.put_clk_mask = R128_GPIO_MONID_EN_3;
-            i2c.get_clk_mask = R128_GPIO_MONID_Y_3;
+            if (otypes[i] == OUTPUT_VGA && info->isPro2) {
+                i2c.put_clk_mask = R128_GPIO_MONID_EN_2;
+                i2c.get_clk_mask = R128_GPIO_MONID_Y_2;
+            } else {
+                i2c.put_clk_mask = R128_GPIO_MONID_EN_3;
+                i2c.get_clk_mask = R128_GPIO_MONID_Y_3;
+            }
             if (otypes[i] == OUTPUT_VGA) {
                 i2c.put_data_mask = R128_GPIO_MONID_EN_1;
                 i2c.get_data_mask = R128_GPIO_MONID_Y_1;
-- 
2.3.2

_______________________________________________
xorg-driver-ati mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-driver-ati

Reply via email to