xf86-video-ati: Branch 'master' - 3 commits

George Sapountzis gsap7 at kemper.freedesktop.org
Sun Feb 25 11:40:33 EET 2007


 src/atimach64.c |   93 +++++++++++++++++++++++++++++++++++++++++++-------------
 src/atimode.c   |   42 +------------------------
 2 files changed, 74 insertions(+), 61 deletions(-)

New commits:
diff-tree 4374895d393bf170134ccffc188521fe515d5a77 (from 8b9a4ec8af90b2f9f0d0a3a7f6627061df7e01b3)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Sat Feb 24 21:25:13 2007 +0200

    [mach64] Consolidate adjustments of mode timings, part 3.
    
    Cosmetic.

diff --git a/src/atimach64.c b/src/atimach64.c
index e740003..c7b0ecc 100644
--- a/src/atimach64.c
+++ b/src/atimach64.c
@@ -82,12 +82,6 @@ ATIMach64PreInit
     ATIHWPtr    pATIHW
 )
 {
-    CARD32 bus_cntl, config_cntl;
-
-    {
-        pATIHW->crtc_off_pitch = SetBits(pATI->displayWidth >> 3, CRTC_PITCH);
-    }
-
     if ((pATI->LockData.crtc_gen_cntl & CRTC_CSYNC_EN) && !pATI->OptionCSync)
     {
         xf86DrvMsg(pScreenInfo->scrnIndex, X_NOTICE,
@@ -95,7 +89,7 @@ ATIMach64PreInit
         pATI->OptionCSync = TRUE;
     }
 
-    pATIHW->bus_cntl = bus_cntl = inr(BUS_CNTL);
+    pATIHW->bus_cntl = inr(BUS_CNTL);
     if (pATI->Chip < ATI_CHIP_264VT4)
         pATIHW->bus_cntl = (pATIHW->bus_cntl & ~BUS_HOST_ERR_INT_EN) |
             BUS_HOST_ERR_INT;
@@ -142,7 +136,7 @@ ATIMach64PreInit
     if (pATI->DAC == ATI_DAC_IBMRGB514)
         pATIHW->gen_test_cntl |= GEN_OVR_OUTPUT_EN;
 
-    pATIHW->config_cntl = config_cntl = inr(CONFIG_CNTL);
+    pATIHW->config_cntl = inr(CONFIG_CNTL);
 
 #ifndef AVOID_CPIO
 
@@ -212,6 +206,9 @@ ATIMach64PreInit
     /* Draw engine setup */
     if (pATI->Block0Base)
     {
+        CARD32 bus_cntl = inr(BUS_CNTL);
+        CARD32 config_cntl = inr(CONFIG_CNTL);
+
         /* Ensure apertures are enabled */
         outr(BUS_CNTL, pATIHW->bus_cntl);
         outr(CONFIG_CNTL, pATIHW->config_cntl);
@@ -595,27 +592,27 @@ ATIMach64ModeAdjust
     int VDisplay;
 
     /* Clobber mode timings */
-    if (pATI->OptionPanelDisplay && (pATI->LCDPanelID >= 0) &&
-        !pMode->CrtcHAdjusted && !pMode->CrtcVAdjusted &&
-        (!pATI->OptionLCDSync || (pMode->type & M_T_BUILTIN)))
+    if (pATI->OptionPanelDisplay && (pATI->LCDPanelID >= 0))
     {
+        if (!pMode->CrtcHAdjusted && !pMode->CrtcVAdjusted &&
+            (!pATI->OptionLCDSync || (pMode->type & M_T_BUILTIN)))
+        {
         int VScan;
 
         pMode->Clock = pATI->LCDClock;
         pMode->Flags &= ~(V_DBLSCAN | V_INTERLACE | V_CLKDIV2);
 
+        pMode->VScan = 0;
+
         /*
          * Use doublescanning or multiscanning to get around vertical blending
          * limitations.
          */
         VScan = pATI->LCDVertical / pMode->VDisplay;
+        if (VScan > 1)
         {
-                pMode->VScan = 0;
-                if (VScan > 1)
-                {
-                VScan = 2;
-                pMode->Flags |= V_DBLSCAN;
-                }
+            VScan = 2;
+            pMode->Flags |= V_DBLSCAN;
         }
 
         pMode->HSyncStart = pMode->HDisplay + pATI->LCDHSyncStart;
@@ -628,6 +625,7 @@ ATIMach64ModeAdjust
             ATIDivide(pATI->LCDVSyncWidth, VScan, 0, 1);
         pMode->VTotal = pMode->VDisplay +
             ATIDivide(pATI->LCDVBlankWidth, VScan, 0, 0);
+        }
     }
 
     /* If not already done adjust horizontal timings */
@@ -731,27 +729,28 @@ ATIMach64Calculate
     /* Build register contents */
     pATIHW->crtc_h_total_disp =
         SetBits(pMode->CrtcHTotal, CRTC_H_TOTAL) |
-            SetBits(pMode->CrtcHDisplay, CRTC_H_DISP);
+        SetBits(pMode->CrtcHDisplay, CRTC_H_DISP);
+
     pATIHW->crtc_h_sync_strt_wid =
         SetBits(pMode->CrtcHSyncStart, CRTC_H_SYNC_STRT) |
-            SetBits(pMode->CrtcHSkew, CRTC_H_SYNC_DLY) |         /* ? */
-            SetBits(GetBits(pMode->CrtcHSyncStart, 0x0100U),
-                CRTC_H_SYNC_STRT_HI) |
-            SetBits(pMode->CrtcHSyncEnd - pMode->CrtcHSyncStart,
-                CRTC_H_SYNC_WID);
+        SetBits(pMode->CrtcHSkew, CRTC_H_SYNC_DLY) |         /* ? */
+        SetBits(GetBits(pMode->CrtcHSyncStart, 0x0100U), CRTC_H_SYNC_STRT_HI) |
+        SetBits(pMode->CrtcHSyncEnd - pMode->CrtcHSyncStart, CRTC_H_SYNC_WID);
     if (pMode->Flags & V_NHSYNC)
         pATIHW->crtc_h_sync_strt_wid |= CRTC_H_SYNC_POL;
 
     pATIHW->crtc_v_total_disp =
         SetBits(pMode->CrtcVTotal, CRTC_V_TOTAL) |
-            SetBits(pMode->CrtcVDisplay, CRTC_V_DISP);
+        SetBits(pMode->CrtcVDisplay, CRTC_V_DISP);
+
     pATIHW->crtc_v_sync_strt_wid =
         SetBits(pMode->CrtcVSyncStart, CRTC_V_SYNC_STRT) |
-            SetBits(pMode->CrtcVSyncEnd - pMode->CrtcVSyncStart,
-                CRTC_V_SYNC_WID);
+        SetBits(pMode->CrtcVSyncEnd - pMode->CrtcVSyncStart, CRTC_V_SYNC_WID);
     if (pMode->Flags & V_NVSYNC)
         pATIHW->crtc_v_sync_strt_wid |= CRTC_V_SYNC_POL;
 
+    pATIHW->crtc_off_pitch = SetBits(pATI->displayWidth >> 3, CRTC_PITCH);
+
     pATIHW->crtc_gen_cntl = inr(CRTC_GEN_CNTL) &
         ~(CRTC_DBL_SCAN_EN | CRTC_INTERLACE_EN |
           CRTC_HSYNC_DIS | CRTC_VSYNC_DIS | CRTC_CSYNC_EN |
diff-tree 8b9a4ec8af90b2f9f0d0a3a7f6627061df7e01b3 (from bb226c9e7218d2a65c056fe74cb7eece0550670f)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Sat Feb 24 21:22:49 2007 +0200

    [mach64] Consolidate adjustments of mode timings, part 2.
    
    Factor out to seperate function.

diff --git a/src/atimach64.c b/src/atimach64.c
index dee82c4..e740003 100644
--- a/src/atimach64.c
+++ b/src/atimach64.c
@@ -580,12 +580,12 @@ ATIMach64Save
 }
 
 /*
- * ATIMach64Calculate --
+ * ATIMach64ModeAdjust --
  *
- * This function is called to fill in the Mach64 portion of an ATIHWRec.
+ * This function is called to adjust horizontal and vertical timings.
  */
-void
-ATIMach64Calculate
+static void
+ATIMach64ModeAdjust
 (
     ATIPtr         pATI,
     ATIHWPtr       pATIHW,
@@ -711,6 +711,22 @@ ATIMach64Calculate
          (int)MaxBits(CRTC_V_SYNC_WID))
         pMode->CrtcVSyncEnd = pMode->CrtcVSyncStart + MaxBits(CRTC_V_SYNC_WID);
     pMode->CrtcVAdjusted = TRUE;                /* Redundant */
+}
+
+/*
+ * ATIMach64Calculate --
+ *
+ * This function is called to fill in the Mach64 portion of an ATIHWRec.
+ */
+void
+ATIMach64Calculate
+(
+    ATIPtr         pATI,
+    ATIHWPtr       pATIHW,
+    DisplayModePtr pMode
+)
+{
+    ATIMach64ModeAdjust(pATI, pATIHW, pMode);
 
     /* Build register contents */
     pATIHW->crtc_h_total_disp =
diff-tree bb226c9e7218d2a65c056fe74cb7eece0550670f (from 31c018ca4a18ce426b29006f103f56eee7f985fa)
Author: George Sapountzis <gsap7 at yahoo.gr>
Date:   Sat Feb 24 21:20:53 2007 +0200

    [mach64] Consolidate adjustments of mode timings, part 1.
    
    Move LCD block from atimode.c to atimach64.c .

diff --git a/src/atimach64.c b/src/atimach64.c
index 98eb894..dee82c4 100644
--- a/src/atimach64.c
+++ b/src/atimach64.c
@@ -594,6 +594,42 @@ ATIMach64Calculate
 {
     int VDisplay;
 
+    /* Clobber mode timings */
+    if (pATI->OptionPanelDisplay && (pATI->LCDPanelID >= 0) &&
+        !pMode->CrtcHAdjusted && !pMode->CrtcVAdjusted &&
+        (!pATI->OptionLCDSync || (pMode->type & M_T_BUILTIN)))
+    {
+        int VScan;
+
+        pMode->Clock = pATI->LCDClock;
+        pMode->Flags &= ~(V_DBLSCAN | V_INTERLACE | V_CLKDIV2);
+
+        /*
+         * Use doublescanning or multiscanning to get around vertical blending
+         * limitations.
+         */
+        VScan = pATI->LCDVertical / pMode->VDisplay;
+        {
+                pMode->VScan = 0;
+                if (VScan > 1)
+                {
+                VScan = 2;
+                pMode->Flags |= V_DBLSCAN;
+                }
+        }
+
+        pMode->HSyncStart = pMode->HDisplay + pATI->LCDHSyncStart;
+        pMode->HSyncEnd = pMode->HSyncStart + pATI->LCDHSyncWidth;
+        pMode->HTotal = pMode->HDisplay + pATI->LCDHBlankWidth;
+
+        pMode->VSyncStart = pMode->VDisplay +
+            ATIDivide(pATI->LCDVSyncStart, VScan, 0, 0);
+        pMode->VSyncEnd = pMode->VSyncStart +
+            ATIDivide(pATI->LCDVSyncWidth, VScan, 0, 1);
+        pMode->VTotal = pMode->VDisplay +
+            ATIDivide(pATI->LCDVBlankWidth, VScan, 0, 0);
+    }
+
     /* If not already done adjust horizontal timings */
     if (!pMode->CrtcHAdjusted)
     {
diff --git a/src/atimode.c b/src/atimode.c
index d455404..68c1342 100644
--- a/src/atimode.c
+++ b/src/atimode.c
@@ -528,46 +528,8 @@ ATIModeCalculate
     CARD32 lcd_index;
     int Index, ECPClock, MaxScalerClock;
 
-    /* Clobber mode timings */
-    if (pATI->OptionPanelDisplay && (pATI->LCDPanelID >= 0) &&
-        !pMode->CrtcHAdjusted && !pMode->CrtcVAdjusted &&
-        (!pATI->OptionLCDSync || (pMode->type & M_T_BUILTIN)))
-    {
-        int VScan;
-
-        pMode->Clock = pATI->LCDClock;
-        pMode->Flags &= ~(V_DBLSCAN | V_INTERLACE | V_CLKDIV2);
-
-        /*
-         * Use doublescanning or multiscanning to get around vertical blending
-         * limitations.
-         */
-        VScan = pATI->LCDVertical / pMode->VDisplay;
-        {
-                pMode->VScan = 0;
-                if (VScan > 1)
-                {
-                VScan = 2;
-                pMode->Flags |= V_DBLSCAN;
-                }
-        }
-
-        pMode->HSyncStart = pMode->HDisplay + pATI->LCDHSyncStart;
-        pMode->HSyncEnd = pMode->HSyncStart + pATI->LCDHSyncWidth;
-        pMode->HTotal = pMode->HDisplay + pATI->LCDHBlankWidth;
-
-        pMode->VSyncStart = pMode->VDisplay +
-            ATIDivide(pATI->LCDVSyncStart, VScan, 0, 0);
-        pMode->VSyncEnd = pMode->VSyncStart +
-            ATIDivide(pATI->LCDVSyncWidth, VScan, 0, 1);
-        pMode->VTotal = pMode->VDisplay +
-            ATIDivide(pATI->LCDVBlankWidth, VScan, 0, 0);
-    }
-
-    {
-            /* Fill in Mach64 data */
-            ATIMach64Calculate(pATI, pATIHW, pMode);
-    }
+    /* Fill in Mach64 data */
+    ATIMach64Calculate(pATI, pATIHW, pMode);
 
     /* Set up LCD register values */
     if (pATI->LCDPanelID >= 0)



More information about the xorg-commit mailing list