Hello all I was wondering if anyone was successfully runing this chipset yet? It's a bit disheartening to try testing it, as it locks up my computer every time. The only time it worked for me , (perhaps by fluke) was with a refactor patch which never made it into the tree. Gary
From 4e105ed91383110d5b6b1d186791b0e7759fa15d Mon Sep 17 00:00:00 2001 From: Matthias Hopf
Date: Mon, 11 May 2009 18:00:16 +0200 Subject: [PATCH] Refactor MC setup to use memory mapped registers.
Previously PCI space was used, which seems to fail on some RS740. Thanks to Roman Stanchak for finding that. --- src/rhd_driver.c | 42 ++++++++---------------------------------- 1 files changed, 8 insertions(+), 34 deletions(-) diff --git a/src/rhd_driver.c b/src/rhd_driver.c index 612fe4e..a52fc9a 100644 --- a/src/rhd_driver.c +++ b/src/rhd_driver.c @@ -2545,23 +2545,11 @@ _RHDReadMC(int scrnIndex, CARD32 addr) RHDRegWrite(rhdPtr, RS60_MC_NB_MC_INDEX, addr); ret = RHDRegRead(rhdPtr, RS60_MC_NB_MC_DATA); } else if (rhdPtr->ChipSet == RHD_RS690 || rhdPtr->ChipSet == RHD_RS740) { -#ifdef XSERVER_LIBPCIACCESS - CARD32 data = addr & ~RS69_MC_IND_WR_EN; - pci_device_cfg_write(rhdPtr->NBPciInfo, &(data), RS69_MC_INDEX, 4, NULL); - pci_device_cfg_read(rhdPtr->NBPciInfo, &ret, RS69_MC_DATA, 4, NULL); -#else - pciWriteLong(rhdPtr->NBPciTag, RS69_MC_INDEX, addr & ~RS69_MC_IND_WR_EN); - ret = pciReadLong(rhdPtr->NBPciTag, RS69_MC_DATA); -#endif + RHDRegWrite(rhdPtr, RS69_MC_INDEX, addr & ~RS69_MC_IND_WR_EN); + ret = RHDRegRead(rhdPtr, RS69_MC_DATA); } else { -#ifdef XSERVER_LIBPCIACCESS - CARD32 data = addr & ~RS78_MC_IND_WR_EN; - pci_device_cfg_write(rhdPtr->NBPciInfo, &(data), RS78_NB_MC_IND_INDEX, 4, NULL); - pci_device_cfg_read(rhdPtr->NBPciInfo, &ret, RS78_NB_MC_IND_DATA, 4, NULL); -#else - pciWriteLong(rhdPtr->NBPciTag, RS78_NB_MC_IND_INDEX, (addr & ~RS78_MC_IND_WR_EN)); - ret = pciReadLong(rhdPtr->NBPciTag, RS78_NB_MC_IND_DATA); -#endif + RHDRegWrite(rhdPtr, RS78_NB_MC_IND_INDEX, addr & ~RS78_MC_IND_WR_EN); + ret = RHDRegRead(rhdPtr, RS78_NB_MC_IND_DATA); } #ifdef RHD_DEBUG RHDDebug(scrnIndex,"%s(0x%08X) = 0x%08X\n",__func__,(unsigned int)addr, @@ -2587,25 +2575,11 @@ _RHDWriteMC(int scrnIndex, CARD32 addr, CARD32 data) RHDRegWrite(rhdPtr, RS60_MC_NB_MC_INDEX, addr | RS60_NB_MC_IND_WR_EN); RHDRegWrite(rhdPtr, RS60_MC_NB_MC_DATA, data); } else if (rhdPtr->ChipSet == RHD_RS690 || rhdPtr->ChipSet == RHD_RS740) { -#ifdef XSERVER_LIBPCIACCESS - CARD32 tmp = addr | RS69_MC_IND_WR_EN; - pci_device_cfg_write(rhdPtr->NBPciInfo, &tmp, RS69_MC_INDEX, 4, NULL); - pci_device_cfg_write(rhdPtr->NBPciInfo, &data, RS69_MC_DATA, 4, NULL); -#else - pciWriteLong(rhdPtr->NBPciTag, RS69_MC_INDEX, addr | RS69_MC_IND_WR_EN); - pciWriteLong(rhdPtr->NBPciTag, RS69_MC_DATA, data); -#endif - + RHDRegWrite(rhdPtr, RS69_MC_INDEX, addr | RS69_MC_IND_WR_EN); + RHDRegWrite(rhdPtr, RS69_MC_DATA, data); } else { -#ifdef XSERVER_LIBPCIACCESS - CARD32 tmp = addr | RS78_MC_IND_WR_EN; - pci_device_cfg_write(rhdPtr->NBPciInfo, &tmp, RS78_NB_MC_IND_INDEX, 4, NULL); - pci_device_cfg_write(rhdPtr->NBPciInfo, &data, RS78_NB_MC_IND_DATA, 4, NULL); -#else - pciWriteLong(rhdPtr->NBPciTag, RS78_NB_MC_IND_INDEX, addr | RS78_MC_IND_WR_EN); - pciWriteLong(rhdPtr->NBPciTag, RS78_NB_MC_IND_DATA, data); -#endif - + RHDRegWrite(rhdPtr, RS78_NB_MC_IND_INDEX, addr | RS78_MC_IND_WR_EN); + RHDRegWrite(rhdPtr, RS78_NB_MC_IND_DATA, data); } } -- 1.6.0.2