summaryrefslogtreecommitdiff
path: root/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c')
-rw-r--r--xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c52
1 files changed, 36 insertions, 16 deletions
diff --git a/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c b/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c
index 62b883a16..73a8b4604 100644
--- a/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c
+++ b/xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_io.c
@@ -39,27 +39,35 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "tdfx.h"
-#define minb(p) MMIO_IN8(pTDFX->MMIOBase, (p))
-#define moutb(p,v) MMIO_OUT8(pTDFX->MMIOBase, (p),(v))
-#define minl(p) MMIO_IN32(pTDFX->MMIOBase, (p))
-#define moutl(p,v) MMIO_OUT32(pTDFX->MMIOBase, (p),(v))
+#define minb(b, p) MMIO_IN8((b), (p))
+#define moutb(b, p,v) MMIO_OUT8((b), (p),(v))
+#define minl(b, p) MMIO_IN32((b), (p))
+#define moutl(b, p,v) MMIO_OUT32((b), (p),(v))
static void TDFXWriteControlPIO(TDFXPtr pTDFX, int addr, char index, char val) {
- outb(pTDFX->PIOBase+addr, index);
- outb(pTDFX->PIOBase+addr+1, val);
+ outb(pTDFX->PIOBase[0]+addr, index);
+ outb(pTDFX->PIOBase[0]+addr+1, val);
}
static char TDFXReadControlPIO(TDFXPtr pTDFX, int addr, char index) {
- outb(pTDFX->PIOBase+addr, index);
- return inb(pTDFX->PIOBase+addr+1);
+ outb(pTDFX->PIOBase[0]+addr, index);
+ return inb(pTDFX->PIOBase[0]+addr+1);
+}
+
+void TDFXWriteChipLongPIO(TDFXPtr pTDFX, int chip, int addr, int val) {
+ outl(pTDFX->PIOBase[chip]+addr, val);
+}
+
+int TDFXReadChipLongPIO(TDFXPtr pTDFX, int chip, int addr) {
+ return inl(pTDFX->PIOBase[chip]+addr);
}
static void TDFXWriteLongPIO(TDFXPtr pTDFX, int addr, int val) {
- outl(pTDFX->PIOBase+addr, val);
+ TDFXWriteChipLongPIO(pTDFX, 0, addr, val);
}
static int TDFXReadLongPIO(TDFXPtr pTDFX, int addr) {
- return inl(pTDFX->PIOBase+addr);
+ return TDFXReadChipLongPIO(pTDFX, 0, addr);
}
void TDFXSetPIOAccess(TDFXPtr pTDFX) {
@@ -69,24 +77,34 @@ void TDFXSetPIOAccess(TDFXPtr pTDFX) {
pTDFX->readControl=TDFXReadControlPIO;
pTDFX->writeLong=TDFXWriteLongPIO;
pTDFX->readLong=TDFXReadLongPIO;
+ pTDFX->readChipLong=TDFXReadChipLongPIO;
+ pTDFX->writeChipLong=TDFXWriteChipLongPIO;
}
static void TDFXWriteControlMMIO(TDFXPtr pTDFX, int addr, char index, char val) {
- moutb(addr, index);
- moutb(addr+1, val);
+ moutb(pTDFX->MMIOBase[0], addr, index);
+ moutb(pTDFX->MMIOBase[0], addr+1, val);
}
static char TDFXReadControlMMIO(TDFXPtr pTDFX, int addr, char index) {
- moutb(addr, index);
- return minb(addr+1);
+ moutb(pTDFX->MMIOBase[0], addr, index);
+ return minb(pTDFX->MMIOBase[0], addr+1);
+}
+
+void TDFXWriteChipLongMMIO(TDFXPtr pTDFX, int chip, int addr, int val) {
+ moutl(pTDFX->MMIOBase[chip], addr, val);
+}
+
+static int TDFXReadChipLongMMIO(TDFXPtr pTDFX, int chip, int addr) {
+ return minl(pTDFX->MMIOBase[chip], addr);
}
void TDFXWriteLongMMIO(TDFXPtr pTDFX, int addr, int val) {
- moutl(addr, val);
+ TDFXWriteChipLongMMIO(pTDFX, 0, addr, val);
}
int TDFXReadLongMMIO(TDFXPtr pTDFX, int addr) {
- return minl(addr);
+ return TDFXReadChipLongMMIO(pTDFX, 0, addr);
}
void TDFXSetMMIOAccess(TDFXPtr pTDFX) {
@@ -96,5 +114,7 @@ void TDFXSetMMIOAccess(TDFXPtr pTDFX) {
pTDFX->readControl=TDFXReadControlMMIO;
pTDFX->writeLong=TDFXWriteLongMMIO;
pTDFX->readLong=TDFXReadLongMMIO;
+ pTDFX->writeChipLong=TDFXWriteChipLongMMIO;
+ pTDFX->readChipLong=TDFXReadChipLongMMIO;
}