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: