xf86-video-nv: 2 commits - .gitignore src/g80_output.c src/g80_type.h

Aaron Plattner aplattner at kemper.freedesktop.org
Tue Sep 11 22:53:53 PDT 2007


 .gitignore       |    1 +
 src/g80_output.c |   30 +++++++++++++++++++++++-------
 src/g80_type.h   |    5 ++++-
 3 files changed, 28 insertions(+), 8 deletions(-)

New commits:
diff-tree b2db7d414400d80a5567d71eed9a7e94f1043a20 (from 07fb9f0b00fafe18bd33bddff23cbb4325eb50f8)
Author: Aaron Plattner <aplattner at nvidia.com>
Date:   Tue Sep 11 22:51:20 2007 -0700

    G80: Fix LVDS detection on some laptops.

diff --git a/src/g80_output.c b/src/g80_output.c
index 8bd2096..1ec6a89 100644
--- a/src/g80_output.c
+++ b/src/g80_output.c
@@ -66,10 +66,11 @@ static Bool G80ReadPortMapping(int scrnI
         port = (b >> 4) & 0xf;
         or = ffs((b >> 24) & 0xf) - 1;
 
-        if(type < 4 && port != 0xf) {
+        if(type == 0xe) break;
+
+        if(type < 4) {
             switch(type) {
                 case 0: /* CRT */
-                case 1: /* TV */
                     if(pNv->i2cMap[port].dac != -1) {
                         xf86DrvMsg(scrnIndex, X_WARNING,
                                    "DDC routing table corrupt!  DAC %i -> %i "
@@ -78,21 +79,30 @@ static Bool G80ReadPortMapping(int scrnI
                     }
                     pNv->i2cMap[port].dac = or;
                     break;
+                case 1: /* TV */
+                    /* Ignore TVs */
+                    break;
+
                 case 2: /* TMDS */
-                case 3: /* LVDS */
                     if(pNv->i2cMap[port].sor != -1)
                         xf86DrvMsg(scrnIndex, X_WARNING,
                                    "DDC routing table corrupt!  SOR %i -> %i "
                                    "for port %i\n",
                                    or, pNv->i2cMap[port].sor, port);
                     pNv->i2cMap[port].sor = or;
-                    pNv->i2cMap[port].panelType = (type == 2) ? TMDS : LVDS;
+                    break;
+
+                case 3: /* LVDS */
+                    pNv->lvds.present = TRUE;
+                    pNv->lvds.or = or;
                     break;
             }
         }
     }
 
-    xf86DrvMsg(scrnIndex, X_PROBED, "I2C map:\n");
+    xf86DrvMsg(scrnIndex, X_PROBED, "Connector map:\n");
+    if(pNv->lvds.present)
+        xf86DrvMsg(scrnIndex, X_PROBED, "  [N/A] -> SOR%i (LVDS)\n", pNv->lvds.or);
     for(i = 0; i < 4; i++) {
         if(pNv->i2cMap[i].dac != -1)
             xf86DrvMsg(scrnIndex, X_PROBED, "  Bus %i -> DAC%i\n", i, pNv->i2cMap[i].dac);
@@ -315,8 +325,7 @@ G80CreateOutputs(ScrnInfoPtr pScrn)
         if(pNv->i2cMap[i].dac != -1)
             dac = G80CreateDac(pScrn, pNv->i2cMap[i].dac);
         if(pNv->i2cMap[i].sor != -1)
-            sor = G80CreateSor(pScrn, pNv->i2cMap[i].sor,
-                               pNv->i2cMap[i].panelType);
+            sor = G80CreateSor(pScrn, pNv->i2cMap[i].sor, TMDS);
 
         if(dac) {
             G80OutputPrivPtr pPriv = dac->driver_private;
@@ -334,6 +343,13 @@ G80CreateOutputs(ScrnInfoPtr pScrn)
         }
     }
 
+    if(pNv->lvds.present) {
+        xf86OutputPtr lvds = G80CreateSor(pScrn, pNv->lvds.or, LVDS);
+        G80OutputPrivPtr pPriv = lvds->driver_private;
+
+        pPriv->scale = G80_SCALE_ASPECT;
+    }
+
     /* For each output, set the crtc and clone masks */
     for(i = 0; i < xf86_config->num_output; i++) {
         xf86OutputPtr output = xf86_config->output[i];
diff --git a/src/g80_type.h b/src/g80_type.h
index 0830ecc..ecaedaa 100644
--- a/src/g80_type.h
+++ b/src/g80_type.h
@@ -48,8 +48,11 @@ typedef struct G80Rec {
     struct {
         ORNum           dac;
         ORNum           sor;
-        PanelType       panelType;
     } i2cMap[4];
+    struct {
+        Bool            present;
+        ORNum           or;
+    } lvds;
 
     xf86Int10InfoPtr    int10;
     int                 int10Mode; /* Console mode to restore */
diff-tree 07fb9f0b00fafe18bd33bddff23cbb4325eb50f8 (from 69f7a57cd9baabbbee7b7665c3c2c2b91c056a04)
Author: Aaron Plattner <aplattner at nvidia.com>
Date:   Mon Aug 27 12:12:44 2007 -0700

    Add release.sh to .gitignore.

diff --git a/.gitignore b/.gitignore
index 4ff1108..51efdd8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,5 +18,6 @@ install-sh
 libtool
 ltmain.sh
 missing
+release.sh
 stamp-h1
 ChangeLog


More information about the xorg-commit mailing list