On Wed, 1 May 2002, Leif Delgass wrote: > Try the attached patch. It's merged with the current changes so it should > apply. I checked in some changes after Jose made his original patch.
Oops, I had an errant semicolon there. Try this one. Patch with: patch -p0 -i mach64-endian-mmio-3.diff -- Leif Delgass http://www.retinalburn.net
Index: mach64_drv.h =================================================================== RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Attic/mach64_drv.h,v retrieving revision 1.1.6.3.2.11 diff -u -r1.1.6.3.2.11 mach64_drv.h --- mach64_drv.h 1 May 2002 00:10:29 -0000 1.1.6.3.2.11 +++ mach64_drv.h 1 May 2002 18:22:34 -0000 @@ -359,9 +359,8 @@ #define MACH64_ADDR(reg) (MACH64_BASE(reg) + reg) -#define MACH64_DEREF(reg) *(volatile u32 *)MACH64_ADDR(reg) -#define MACH64_READ(reg) le32_to_cpu(MACH64_DEREF(reg)) -#define MACH64_WRITE(reg,val) do { MACH64_DEREF(reg) = cpu_to_le32(val); } while (0) +#define MACH64_READ(reg) readl(MACH64_ADDR(reg)) +#define MACH64_WRITE(reg,val) writel((val), MACH64_ADDR(reg)) #define DWMREG0 0x0400 Index: mach64_state.c =================================================================== RCS file: /cvsroot/dri/xc/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel/Attic/mach64_state.c,v retrieving revision 1.1.6.4.2.17 diff -u -r1.1.6.4.2.17 mach64_state.c --- mach64_state.c 1 May 2002 00:10:29 -0000 1.1.6.4.2.17 +++ mach64_state.c 1 May 2002 18:22:35 -0000 @@ -526,7 +526,8 @@ while ( used ) { u32 reg, count; - reg = le32_to_cpu(*p++); + reg = le32_to_cpu(*p); + p++; used--; count = (reg >> 16) + 1; @@ -543,7 +544,8 @@ --fifo; /* data is already little-endian */ - MACH64_DEREF(reg) = *p++; + MACH64_WRITE(reg, le32_to_cpu(*p)); + p++; used--; reg += 4;