summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Bennett <sb476@cam.ac.uk>2008-08-25 20:23:05 +0100
committerStuart Bennett <sb476@cam.ac.uk>2008-08-26 02:54:13 +0100
commit1e2b87c459a3a0eacd630f1de8b567c36cc792bd (patch)
tree1f52cb60953f92eac6b8ee1b70376a7392776950
parentf89af0e6bc5ac88d0755f9402b772ca823518298 (diff)
randr12: make the nouveau experience less green
-rw-r--r--src/nv_crtc.c6
-rw-r--r--src/nv_type.h1
-rw-r--r--src/nvreg.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/src/nv_crtc.c b/src/nv_crtc.c
index 0f4bfc4..c897592 100644
--- a/src/nv_crtc.c
+++ b/src/nv_crtc.c
@@ -768,6 +768,8 @@ nv_crtc_mode_set_regs(xf86CrtcPtr crtc, DisplayModePtr mode)
/* PIPE_LONG mode, something to do with the size of the cursor? */
regp->general |= 1 << 29;
+ regp->unk_630 = 0; /* turn off green mode (tv test pattern?) */
+
/* Some values the blob sets */
regp->unk_a20 = 0x0;
regp->unk_a24 = 0xfffff;
@@ -1607,6 +1609,8 @@ static void nv_crtc_save_state_ramdac(xf86CrtcPtr crtc, RIVA_HW_STATE *state)
regp->general = NVCrtcReadRAMDAC(crtc, NV_RAMDAC_GENERAL_CONTROL);
if (pNv->twoHeads) {
+ if (pNv->NVArch >= 0x17)
+ regp->unk_630 = NVCrtcReadRAMDAC(crtc, NV_RAMDAC_630);
regp->fp_control = NVCrtcReadRAMDAC(crtc, NV_RAMDAC_FP_CONTROL);
regp->debug_0 = NVCrtcReadRAMDAC(crtc, NV_RAMDAC_FP_DEBUG_0);
regp->debug_1 = NVCrtcReadRAMDAC(crtc, NV_RAMDAC_FP_DEBUG_1);
@@ -1655,6 +1659,8 @@ static void nv_crtc_load_state_ramdac(xf86CrtcPtr crtc, RIVA_HW_STATE *state)
NVCrtcWriteRAMDAC(crtc, NV_RAMDAC_GENERAL_CONTROL, regp->general);
if (pNv->twoHeads) {
+ if (pNv->NVArch >= 0x17)
+ NVCrtcWriteRAMDAC(crtc, NV_RAMDAC_630, regp->unk_630);
NVCrtcWriteRAMDAC(crtc, NV_RAMDAC_FP_CONTROL, regp->fp_control);
NVCrtcWriteRAMDAC(crtc, NV_RAMDAC_FP_DEBUG_0, regp->debug_0);
NVCrtcWriteRAMDAC(crtc, NV_RAMDAC_FP_DEBUG_1, regp->debug_1);
diff --git a/src/nv_type.h b/src/nv_type.h
index d1f2466..ab3890d 100644
--- a/src/nv_type.h
+++ b/src/nv_type.h
@@ -156,6 +156,7 @@ typedef struct _nv_crtc_reg
/* These are former output regs, but are believed to be crtc related */
uint32_t general;
+ uint32_t unk_630;
uint32_t debug_0;
uint32_t debug_1;
uint32_t debug_2;
diff --git a/src/nvreg.h b/src/nvreg.h
index 4abb1ea..f1c90c6 100644
--- a/src/nvreg.h
+++ b/src/nvreg.h
@@ -292,6 +292,7 @@
#define NV_RAMDAC_GENERAL_CONTROL 0x00680600
#define NV_RAMDAC_TEST_CONTROL 0x00680608
#define NV_RAMDAC_TEST_DATA 0x00680610
+#define NV_RAMDAC_630 0x00680630
/* This register is similar to TEST_CONTROL in the style of values */
#define NV_RAMDAC_670 0x00680670