xf86-video-ati: Branch 'master'

Alex Deucher agd5f at kemper.freedesktop.org
Thu Jul 23 10:29:41 PDT 2009


 src/radeon_driver.c |   13 +++++++++++++
 src/radeon_reg.h    |    5 +++++
 2 files changed, 18 insertions(+)

New commits:
commit 328e4c816348b6f867df30b39856dbe78c8e0dcc
Author: Alex Deucher <alexdeucher at gmail.com>
Date:   Thu Jul 23 13:28:36 2009 -0400

    RS780: fill in MC access functions
    
    Also, r6xx/r7xx don't have indirect MC space, so
    don't try to access it.

diff --git a/src/radeon_driver.c b/src/radeon_driver.c
index 535b316..3791305 100644
--- a/src/radeon_driver.c
+++ b/src/radeon_driver.c
@@ -621,6 +621,12 @@ unsigned RADEONINMC(ScrnInfoPtr pScrn, int addr)
     } else if (info->ChipFamily == CHIP_FAMILY_RS600) {
 	OUTREG(RS600_MC_INDEX, ((addr & RS600_MC_ADDR_MASK) | RS600_MC_IND_CITF_ARB0));
 	data = INREG(RS600_MC_DATA);
+    } else if ((info->ChipFamily == CHIP_FAMILY_RS780) ||
+	       (info->ChipFamily == CHIP_FAMILY_RS880)) {
+	OUTREG(RS780_MC_INDEX, (addr & RS780_MC_INDEX_MASK));
+	data = INREG(RS780_MC_DATA);
+    } else if (info->ChipFamily >= CHIP_FAMILY_R600) {
+	data = 0;
     } else if (IS_AVIVO_VARIANT) {
 	OUTREG(AVIVO_MC_INDEX, (addr & 0xff) | 0x7f0000);
 	(void)INREG(AVIVO_MC_INDEX);
@@ -657,6 +663,13 @@ void RADEONOUTMC(ScrnInfoPtr pScrn, int addr, uint32_t data)
 				RS600_MC_IND_CITF_ARB0 |
 				RS600_MC_IND_WR_EN));
 	OUTREG(RS600_MC_DATA, data);
+    } else if ((info->ChipFamily == CHIP_FAMILY_RS780) ||
+	       (info->ChipFamily == CHIP_FAMILY_RS880)) {
+	OUTREG(RS780_MC_INDEX, ((addr & RS780_MC_INDEX_MASK) |
+				      RS780_MC_INDEX_WR_EN));
+	OUTREG(RS780_MC_DATA, data);
+    } else if (info->ChipFamily >= CHIP_FAMILY_R600) {
+	// do nothing
     } else if (IS_AVIVO_VARIANT) {
 	OUTREG(AVIVO_MC_INDEX, (addr & 0xff) | 0xff0000);
 	(void)INREG(AVIVO_MC_INDEX);
diff --git a/src/radeon_reg.h b/src/radeon_reg.h
index 1db7c67..9df7fff 100644
--- a/src/radeon_reg.h
+++ b/src/radeon_reg.h
@@ -3549,6 +3549,11 @@
 #	define R520_MEM_NUM_CHANNELS_SHIFT  24
 #	define R520_MC_CHANNEL_SIZE  (1 << 23)
 
+#define RS780_MC_INDEX				0x28f8
+#	define RS780_MC_INDEX_MASK		0x1ff
+#	define RS780_MC_INDEX_WR_EN		(1 << 9)
+#define RS780_MC_DATA				0x28fc
+
 #define R600_RAMCFG				       0x2408
 #       define R600_CHANSIZE                           (1 << 7)
 #       define R600_CHANSIZE_OVERRIDE                  (1 << 10)


More information about the xorg-commit mailing list