typedef unsigned int dmach_t;
 
 #include <linux/spinlock.h>
+#include <asm/memory.h>
 #include <asm/system.h>
 #include <asm/scatterlist.h>
 #include <mach/dma.h>
 
  * is licensed "as is" without any warranty of any kind, whether express
  * or implied.
  */
-#ifndef __ASM_ARCH_DMA_H
-#define __ASM_ARCH_DMA_H
-
-#define MAX_DMA_ADDRESS                        0xffffffff
-
-#endif /* __ASM_ARCH_DMA_H */
 
 #ifndef __ASM_ARCH_DMA_H
 #define __ASM_ARCH_DMA_H
 
-/*
- * This is the maximum DMA address that can be DMAd to.
- * There should not be more than (0xd0000000 - 0xc0000000)
- * bytes of RAM.
- */
-#define MAX_DMA_ADDRESS                0xd0000000
-
 #if defined (CONFIG_CPU_H7201)
 #define MAX_DMA_CHANNELS       3
 #elif defined (CONFIG_CPU_H7202)
 
 #define __ASM_ARCH_MEMORY_H
 
 #define PHYS_OFFSET    UL(0x40000000)
+/*
+ * This is the maximum DMA address that can be DMAd to.
+ * There should not be more than (0xd0000000 - 0xc0000000)
+ * bytes of RAM.
+ *
+ * If you set this, you must also set ISA_DMA_THRESHOLD and setup a DMA
+ * zone if this does not cover all possible RAM.
+ */
+#define MAX_DMA_ADDRESS                0xd0000000
 
 #endif
 
  * published by the Free Software Foundation.
  *
  */
-#ifndef __ASM_ARCH_DMA_H
-#define __ASM_ARCH_DMA_H
-
-#include <asm/memory.h>
-#include <asm/sizes.h>
-
-#define MAX_DMA_ADDRESS                (PAGE_OFFSET + SZ_64M)
-
-#endif /* _ASM_ARCH_DMA_H */
 
        ixp4xx_adjust_zones(node, size, holes)
 
 #define ISA_DMA_THRESHOLD (SZ_64M - 1)
+#define MAX_DMA_ADDRESS                (PAGE_OFFSET + SZ_64M)
 
 #endif
 
 
 
 /* DMA is not yet implemented! It should be the same as acorn, copy over.. */
 
-/*
- * This is the maximum DMA address that can be DMAd to.
- * There should not be more than (0xd0000000 - 0xc0000000)
- * bytes of RAM.
- */
-#define MAX_DMA_ADDRESS         0xd0000000
-
 #define DMA_S0                  0
 
 #endif /* _ASM_ARCH_DMA_H */
 
  */
 
 #define MAX_DMA_CHANNELS 0
-#define MAX_DMA_ADDRESS ~0
 
 
 #include "platform.h"
 
-#define MAX_DMA_ADDRESS                0xffffffff
-
 #define MAX_DMA_CHANNELS       8
 
 #define DMAC_BASE              IO_ADDRESS(PNX4008_DMA_CONFIG_BASE)
 
 #ifndef __ASM_ARCH_DMA_H
 #define __ASM_ARCH_DMA_H
 
-/*
- * This is the maximum DMA address that can be DMAd to.
- * There should not be more than (0xd0000000 - 0xc0000000)
- * bytes of RAM.
- */
-#define MAX_DMA_ADDRESS                0xd0000000
 #define MAX_DMA_CHANNELS       8
 
 #define DMA_0                  0
 
 #include <linux/sysdev.h>
 #include <mach/hardware.h>
 
-/*
- * This is the maximum DMA address(physical address) that can be DMAd to.
- *
- */
-#define MAX_DMA_ADDRESS                0x40000000
 #define MAX_DMA_TRANSFER_SIZE   0x100000 /* Data Unit is half word  */
 
 /* We use `virtual` dma channels to hide the fact we have only a limited
 
 
 #define PHYS_OFFSET    UL(0x30000000)
 
+/*
+ * This is the maximum DMA address(physical address) that can be DMAd to.
+ *  Err, no, this is a virtual address.  And you must set ISA_DMA_THRESHOLD
+ *  and setup a DMA zone if this restricts the amount of RAM which is
+ *  capable of DMA.
+ */
+#define MAX_DMA_ADDRESS                0x40000000
+
 #endif
 
  * The rest is not DMAable. See dev /  .properties
  * in OpenFirmware.
  */
-#define MAX_DMA_ADDRESS                0xC0400000
 #define MAX_DMA_CHANNELS       8
 #define DMA_ISA_CASCADE         4
 
 
        __arch_adjust_zones(node, size, holes)
 
 #define ISA_DMA_THRESHOLD      (PHYS_OFFSET + SZ_4M - 1)
+#define MAX_DMA_ADDRESS                0xC0400000
 
 #endif