[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-avivo: Changes to 'upstream-experimental'



 avivotool/avivotool.c   |  192 +++++++---------
 configure.ac            |   22 +
 include/Makefile.am     |    1 
 include/avivo.h         |    7 
 include/avivo_chipset.h |  189 ++++++++--------
 include/radeon_reg.h    |  251 ++++++++++++++++-----
 xorg/avivo.c            |  100 +++++++-
 xorg/avivo_bios.c       |    2 
 xorg/avivo_chipset.c    |  562 ++++++++++++++++++++++++++++--------------------
 xorg/avivo_common.c     |    1 
 xorg/avivo_crtc.c       |   15 -
 xorg/avivo_cursor.c     |    2 
 xorg/avivo_output.c     |  379 +++++++++++++++-----------------
 xorg/avivo_state.c      |   82 +++----
 14 files changed, 1055 insertions(+), 750 deletions(-)

New commits:
commit be7d380aba8d1ff2272bf2c931b2c9f78a549b46
Author: Matthew Garrett <mjg59@srcf.ucam.org>
Date:   Sat Sep 15 00:46:47 2007 +0100

    Minor include file cleanup

diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index 5363fd9..c34fb92 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -3408,7 +3408,7 @@
 #define AVIVO_TMDSA_DCBALANCER_CONTROL                  0x78d0
 #   define AVIVO_TMDSA_DCBALANCER_CONTROL_EN                  (1 << 0)
 #   define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_EN             (1 << 8)
-#   define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_IN             (16)
+#   define AVIVO_TMDSA_DCBALANCER_CONTROL_TEST_IN_SHIFT       (16)
 #   define AVIVO_TMDSA_DCBALANCER_CONTROL_FORCE               (1 << 24)
 #define AVIVO_TMDSA_DATA_SYNCHRONIZATION                0x78d8
 #   define AVIVO_TMDSA_DATA_SYNCHRONIZATION_DSYNSEL           (1 << 0)
@@ -3437,7 +3437,7 @@
 #define AVIVO_TMDSA_TRANSMITTER_CONTROL				0x7910
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_ENABLE	(1 << 0)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_RESET  	(1 << 1)
-#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_HPD_MASK	(2)
+#	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_HPD_MASK_SHIFT	(2)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_IDSCKSEL	        (1 << 4)
 #       define AVIVO_TMDSA_TRANSMITTER_CONTROL_BGSLEEP          (1 << 5)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN	(1 << 6)
@@ -3445,13 +3445,12 @@
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS	(1 << 13)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TDCLK	        (1 << 14)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS	(1 << 15)
-#       define AVIVO_TMDSA_TRANSMITTER_CONTROL_CLK_PATTERN      (16)
+#       define AVIVO_TMDSA_TRANSMITTER_CONTROL_CLK_PATTERN_SHIFT (16)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_BYPASS_PLL	(1 << 28)
 #       define AVIVO_TMDSA_TRANSMITTER_CONTROL_USE_CLK_DATA     (1 << 29)
 #	define AVIVO_TMDSA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL	(1 << 31)
 
 #define AVIVO_LVTMA_CNTL					0x7a80
-#define AVIVO_TMDSA_CNTL                    0x7880
 #   define AVIVO_LVTMA_CNTL_ENABLE               (1 << 0)
 #   define AVIVO_LVTMA_CNTL_HPD_MASK             (1 << 4)
 #   define AVIVO_LVTMA_CNTL_HPD_SELECT           (1 << 8)
@@ -3473,7 +3472,7 @@
 #define AVIVO_LVTMA_DCBALANCER_CONTROL                  0x7ad0
 #   define AVIVO_LVTMA_DCBALANCER_CONTROL_EN                  (1 << 0)
 #   define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_EN             (1 << 8)
-#   define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_IN             (16)
+#   define AVIVO_LVTMA_DCBALANCER_CONTROL_TEST_IN_SHIFT       (16)
 #   define AVIVO_LVTMA_DCBALANCER_CONTROL_FORCE               (1 << 24)
 
 #define AVIVO_LVTMA_DATA_SYNCHRONIZATION                0x78d8
@@ -3495,20 +3494,20 @@
 #   define AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKDEN_HPD_MASK     (1 << 18)
 
 #define AVIVO_LVTMA_TRANSMITTER_CONTROL			        0x7b10
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_ENABLE	(1 << 0)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_RESET  	(1 << 1)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_HPD_MASK	(2)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_IDSCKSEL	        (1 << 4)
-#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_BGSLEEP          (1 << 5)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN	(1 << 6)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK	        (1 << 8)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS	(1 << 13)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK	        (1 << 14)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS	(1 << 15)
-#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_CLK_PATTERN      (16)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_BYPASS_PLL	(1 << 28)
-#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_USE_CLK_DATA     (1 << 29)
-#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL	(1 << 31)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_ENABLE	  (1 << 0)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_RESET  	  (1 << 1)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_HPD_MASK_SHIFT (2)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_IDSCKSEL	          (1 << 4)
+#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_BGSLEEP            (1 << 5)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_PLL_PWRUP_SEQ_EN	  (1 << 6)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK	          (1 << 8)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TMCLK_FROM_PADS	  (1 << 13)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK	          (1 << 14)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_TDCLK_FROM_PADS	  (1 << 15)
+#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_CLK_PATTERN_SHIFT  (16)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_BYPASS_PLL	  (1 << 28)
+#       define AVIVO_LVTMA_TRANSMITTER_CONTROL_USE_CLK_DATA       (1 << 29)
+#	define AVIVO_LVTMA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL (1 << 31)
 
 #define AVIVO_LVTMA_PWRSEQ_CNTL						0x7af0
 #	define AVIVO_LVTMA_PWRSEQ_EN					    (1 << 0)

commit df63e84fcecb0a80a41bd367535aeb7365d8d116
Author: Matthew Garrett <mjg59@srcf.ucam.org>
Date:   Sat Sep 15 00:38:12 2007 +0100

    Demagicafy DAC registers

diff --git a/avivotool/avivotool.c b/avivotool/avivotool.c
index cb86211..3f79aa1 100644
--- a/avivotool/avivotool.c
+++ b/avivotool/avivotool.c
@@ -492,26 +492,27 @@ void radeon_output_set(char *output, char *status)
     }
     else if (strcmp(output, "dac1") == 0) {
         if (on) {
-            SET_REG(AVIVO_DAC1_MYSTERY1, 0x00000000);
-            SET_REG(AVIVO_DAC1_MYSTERY2, 0x00000000);
-            SET_REG(AVIVO_DAC1_CNTL, AVIVO_DAC_EN);
+            SET_REG(AVIVO_DACA_FORCE_OUTPUT_CNTL, 0x00000000);
+            SET_REG(AVIVO_DACA_POWERDOWN, 0x00000000);
+            SET_REG(AVIVO_DACA_CNTL, AVIVO_DAC_EN);
         }
         else {
-            SET_REG(AVIVO_DAC1_CNTL, 0x00000000);
-            SET_REG(AVIVO_DAC1_MYSTERY1, AVIVO_DAC_MYSTERY1_DIS);
-            SET_REG(AVIVO_DAC1_MYSTERY2, AVIVO_DAC_MYSTERY2_DIS);
+            SET_REG(AVIVO_DACA_CNTL, 0x00000000);
+            SET_REG(AVIVO_DACA_FORCE_OUTPUT_CNTL, (AVIVO_DACA_FORCE_OUTPUT_CNTL_FORCE_DATA_EN | ((AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE | AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN | AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_RED) << AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT)));
+            SET_REG(AVIVO_DACA_POWERDOWN, (AVIVO_DACA_POWERDOWN_POWERDOWN | AVIVO_DACA_POWERDOWN_BLUE | AVIVO_DACA_POWERDOWN_GREEN | AVIVO_DACA_POWERDOWN_RED));
         }
     }
     else if (strcmp(output, "dac2") == 0) {
         if (on) {
-            SET_REG(AVIVO_DAC2_MYSTERY1, 0x00000000);
-            SET_REG(AVIVO_DAC2_MYSTERY2, 0x00000000);
-            SET_REG(AVIVO_DAC2_CNTL, AVIVO_DAC_EN);
+            SET_REG(AVIVO_DACB_FORCE_OUTPUT_CNTL, 0x00000000);
+            SET_REG(AVIVO_DACB_POWERDOWN, 0x00000000);
+            SET_REG(AVIVO_DACB_CNTL, AVIVO_DAC_EN);
+            SET_REG(AVIVO_DACB_FORCE_OUTPUT_CNTL, (AVIVO_DACB_FORCE_OUTPUT_CNTL_FORCE_DATA_EN | ((AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE | AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN | AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_RED) << AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT)));
+            SET_REG(AVIVO_DACB_POWERDOWN, (AVIVO_DACB_POWERDOWN_POWERDOWN | AVIVO_DACB_POWERDOWN_BLUE | AVIVO_DACB_POWERDOWN_GREEN | AVIVO_DACB_POWERDOWN_RED));
+
         }
         else {
-            SET_REG(AVIVO_DAC2_CNTL, 0x00000000);
-            SET_REG(AVIVO_DAC2_MYSTERY1, AVIVO_DAC_MYSTERY1_DIS);
-            SET_REG(AVIVO_DAC2_MYSTERY2, AVIVO_DAC_MYSTERY2_DIS);
+            SET_REG(AVIVO_DACB_CNTL, 0x00000000);
         }
     }
     else if (strcmp(output, "crtc1") == 0) {
@@ -784,12 +785,12 @@ static struct {
     REGLIST(AVIVO_CRTC2_PITCH),
     REGLIST(AVIVO_CRTC2_X_LENGTH),
     REGLIST(AVIVO_CRTC2_Y_LENGTH),
-    REGLIST(AVIVO_DAC1_CNTL),
-    REGLIST(AVIVO_DAC1_MYSTERY1),
-    REGLIST(AVIVO_DAC1_MYSTERY2),
-    REGLIST(AVIVO_DAC2_CNTL),
-    REGLIST(AVIVO_DAC2_MYSTERY1),
-    REGLIST(AVIVO_DAC2_MYSTERY2),
+    REGLIST(AVIVO_DACA_CNTL),
+    REGLIST(AVIVO_DACA_FORCE_OUTPUT_CNTL),
+    REGLIST(AVIVO_DACA_POWERDOWN),
+    REGLIST(AVIVO_DACB_CNTL),
+    REGLIST(AVIVO_DACB_FORCE_OUTPUT_CNTL),
+    REGLIST(AVIVO_DACB_POWERDOWN),
     REGLIST(AVIVO_TMDSA_CNTL),
     REGLIST(AVIVO_TMDSA_TRANSMITTER_ENABLE),
     REGLIST(AVIVO_TMDSA_BIT_DEPTH_CONTROL),
@@ -894,9 +895,9 @@ void radeon_cmd_regs(const char *type)
             show_crtc1 = 1;
         if (GET_REG(AVIVO_CRTC2_CNTL) & AVIVO_CRTC_EN)
             show_crtc2 = 1;
-        if (GET_REG(AVIVO_DAC1_CNTL) & AVIVO_DAC_EN)
+        if (GET_REG(AVIVO_DACA_CNTL) & AVIVO_DAC_EN)
             show_dac1 = 1;
-        if (GET_REG(AVIVO_DAC2_CNTL) & AVIVO_DAC_EN)
+        if (GET_REG(AVIVO_DACB_CNTL) & AVIVO_DAC_EN)
             show_dac2 = 1;
         if (GET_REG(AVIVO_TMDSA_CNTL) & AVIVO_TMDSA_CNTL_ENABLE)
             show_tmds1 = 1;
@@ -1138,25 +1139,25 @@ void radeon_cmd_regs(const char *type)
     }
 
     if (show_dac1) {
-        printf("\nDAC1:\n");
-        SHOW_REG(AVIVO_DAC1_CNTL);
-        SHOW_REG(AVIVO_DAC1_MYSTERY1);
-        SHOW_REG(AVIVO_DAC1_MYSTERY2);
+        printf("\nDACA:\n");
+        SHOW_REG(AVIVO_DACA_CNTL);
+        SHOW_REG(AVIVO_DACA_FORCE_OUTPUT_CNTL);
+        SHOW_REG(AVIVO_DACA_POWERDOWN);
     }
     else {
         if (!shut_up)
-            printf("\nDAC1 disabled\n");
+            printf("\nDACA disabled\n");
     }
 
     if (show_dac2) {
-        printf("\nDAC2:\n");
-        SHOW_REG(AVIVO_DAC2_CNTL);
-        SHOW_REG(AVIVO_DAC2_MYSTERY1);
-        SHOW_REG(AVIVO_DAC2_MYSTERY2);
+        printf("\nDACB:\n");
+        SHOW_REG(AVIVO_DACB_CNTL);
+        SHOW_REG(AVIVO_DACB_FORCE_OUTPUT_CNTL);
+        SHOW_REG(AVIVO_DACB_POWERDOWN);
     }
     else {
         if (!shut_up)
-            printf("\nDAC2 disabled\n");
+            printf("\nDACB disabled\n");
     }
 
     if (show_tmds1) {
diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index 4797055..5363fd9 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -3339,18 +3339,36 @@
 #define AVIVO_CRTC2_65C0					0x6dc0
 #define AVIVO_CRTC2_65C8					0x6dc8
 
-#define AVIVO_DAC1_CNTL						0x7800
-#define AVIVO_DAC1_CRTC_SOURCE				0x7804
+#define AVIVO_DACA_CNTL						0x7800
+#define AVIVO_DACA_CRTC_SOURCE				0x7804
 #	define AVIVO_DAC_EN							(1 << 0)
-#define AVIVO_DAC1_MYSTERY1					0x783c
-#	define AVIVO_DAC_MYSTERY1_DIS				((1 << 0) | (1 << 8) | (1 << 9) | (1 << 10))
-#define AVIVO_DAC1_MYSTERY2					0x7850
-#	define AVIVO_DAC_MYSTERY2_DIS				((1 << 0) | (1 << 8) | (1 << 16) | (1 << 24))
-
-#define AVIVO_DAC2_CNTL						0x7a00
-#define AVIVO_DAC2_CRTC_SOURCE				0x7a04
-#define AVIVO_DAC2_MYSTERY1					0x7a3c
-#define AVIVO_DAC2_MYSTERY2					0x7a50
+#define AVIVO_DACA_FORCE_OUTPUT_CNTL				0x783c
+# define AVIVO_DACA_FORCE_OUTPUT_CNTL_FORCE_DATA_EN             (1 << 0)
+# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT            (8)
+# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE             (1 << 0)
+# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN            (1 << 1)
+# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_SEL_RED              (1 << 2)
+# define AVIVO_DACA_FORCE_OUTPUT_CNTL_DATA_ON_BLANKB_ONLY       (1 << 24)
+#define AVIVO_DACA_POWERDOWN					0x7850
+# define AVIVO_DACA_POWERDOWN_POWERDOWN                         (1 << 0)
+# define AVIVO_DACA_POWERDOWN_BLUE                              (1 << 8)
+# define AVIVO_DACA_POWERDOWN_GREEN                             (1 << 16)
+# define AVIVO_DACA_POWERDOWN_RED                               (1 << 24)
+
+#define AVIVO_DACB_CNTL						0x7a00
+#define AVIVO_DACB_CRTC_SOURCE				0x7a04
+#define AVIVO_DACB_FORCE_OUTPUT_CNTL				0x7a3c
+# define AVIVO_DACB_FORCE_OUTPUT_CNTL_FORCE_DATA_EN             (1 << 0)
+# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_SHIFT            (8)
+# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_BLUE             (1 << 0)
+# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_GREEN            (1 << 1)
+# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_SEL_RED              (1 << 2)
+# define AVIVO_DACB_FORCE_OUTPUT_CNTL_DATA_ON_BLANKB_ONLY       (1 << 24)
+#define AVIVO_DACB_POWERDOWN					0x7a50
+# define AVIVO_DACB_POWERDOWN_POWERDOWN                         (1 << 0)
+# define AVIVO_DACB_POWERDOWN_BLUE                              (1 << 8)
+# define AVIVO_DACB_POWERDOWN_GREEN                             (1 << 16)
+# define AVIVO_DACB_POWERDOWN_RED                               (1 << 24)
 
 /* Frustratingly, at least on my R580, the DAC and TMDS orders
  * appear inversed: 7800 and 7a80 enable/disable the same physical
diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index bb0fc23..16cd9f2 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -43,14 +43,14 @@ avivo_output_dac1_setup(xf86OutputPtr output)
         struct avivo_crtc_private *avivo_crtc = output->crtc->driver_private;
 
         xf86DrvMsg(output->scrn->scrnIndex, X_INFO,
-                   "(DAC1) %s connector associated to crtc(%d)\n",
+                   "(DACA) %s connector associated to crtc(%d)\n",
                    xf86ConnectorGetName(avivo_output->type),
                    avivo_crtc->crtc_number);
-        OUTREG(AVIVO_DAC1_CRTC_SOURCE, avivo_crtc->crtc_number);
+        OUTREG(AVIVO_DACA_CRTC_SOURCE, avivo_crtc->crtc_number);
     }
-    OUTREG(AVIVO_DAC1_MYSTERY1, 0);
-    OUTREG(AVIVO_DAC1_MYSTERY2, 0);
-    OUTREG(AVIVO_DAC1_CNTL, AVIVO_DAC_EN);
+    OUTREG(AVIVO_DACA_FORCE_OUTPUT_CNTL, 0);
+    OUTREG(AVIVO_DACA_POWERDOWN, 0);
+    OUTREG(AVIVO_DACA_CNTL, AVIVO_DAC_EN);
 }
 
 static void
@@ -63,14 +63,14 @@ avivo_output_dac2_setup(xf86OutputPtr output)
         struct avivo_crtc_private *avivo_crtc = output->crtc->driver_private;
 
         xf86DrvMsg(output->scrn->scrnIndex, X_INFO,
-                   "(DAC2) %s connector associated to crtc(%d)\n",
+                   "(DACB) %s connector associated to crtc(%d)\n",
                    xf86ConnectorGetName(avivo_output->type),
                    avivo_crtc->crtc_number);
-        OUTREG(AVIVO_DAC2_CRTC_SOURCE, avivo_crtc->crtc_number);
+        OUTREG(AVIVO_DACB_CRTC_SOURCE, avivo_crtc->crtc_number);
     }
-    OUTREG(AVIVO_DAC2_MYSTERY1, 0);
-    OUTREG(AVIVO_DAC2_MYSTERY2, 0);
-    OUTREG(AVIVO_DAC2_CNTL, AVIVO_DAC_EN);
+    OUTREG(AVIVO_DACB_FORCE_OUTPUT_CNTL, 0);
+    OUTREG(AVIVO_DACB_POWERDOWN, 0);
+    OUTREG(AVIVO_DACB_CNTL, AVIVO_DAC_EN);
 }
 
 static void
@@ -165,12 +165,12 @@ avivo_output_dac1_dpms(xf86OutputPtr output, int mode)
 
     switch(mode) {
     case DPMSModeOn:
-        OUTREG(AVIVO_DAC1_CNTL, AVIVO_DAC_EN);
+        OUTREG(AVIVO_DACA_CNTL, AVIVO_DAC_EN);
         break;
     case DPMSModeStandby:
     case DPMSModeSuspend:
     case DPMSModeOff:
-        OUTREG(AVIVO_DAC1_CNTL, 0);
+        OUTREG(AVIVO_DACA_CNTL, 0);
         break;
     }
 }
@@ -182,12 +182,12 @@ avivo_output_dac2_dpms(xf86OutputPtr output, int mode)
 
     switch(mode) {
     case DPMSModeOn:
-        OUTREG(AVIVO_DAC2_CNTL, AVIVO_DAC_EN);
+        OUTREG(AVIVO_DACB_CNTL, AVIVO_DAC_EN);
         break;
     case DPMSModeStandby:
     case DPMSModeSuspend:
     case DPMSModeOff:
-        OUTREG(AVIVO_DAC2_CNTL, 0);
+        OUTREG(AVIVO_DACB_CNTL, 0);
         break;
     }
 }
diff --git a/xorg/avivo_state.c b/xorg/avivo_state.c
index 3dff5e1..50c709e 100644
--- a/xorg/avivo_state.c
+++ b/xorg/avivo_state.c
@@ -156,17 +156,17 @@ avivo_restore_state(ScrnInfoPtr screen_info)
     OUTREG(AVIVO_CRTC2_X_LENGTH, state->crtc2_x_length);
     OUTREG(AVIVO_CRTC2_Y_LENGTH, state->crtc2_y_length);
 
-    OUTREG(AVIVO_DAC1_CNTL, state->dac1_cntl);
-    OUTREG(AVIVO_DAC1_MYSTERY1, state->dac1_mystery1);
-    OUTREG(AVIVO_DAC1_MYSTERY2, state->dac1_mystery2);
+    OUTREG(AVIVO_DACA_CNTL, state->dac1_cntl);
+    OUTREG(AVIVO_DACA_FORCE_OUTPUT_CNTL, state->dac1_mystery1);
+    OUTREG(AVIVO_DACA_POWERDOWN, state->dac1_mystery2);
     OUTREG(AVIVO_TMDSA_CNTL, state->tmds1_cntl);
     OUTREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL, state->tmds1_mystery1);
     OUTREG(AVIVO_TMDSA_DATA_SYNCHRONIZATION, state->tmds1_mystery2);
     OUTREG(AVIVO_TMDSA_TRANSMITTER_ENABLE, state->tmds1_clock_cntl);
     OUTREG(AVIVO_TMDSA_TRANSMITTER_CONTROL, state->tmds1_mystery3);
-    OUTREG(AVIVO_DAC2_CNTL, state->dac2_cntl);
-    OUTREG(AVIVO_DAC2_MYSTERY1, state->dac2_mystery1);
-    OUTREG(AVIVO_DAC2_MYSTERY2, state->dac2_mystery2);
+    OUTREG(AVIVO_DACB_CNTL, state->dac2_cntl);
+    OUTREG(AVIVO_DACB_FORCE_OUTPUT_CNTL, state->dac2_mystery1);
+    OUTREG(AVIVO_DACB_POWERDOWN, state->dac2_mystery2);
     OUTREG(AVIVO_LVTMA_CNTL, state->tmds2_cntl);
     OUTREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL, state->tmds2_mystery1);
     OUTREG(AVIVO_LVTMA_DATA_SYNCHRONIZATION, state->tmds2_mystery2);
@@ -273,9 +273,9 @@ avivo_save_state(ScrnInfoPtr screen_info)
     state->crtc2_x_length = INREG(AVIVO_CRTC2_X_LENGTH);
     state->crtc2_y_length = INREG(AVIVO_CRTC2_Y_LENGTH);
 
-    state->dac1_cntl = INREG(AVIVO_DAC1_CNTL);
-    state->dac1_mystery1 = INREG(AVIVO_DAC1_MYSTERY1);
-    state->dac1_mystery2 = INREG(AVIVO_DAC1_MYSTERY2);
+    state->dac1_cntl = INREG(AVIVO_DACA_CNTL);
+    state->dac1_mystery1 = INREG(AVIVO_DACA_FORCE_OUTPUT_CNTL);
+    state->dac1_mystery2 = INREG(AVIVO_DACA_POWERDOWN);
 
     state->tmds1_cntl = INREG(AVIVO_TMDSA_CNTL);
     state->tmds1_mystery1 = INREG(AVIVO_TMDSA_BIT_DEPTH_CONTROL);
@@ -283,9 +283,9 @@ avivo_save_state(ScrnInfoPtr screen_info)
     state->tmds1_clock_cntl = INREG(AVIVO_TMDSA_TRANSMITTER_ENABLE);
     state->tmds1_mystery3 = INREG(AVIVO_TMDSA_TRANSMITTER_CONTROL);
 
-    state->dac2_cntl = INREG(AVIVO_DAC2_CNTL);
-    state->dac2_mystery1 = INREG(AVIVO_DAC2_MYSTERY1);
-    state->dac2_mystery2 = INREG(AVIVO_DAC2_MYSTERY2);
+    state->dac2_cntl = INREG(AVIVO_DACB_CNTL);
+    state->dac2_mystery1 = INREG(AVIVO_DACB_FORCE_OUTPUT_CNTL);
+    state->dac2_mystery2 = INREG(AVIVO_DACB_POWERDOWN);
 
     state->tmds2_cntl = INREG(AVIVO_LVTMA_CNTL);
     state->tmds2_mystery1 = INREG(AVIVO_LVTMA_BIT_DEPTH_CONTROL);

commit b33e7867a320a7781b6b1246859ce885f90f8549
Author: Matthew Garrett <mjg59@srcf.ucam.org>
Date:   Sat Sep 15 00:23:37 2007 +0100

    Clarify shift name

diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index 7ad466f..4797055 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -3513,7 +3513,7 @@
 #       define AVIVO_LVTMA_PWRSEQ_STATE_SYNCEN                  (1 << 2)
 #       define AVIVO_LVTMA_PWRSEQ_STATE_BLON                    (1 << 3)
 #       define AVIVO_LVTMA_PWRSEQ_STATE_DONE                    (1 << 4)
-#       define AVIVO_LVTMA_PWRSEQ_STATE_STATUS                  (8)
+#       define AVIVO_LVTMA_PWRSEQ_STATE_STATUS_SHIFT            (8)
 
 #define AVIVO_LVDS_BACKLIGHT_CNTL			0x7af8
 #	define AVIVO_LVDS_BACKLIGHT_CNTL_EN			(1 << 0)
diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index d7249f4..bb0fc23 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -267,7 +267,7 @@ avivo_output_lvds_dpms(xf86OutputPtr output, int mode)
         do {
             tmp = INREG(AVIVO_LVTMA_PWRSEQ_STATE);
             usleep(100);
-        } while (tmp != 0x8 << AVIVO_LVTMA_PWRSEQ_STATE_STATUS);
+        } while (tmp != 0x8 << AVIVO_LVTMA_PWRSEQ_STATE_STATUS_SHIFT);
         OUTREG(AVIVO_LVTMA_TRANSMITTER_ENABLE, 0);
         OUTREG(AVIVO_LVTMA_CLOCK_ENABLE, 0);
         break;

commit cf9952033a2cab0fd1d8cb453c4d5fdb6f687810
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 03:25:03 2007 +0100

    make LVTMA power management constants match spec better

diff --git a/avivotool/avivotool.c b/avivotool/avivotool.c
index f12c1e3..cb86211 100644
--- a/avivotool/avivotool.c
+++ b/avivotool/avivotool.c
@@ -548,10 +548,10 @@ void radeon_output_set(char *output, char *status)
     }
     else if (strcmp(output, "lvds") == 0) {
         if (on)
-            SET_REG(AVIVO_LVDS_CNTL, GET_REG(AVIVO_LVDS_CNTL) | AVIVO_LVDS_EN);
+            SET_REG(AVIVO_LVTMA_PWRSEQ_CNTL, GET_REG(AVIVO_LVTMA_PWRSEQ_CNTL) | AVIVO_LVTMA_PWRSEQ_EN);
         else
-            SET_REG(AVIVO_LVDS_CNTL, GET_REG(AVIVO_LVDS_CNTL) &
-                                      ~(AVIVO_LVDS_EN));
+            SET_REG(AVIVO_LVTMA_PWRSEQ_CNTL, GET_REG(AVIVO_LVTMA_PWRSEQ_CNTL) &
+                                      ~(AVIVO_LVTMA_PWRSEQ_EN));
     }
     else if (strcmp(output, "cur1") == 0) {
         if (on) {
@@ -802,7 +802,7 @@ static struct {
     REGLIST(AVIVO_LVTMA_DATA_SYNCHRONIZATION),
     REGLIST(AVIVO_LVTMA_TRANSMITTER_CONTROL),
     REGLIST(AVIVO_TMDS_STATUS),
-    REGLIST(AVIVO_LVDS_CNTL),
+    REGLIST(AVIVO_LVTMA_PWRSEQ_CNTL),
     REGLIST(AVIVO_LVDS_BACKLIGHT_CNTL),
     REGLIST(AVIVO_CURSOR1_CNTL),
     REGLIST(AVIVO_CURSOR1_POSITION),
@@ -902,7 +902,7 @@ void radeon_cmd_regs(const char *type)
             show_tmds1 = 1;
         if (GET_REG(AVIVO_LVTMA_CNTL) & AVIVO_TMDSA_CNTL_ENABLE)
             show_tmds2 = 1;
-        if (GET_REG(AVIVO_LVDS_EN) & AVIVO_LVDS_EN)
+        if (GET_REG(AVIVO_LVTMA_PWRSEQ_EN) & AVIVO_LVTMA_PWRSEQ_EN)
             show_lvds = 1;
         if (GET_REG(AVIVO_CURSOR1_CNTL) & AVIVO_CURSOR_EN)
             show_cur1 = 1;
@@ -1203,7 +1203,7 @@ void radeon_cmd_regs(const char *type)
 
     if (show_lvds) {
         printf("\nLVDS:\n");
-        SHOW_REG_BITS(AVIVO_LVDS_CNTL,
+        SHOW_REG_BITS(AVIVO_LVTMA_PWRSEQ_CNTL,
                       0, 0, "Enable",
                       4, 4, "Enable #2",
                       0, 0, NULL);
diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index 44b6377..7ad466f 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -3492,9 +3492,21 @@
 #       define AVIVO_LVTMA_TRANSMITTER_CONTROL_USE_CLK_DATA     (1 << 29)
 #	define AVIVO_LVTMA_TRANSMITTER_CONTROL_INPUT_TEST_CLK_SEL	(1 << 31)
 
-#define AVIVO_LVDS_CNTL						0x7af0
-#	define AVIVO_LVDS_EN					    ((1 << 4))
-#	define AVIVO_LVDS_MYSTERY					((1 << 0) | (1 << 2) | (1 << 3))
+#define AVIVO_LVTMA_PWRSEQ_CNTL						0x7af0
+#	define AVIVO_LVTMA_PWRSEQ_EN					    (1 << 0)
+#	define AVIVO_LVTMA_PWRSEQ_PLL_ENABLE_MASK			    (1 << 2)
+#	define AVIVO_LVTMA_PWRSEQ_PLL_RESET_MASK			    (1 << 3)
+#	define AVIVO_LVTMA_PWRSEQ_TARGET_STATE				    (1 << 4)
+#	define AVIVO_LVTMA_SYNCEN					    (1 << 8)
+#	define AVIVO_LVTMA_SYNCEN_OVRD					    (1 << 9)
+#	define AVIVO_LVTMA_SYNCEN_POL					    (1 << 10)
+#	define AVIVO_LVTMA_DIGON					    (1 << 16)
+#	define AVIVO_LVTMA_DIGON_OVRD					    (1 << 17)
+#	define AVIVO_LVTMA_DIGON_POL					    (1 << 18)
+#	define AVIVO_LVTMA_BLON						    (1 << 24)
+#	define AVIVO_LVTMA_BLON_OVRD					    (1 << 25)
+#	define AVIVO_LVTMA_BLON_POL					    (1 << 26)
+
 #define AVIVO_LVTMA_PWRSEQ_STATE                        0x7af4
 #       define AVIVO_LVTMA_PWRSEQ_STATE_TARGET_STATE_R          (1 << 0)
 #       define AVIVO_LVTMA_PWRSEQ_STATE_DIGON                   (1 << 1)
diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index ff8161a..d7249f4 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -242,7 +242,11 @@ avivo_output_lvds_dpms(xf86OutputPtr output, int mode)
     switch(mode) {
     case DPMSModeOn:
         xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "ENABLE LVTMA\n");
-        OUTREG(AVIVO_LVDS_CNTL, AVIVO_LVDS_EN | AVIVO_LVDS_MYSTERY);
+        OUTREG(AVIVO_LVTMA_PWRSEQ_CNTL,
+            AVIVO_LVTMA_PWRSEQ_EN |
+            AVIVO_LVTMA_PWRSEQ_PLL_ENABLE_MASK |
+            AVIVO_LVTMA_PWRSEQ_PLL_RESET_MASK |
+            AVIVO_LVTMA_PWRSEQ_TARGET_STATE);
 	OUTREG(AVIVO_LVTMA_TRANSMITTER_ENABLE, (AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKC0EN | 
 						AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD00EN | 
 						AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD01EN | 
@@ -256,7 +260,10 @@ avivo_output_lvds_dpms(xf86OutputPtr output, int mode)
     case DPMSModeSuspend:
     case DPMSModeOff:
         xf86DrvMsg(output->scrn->scrnIndex, X_INFO, "DISABLE LVTMA\n");
-        OUTREG(AVIVO_LVDS_CNTL, AVIVO_LVDS_MYSTERY);
+        OUTREG(AVIVO_LVTMA_PWRSEQ_CNTL,
+            AVIVO_LVTMA_PWRSEQ_EN |
+            AVIVO_LVTMA_PWRSEQ_PLL_ENABLE_MASK |
+            AVIVO_LVTMA_PWRSEQ_PLL_RESET_MASK);
         do {
             tmp = INREG(AVIVO_LVTMA_PWRSEQ_STATE);
             usleep(100);

commit 9d8ffbc5372bea4e1d139a32ac6f7c7fb1aad869
Author: Matthew Garrett <mjg59@srcf.ucam.org>
Date:   Thu Sep 13 02:50:55 2007 +0100

    Avoid having multiple defines with the same name, as it tends to cause things
    not to work so well

diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index e65ead2..239496c 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -3502,7 +3502,7 @@
 #       define AVIVO_LVTMA_PWRSEQ_STATE_SYNCEN                  (1 << 2)
 #       define AVIVO_LVTMA_PWRSEQ_STATE_BLON                    (1 << 3)
 #       define AVIVO_LVTMA_PWRSEQ_STATE_DONE                    (1 << 4)
-#       define AVIVO_LVTMA_PWRSEQ_STATE                         (8)
+#       define AVIVO_LVTMA_PWRSEQ_STATE_STATUS                  (8)
 
 #define AVIVO_LVDS_BACKLIGHT_CNTL			0x7af8
 #	define AVIVO_LVDS_BACKLIGHT_CNTL_EN			(1 << 0)
diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index f613395..a78faa8 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -261,7 +261,7 @@ avivo_output_lvds_dpms(xf86OutputPtr output, int mode)
         do {
             tmp = INREG(AVIVO_LVTMA_PWRSEQ_STATE);
             usleep(100);
-        } while (tmp != 0x8 << AVIVO_LVTMA_PWRSEQ_STATE);
+        } while (tmp != 0x8 << AVIVO_LVTMA_PWRSEQ_STATE_STATUS);
         OUTREG(AVIVO_LVTMA_TRANSMITTER_ENABLE, 0);
         OUTREG(AVIVO_LVTMA_CLOCK_ENABLE, 0);
         break;

commit 5757df29e6e427a6131fd7e96dab91f54e36e6c2
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 02:16:36 2007 +0100

    No more Pimms for Matthew.

diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index e1a629d..71fa04d 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -141,8 +141,7 @@ avivo_output_tmds2_setup(xf86OutputPtr output)
 					    AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD11EN | 
 					    AVIVO_LVTMA_TRANSMITTER_ENABLE_LNKD12EN));
 
-    /* FIXME: This is wrong, surely? Or are we assuming that the TMDS is set up properly? */
-    OUTREG(AVIVO_LVTMA_CNTL, (INREG(AVIVO_TMDSA_CNTL) | AVIVO_LVTMA_CNTL_ENABLE));
+    OUTREG(AVIVO_LVTMA_CNTL, (INREG(AVIVO_LVTMA_CNTL) | AVIVO_LVTMA_CNTL_ENABLE));
     OUTREG(AVIVO_LVTMA_DCBALANCER_CONTROL, AVIVO_LVTMA_DCBALANCER_CONTROL_EN);
 
     /* FIXME: Bonghits? Make really sure we reenable the PLLs*/

commit 09688573f9fbf07e6678fbaca1bccafdf239b303
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 01:02:13 2007 +0100

    avivo_output_init: initialize output to 0 to shut up compiler warnings

diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index 1aae462..e1a629d 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -493,7 +493,7 @@ Bool
 avivo_output_init(ScrnInfoPtr screen_info, xf86ConnectorType type,
                   int number, unsigned long ddc_reg)
 {
-    xf86OutputPtr output;
+    xf86OutputPtr output = {0,};
     struct avivo_output_private *avivo_output;
     int name_size;
 

commit 9e0d5a60a81e228f4f849402270a18345ec17b58
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 01:00:55 2007 +0100

    remove unused variable

diff --git a/xorg/avivo_cursor.c b/xorg/avivo_cursor.c
index 735bdef..152238c 100644
--- a/xorg/avivo_cursor.c
+++ b/xorg/avivo_cursor.c
@@ -154,7 +154,6 @@ avivo_cursor_set_colors(ScrnInfoPtr screen_info, int bg, int fg)
 void
 avivo_cursor_init(ScreenPtr screen)
 {
-    ScrnInfoPtr screen_info = xf86Screens[screen->myNum];
     xf86CursorInfoPtr cursor;
 
     cursor = xcalloc(1, sizeof(*cursor));

commit b855cd14b243fade1d72a9680c72ff937767dc81
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 00:57:24 2007 +0100

    6*84 is blank status, not mode (and is read only)

diff --git a/avivotool/avivotool.c b/avivotool/avivotool.c
index 94c7edc..f12c1e3 100644
--- a/avivotool/avivotool.c
+++ b/avivotool/avivotool.c
@@ -538,7 +538,6 @@ void radeon_output_set(char *output, char *status)
             SET_REG(AVIVO_CRTC1_V_SYNC_WID, (3 << 16));
             SET_REG(AVIVO_CRTC1_V_SYNC_POL, 0x00000000);
             SET_REG(AVIVO_CRTC1_FB_FORMAT, AVIVO_CRTC_FORMAT_ARGB32);
-            SET_REG(AVIVO_CRTC1_MODE, 0x00000000);
             SET_REG(AVIVO_CRTC1_CNTL, AVIVO_CRTC_EN);
             SET_REG(AVIVO_CRTC1_SCAN_ENABLE, AVIVO_CRTC_SCAN_EN);
         }
@@ -756,7 +755,7 @@ static struct {
     REGLIST(AVIVO_CRTC1_V_SYNC_WID),
     REGLIST(AVIVO_CRTC1_V_SYNC_POL),
     REGLIST(AVIVO_CRTC1_CNTL),
-    REGLIST(AVIVO_CRTC1_MODE),
+    REGLIST(AVIVO_CRTC1_BLANK_STATUS),
     REGLIST(AVIVO_CRTC1_SCAN_ENABLE),
     REGLIST(AVIVO_CRTC1_FB_FORMAT),
     REGLIST(AVIVO_CRTC1_FB_LOCATION),
@@ -777,7 +776,7 @@ static struct {
     REGLIST(AVIVO_CRTC2_V_SYNC_WID),
     REGLIST(AVIVO_CRTC2_V_SYNC_POL),
     REGLIST(AVIVO_CRTC2_CNTL),
-    REGLIST(AVIVO_CRTC2_MODE),
+    REGLIST(AVIVO_CRTC2_BLANK_STATUS),
     REGLIST(AVIVO_CRTC2_SCAN_ENABLE),
     REGLIST(AVIVO_CRTC2_FB_FORMAT),
     REGLIST(AVIVO_CRTC2_FB_LOCATION),
@@ -1036,8 +1035,8 @@ void radeon_cmd_regs(const char *type)
                       8, 8, "Mystery bit #1",
                       16, 16, "Mystery bit #2",
                       0, 0, NULL);
-        SHOW_REG_BITS(AVIVO_CRTC1_MODE,
-                      8, 8, "Text mode",
+        SHOW_REG_BITS(AVIVO_CRTC1_BLANK_STATUS,
+                      8, 8, "Blank status",
                       0, 0, NULL);
         SHOW_REG_DECIMAL(AVIVO_CRTC1_H_TOTAL);
         SHOW_REG_BITS(AVIVO_CRTC1_H_BLANK,
@@ -1098,8 +1097,8 @@ void radeon_cmd_regs(const char *type)
                       8, 8, "Mystery bit #1",
                       16, 16, "Mystery bit #2",
                       0, 0, NULL);
-        SHOW_REG_BITS(AVIVO_CRTC2_MODE,
-                      8, 8, "Text mode",
+        SHOW_REG_BITS(AVIVO_CRTC2_BLANK_STATUS,
+                      8, 8, "Blank status",
                       0, 0, NULL);
         SHOW_REG_DECIMAL(AVIVO_CRTC2_H_TOTAL);
         SHOW_REG_BITS(AVIVO_CRTC2_H_BLANK,
diff --git a/include/avivo.h b/include/avivo.h
index bfb0b6d..b2ab816 100644
--- a/include/avivo.h
+++ b/include/avivo.h
@@ -109,7 +109,7 @@ struct avivo_state
     int crtc1_v_sync_wid;
     int crtc1_v_sync_pol;
     int crtc1_cntl;
-    int crtc1_mode;
+    int crtc1_blank_status;
     int crtc1_stereo_status;
     int crtc1_scan_enable;
     int crtc1_fb_format;
@@ -142,7 +142,7 @@ struct avivo_state
     int crtc2_v_sync_wid;
     int crtc2_v_sync_pol;
     int crtc2_cntl;
-    int crtc2_mode;
+    int crtc2_blank_status;
     int crtc2_scan_enable;
     int crtc2_fb_format;
     int crtc2_fb_location;
diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index 874ffdc..b73b68c 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -84,7 +84,7 @@
 #       define RADEON_AGP_APER_SIZE_8MB     (0x3e << 0)
 #       define RADEON_AGP_APER_SIZE_4MB     (0x3f << 0)
 #       define RADEON_AGP_APER_SIZE_MASK    (0x3f << 0)
-#define RADEON_STATUS_PCI_CONFIG            0x06
+#define RADEON_STATUS_BLANK_CONFIG          0x06
 #       define RADEON_CAP_LIST              0x100000
 #define RADEON_CAPABILITIES_PTR_PCI_CONFIG  0x34 /* offset in PCI config*/
 #       define RADEON_CAP_PTR_MASK          0xfc /* mask off reserved bits of CAP_PTR */
@@ -3245,8 +3245,7 @@
 #define AVIVO_CRTC1_V_SYNC_POL				0x602c
 #define AVIVO_CRTC1_CNTL					0x6080
 #	define AVIVO_CRTC_EN						(1 << 0)
-#define AVIVO_CRTC1_MODE					0x6084
-#       define AVIVO_CRTC_MODE_TEXT				(1 << 8)
+#define AVIVO_CRTC1_BLANK_STATUS			0x6084
 #define AVIVO_CRTC1_STEREO_STATUS			0x60c0
 
 /* These all appear to control the scanout from the framebuffer.
@@ -3313,7 +3312,7 @@
 #define AVIVO_CRTC2_V_SYNC_WID				0x6828
 #define AVIVO_CRTC2_V_SYNC_POL				0x682c
 #define AVIVO_CRTC2_CNTL					0x6880
-#define AVIVO_CRTC2_MODE					0x6884
+#define AVIVO_CRTC2_BLANK_STATUS			0x6884
 
 #define AVIVO_CRTC2_SCAN_ENABLE				0x6900
 #define AVIVO_CRTC2_FB_FORMAT				0x6904
diff --git a/xorg/avivo_crtc.c b/xorg/avivo_crtc.c
index 7114f0d..0e92892 100644
--- a/xorg/avivo_crtc.c
+++ b/xorg/avivo_crtc.c
@@ -254,7 +254,6 @@ avivo_crtc_mode_set(xf86CrtcPtr crtc,
            avivo_crtc->fb_format);
     OUTREG(AVIVO_CRTC1_FB_END + avivo_crtc->crtc_offset,
            fb_location + avivo_crtc->fb_length);
-    OUTREG(AVIVO_CRTC1_MODE + avivo_crtc->crtc_offset, 0);
     /* avivo can only shift offset by 4 pixel in x if you program somethings
      * not multiple of 4 you gonna drive the GPU crazy and likely won't
      * be able to restore it without cold reboot (vbe post not enough)
diff --git a/xorg/avivo_state.c b/xorg/avivo_state.c
index f7d3864..3dff5e1 100644
--- a/xorg/avivo_state.c
+++ b/xorg/avivo_state.c
@@ -114,7 +114,6 @@ avivo_restore_state(ScrnInfoPtr screen_info)
 #endif
     OUTREG(AVIVO_CRTC1_V_SYNC_POL, state->crtc1_v_sync_pol);
     OUTREG(AVIVO_CRTC1_CNTL, state->crtc1_cntl);
-    OUTREG(AVIVO_CRTC1_MODE, state->crtc1_mode);
     OUTREG(AVIVO_CRTC1_SCAN_ENABLE, state->crtc1_scan_enable);
     OUTREG(AVIVO_CRTC1_FB_FORMAT, state->crtc1_fb_format);
     OUTREG(AVIVO_CRTC1_FB_LOCATION, state->crtc1_fb_location);
@@ -148,7 +147,7 @@ avivo_restore_state(ScrnInfoPtr screen_info)
     OUTREG(AVIVO_CRTC2_V_SYNC_WID, state->crtc2_v_sync_wid);
     OUTREG(AVIVO_CRTC2_V_SYNC_POL, state->crtc2_v_sync_pol);
     OUTREG(AVIVO_CRTC2_CNTL, state->crtc2_cntl);
-    OUTREG(AVIVO_CRTC2_MODE, state->crtc2_mode);
+    OUTREG(AVIVO_CRTC2_BLANK_STATUS, state->crtc2_blank_status);
     OUTREG(AVIVO_CRTC2_SCAN_ENABLE, state->crtc2_scan_enable);
     OUTREG(AVIVO_CRTC2_FB_FORMAT, state->crtc2_fb_format);
     OUTREG(AVIVO_CRTC2_FB_LOCATION, state->crtc2_fb_location);
@@ -231,7 +230,7 @@ avivo_save_state(ScrnInfoPtr screen_info)
     state->crtc1_v_sync_wid = INREG(AVIVO_CRTC1_V_SYNC_WID);
     state->crtc1_v_sync_pol = INREG(AVIVO_CRTC1_V_SYNC_POL);
     state->crtc1_cntl = INREG(AVIVO_CRTC1_CNTL);
-    state->crtc1_mode = INREG(AVIVO_CRTC1_MODE);
+    state->crtc1_blank_status = INREG(AVIVO_CRTC1_BLANK_STATUS);
     state->crtc1_stereo_status = INREG(AVIVO_CRTC1_STEREO_STATUS);
     state->crtc1_scan_enable = INREG(AVIVO_CRTC1_SCAN_ENABLE);
     state->crtc1_fb_format = INREG(AVIVO_CRTC1_FB_FORMAT);
@@ -265,7 +264,7 @@ avivo_save_state(ScrnInfoPtr screen_info)
     state->crtc2_v_sync_wid = INREG(AVIVO_CRTC2_V_SYNC_WID);
     state->crtc2_v_sync_pol = INREG(AVIVO_CRTC2_V_SYNC_POL);
     state->crtc2_cntl = INREG(AVIVO_CRTC2_CNTL);
-    state->crtc2_mode = INREG(AVIVO_CRTC2_MODE);
+    state->crtc2_blank_status = INREG(AVIVO_CRTC2_BLANK_STATUS);
     state->crtc2_scan_enable = INREG(AVIVO_CRTC2_SCAN_ENABLE);
     state->crtc2_fb_format = INREG(AVIVO_CRTC2_FB_FORMAT);
     state->crtc2_fb_location = INREG(AVIVO_CRTC2_FB_LOCATION);

commit 5cf23d02078761e02b1dee999e36beb05ca1cb11
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 00:43:40 2007 +0100

    avivotool: don't set irrelevant CRTC control flags

diff --git a/avivotool/avivotool.c b/avivotool/avivotool.c
index 8794bb6..94c7edc 100644
--- a/avivotool/avivotool.c
+++ b/avivotool/avivotool.c
@@ -539,7 +539,7 @@ void radeon_output_set(char *output, char *status)
             SET_REG(AVIVO_CRTC1_V_SYNC_POL, 0x00000000);
             SET_REG(AVIVO_CRTC1_FB_FORMAT, AVIVO_CRTC_FORMAT_ARGB32);
             SET_REG(AVIVO_CRTC1_MODE, 0x00000000);
-            SET_REG(AVIVO_CRTC1_CNTL, 0x00010101);
+            SET_REG(AVIVO_CRTC1_CNTL, AVIVO_CRTC_EN);
             SET_REG(AVIVO_CRTC1_SCAN_ENABLE, AVIVO_CRTC_SCAN_EN);
         }
         else {

commit 2fbe3c902f3de9b1d6b3ebc282c0616476b11cb9
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 00:41:20 2007 +0100

    don't write to stereoscopic display status register

diff --git a/avivotool/avivotool.c b/avivotool/avivotool.c
index aed03a6..8794bb6 100644
--- a/avivotool/avivotool.c
+++ b/avivotool/avivotool.c
@@ -539,7 +539,6 @@ void radeon_output_set(char *output, char *status)
             SET_REG(AVIVO_CRTC1_V_SYNC_POL, 0x00000000);
             SET_REG(AVIVO_CRTC1_FB_FORMAT, AVIVO_CRTC_FORMAT_ARGB32);
             SET_REG(AVIVO_CRTC1_MODE, 0x00000000);
-            SET_REG(AVIVO_CRTC1_STEREO_STATUS, 0x00000000);
             SET_REG(AVIVO_CRTC1_CNTL, 0x00010101);
             SET_REG(AVIVO_CRTC1_SCAN_ENABLE, AVIVO_CRTC_SCAN_EN);
         }
diff --git a/xorg/avivo_crtc.c b/xorg/avivo_crtc.c
index b3db4cb..7114f0d 100644
--- a/xorg/avivo_crtc.c
+++ b/xorg/avivo_crtc.c
@@ -255,7 +255,6 @@ avivo_crtc_mode_set(xf86CrtcPtr crtc,
     OUTREG(AVIVO_CRTC1_FB_END + avivo_crtc->crtc_offset,
            fb_location + avivo_crtc->fb_length);
     OUTREG(AVIVO_CRTC1_MODE + avivo_crtc->crtc_offset, 0);
-    OUTREG(AVIVO_CRTC1_STEREO_STATUS + avivo_crtc->crtc_offset, 0);
     /* avivo can only shift offset by 4 pixel in x if you program somethings
      * not multiple of 4 you gonna drive the GPU crazy and likely won't
      * be able to restore it without cold reboot (vbe post not enough)
diff --git a/xorg/avivo_state.c b/xorg/avivo_state.c
index f917456..f7d3864 100644
--- a/xorg/avivo_state.c
+++ b/xorg/avivo_state.c
@@ -115,7 +115,6 @@ avivo_restore_state(ScrnInfoPtr screen_info)
     OUTREG(AVIVO_CRTC1_V_SYNC_POL, state->crtc1_v_sync_pol);
     OUTREG(AVIVO_CRTC1_CNTL, state->crtc1_cntl);
     OUTREG(AVIVO_CRTC1_MODE, state->crtc1_mode);
-    OUTREG(AVIVO_CRTC1_STEREO_STATUS, state->crtc1_stereo_status);
     OUTREG(AVIVO_CRTC1_SCAN_ENABLE, state->crtc1_scan_enable);
     OUTREG(AVIVO_CRTC1_FB_FORMAT, state->crtc1_fb_format);
     OUTREG(AVIVO_CRTC1_FB_LOCATION, state->crtc1_fb_location);

commit 6e154d4c7d696511ffa711b9328c8fb395c48072
Author: Dafydd Harries <daf@rhydd.org>
Date:   Thu Sep 13 00:38:16 2007 +0100

    0x60c0 is stereoscopic display status

diff --git a/avivotool/avivotool.c b/avivotool/avivotool.c
index 7ca60dc..aed03a6 100644
--- a/avivotool/avivotool.c
+++ b/avivotool/avivotool.c
@@ -539,7 +539,7 @@ void radeon_output_set(char *output, char *status)
             SET_REG(AVIVO_CRTC1_V_SYNC_POL, 0x00000000);
             SET_REG(AVIVO_CRTC1_FB_FORMAT, AVIVO_CRTC_FORMAT_ARGB32);
             SET_REG(AVIVO_CRTC1_MODE, 0x00000000);
-            SET_REG(0x000060c0, 0x00000000);
+            SET_REG(AVIVO_CRTC1_STEREO_STATUS, 0x00000000);
             SET_REG(AVIVO_CRTC1_CNTL, 0x00010101);
             SET_REG(AVIVO_CRTC1_SCAN_ENABLE, AVIVO_CRTC_SCAN_EN);
         }
diff --git a/include/avivo.h b/include/avivo.h
index 92d2982..bfb0b6d 100644
--- a/include/avivo.h
+++ b/include/avivo.h
@@ -110,7 +110,7 @@ struct avivo_state
     int crtc1_v_sync_pol;
     int crtc1_cntl;
     int crtc1_mode;
-    int crtc1_60c0_mystery;
+    int crtc1_stereo_status;
     int crtc1_scan_enable;
     int crtc1_fb_format;
     int crtc1_fb_location;
diff --git a/include/radeon_reg.h b/include/radeon_reg.h
index e65ead2..874ffdc 100644
--- a/include/radeon_reg.h
+++ b/include/radeon_reg.h
@@ -3247,7 +3247,7 @@
 #	define AVIVO_CRTC_EN						(1 << 0)
 #define AVIVO_CRTC1_MODE					0x6084
 #       define AVIVO_CRTC_MODE_TEXT				(1 << 8)
-#define AVIVO_CRTC1_60c0_MYSTERY			0x60c0
+#define AVIVO_CRTC1_STEREO_STATUS			0x60c0
 
 /* These all appear to control the scanout from the framebuffer.
  * Flicking SCAN_ENABLE low results in a black screen -- aside from
diff --git a/xorg/avivo_crtc.c b/xorg/avivo_crtc.c
index db60b59..b3db4cb 100644
--- a/xorg/avivo_crtc.c
+++ b/xorg/avivo_crtc.c
@@ -255,7 +255,7 @@ avivo_crtc_mode_set(xf86CrtcPtr crtc,
     OUTREG(AVIVO_CRTC1_FB_END + avivo_crtc->crtc_offset,
            fb_location + avivo_crtc->fb_length);
     OUTREG(AVIVO_CRTC1_MODE + avivo_crtc->crtc_offset, 0);
-    OUTREG(AVIVO_CRTC1_60c0_MYSTERY + avivo_crtc->crtc_offset, 0);
+    OUTREG(AVIVO_CRTC1_STEREO_STATUS + avivo_crtc->crtc_offset, 0);
     /* avivo can only shift offset by 4 pixel in x if you program somethings
      * not multiple of 4 you gonna drive the GPU crazy and likely won't
      * be able to restore it without cold reboot (vbe post not enough)
diff --git a/xorg/avivo_state.c b/xorg/avivo_state.c
index ef0ba95..f917456 100644
--- a/xorg/avivo_state.c
+++ b/xorg/avivo_state.c
@@ -115,7 +115,7 @@ avivo_restore_state(ScrnInfoPtr screen_info)
     OUTREG(AVIVO_CRTC1_V_SYNC_POL, state->crtc1_v_sync_pol);
     OUTREG(AVIVO_CRTC1_CNTL, state->crtc1_cntl);
     OUTREG(AVIVO_CRTC1_MODE, state->crtc1_mode);
-    OUTREG(AVIVO_CRTC1_60c0_MYSTERY, state->crtc1_60c0_mystery);
+    OUTREG(AVIVO_CRTC1_STEREO_STATUS, state->crtc1_stereo_status);
     OUTREG(AVIVO_CRTC1_SCAN_ENABLE, state->crtc1_scan_enable);
     OUTREG(AVIVO_CRTC1_FB_FORMAT, state->crtc1_fb_format);
     OUTREG(AVIVO_CRTC1_FB_LOCATION, state->crtc1_fb_location);
@@ -233,7 +233,7 @@ avivo_save_state(ScrnInfoPtr screen_info)
     state->crtc1_v_sync_pol = INREG(AVIVO_CRTC1_V_SYNC_POL);
     state->crtc1_cntl = INREG(AVIVO_CRTC1_CNTL);
     state->crtc1_mode = INREG(AVIVO_CRTC1_MODE);
-    state->crtc1_60c0_mystery = INREG(AVIVO_CRTC1_60c0_MYSTERY);
+    state->crtc1_stereo_status = INREG(AVIVO_CRTC1_STEREO_STATUS);
     state->crtc1_scan_enable = INREG(AVIVO_CRTC1_SCAN_ENABLE);
     state->crtc1_fb_format = INREG(AVIVO_CRTC1_FB_FORMAT);
     state->crtc1_fb_location = INREG(AVIVO_CRTC1_FB_LOCATION);

commit efeee9d08152ddd1d4703f3b3fa3115ba6769bfb
Author: Dafydd Harries <daf@rhydd.org>
Date:   Wed Sep 12 23:55:02 2007 +0100

    don't turn on unnecessary flags when enabling CRTC

diff --git a/xorg/avivo_crtc.c b/xorg/avivo_crtc.c
index 0371987..db60b59 100644
--- a/xorg/avivo_crtc.c
+++ b/xorg/avivo_crtc.c
@@ -53,7 +53,7 @@ avivo_crtc_enable(xf86CrtcPtr crtc, int enable)
 
     if (enable) {
         scan_enable = AVIVO_CRTC_SCAN_EN;
-        cntl = 0x00010101;
+        cntl = AVIVO_CRTC_EN;
     } else {
         scan_enable = 0;
         cntl = 0;

commit 2788a6add29642b744764e7e3e28ad5b032f403c
Author: Dafydd Harries <daf@rhydd.org>
Date:   Wed Sep 12 22:57:12 2007 +0100

    remove redundant memset to 0 after calloc

diff --git a/xorg/avivo_common.c b/xorg/avivo_common.c
index ee7e484..acefc4f 100644
--- a/xorg/avivo_common.c
+++ b/xorg/avivo_common.c
@@ -84,7 +84,6 @@ avivo_get_info(ScrnInfoPtr screen_info)
 
     if (!screen_info->driverPrivate) {
         screen_info->driverPrivate = xcalloc(sizeof(struct avivo_info), 1);
-        memset(screen_info->driverPrivate, 0, sizeof(struct avivo_info));
     }
 
     avivo = screen_info->driverPrivate;

commit 97b73f041c501404325708b3223149fb1d7cd018
Author: Matthew Garrett <mjg59@srcf.ucam.org>
Date:   Thu Sep 13 01:37:19 2007 +0100

    Even less magic :(((

diff --git a/xorg/avivo_output.c b/xorg/avivo_output.c
index 1aae462..f613395 100644
--- a/xorg/avivo_output.c
+++ b/xorg/avivo_output.c
@@ -201,7 +201,7 @@ avivo_output_tmds1_dpms(xf86OutputPtr output, int mode)
     switch(mode) {
     case DPMSModeOn:



Reply to: