diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-07-23 13:28:36 -0400 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-07-23 13:28:36 -0400 |
commit | 328e4c816348b6f867df30b39856dbe78c8e0dcc (patch) | |
tree | dcc0def6ce13174f0af563272ca28f3b9b1a4b66 /src/radeon_driver.c | |
parent | f96d5b255425fbd02be2cad26edb590d474a5640 (diff) |
RS780: fill in MC access functions
Also, r6xx/r7xx don't have indirect MC space, so
don't try to access it.
Diffstat (limited to 'src/radeon_driver.c')
-rw-r--r-- | src/radeon_driver.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/radeon_driver.c b/src/radeon_driver.c index 535b3166..37913051 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); |