diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-01-07 02:33:00 +0000 |
---|---|---|
committer | <ralf@linux-mips.org> | 1997-01-07 02:33:00 +0000 |
commit | beb116954b9b7f3bb56412b2494b562f02b864b1 (patch) | |
tree | 120e997879884e1b9d93b265221b939d2ef1ade1 /include/asm-alpha/dma.h | |
parent | 908d4681a1dc3792ecafbe64265783a86c4cccb6 (diff) |
Import of Linux/MIPS 2.1.14
Diffstat (limited to 'include/asm-alpha/dma.h')
-rw-r--r-- | include/asm-alpha/dma.h | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/include/asm-alpha/dma.h b/include/asm-alpha/dma.h index 4b327266d..b5c3c1c7c 100644 --- a/include/asm-alpha/dma.h +++ b/include/asm-alpha/dma.h @@ -18,6 +18,8 @@ #ifndef _ASM_DMA_H #define _ASM_DMA_H +#include <linux/config.h> + #include <asm/io.h> /* need byte IO */ #define dma_outb outb @@ -73,8 +75,23 @@ #define MAX_DMA_CHANNELS 8 -/* The maximum address that we can perform a DMA transfer to on this platform */ -#define MAX_DMA_ADDRESS 0x1000000 +#ifdef CONFIG_ALPHA_XL +/* The maximum address that we can perform a DMA transfer to on Alpha XL, + due to a hardware SIO (PCI<->ISA bus bridge) chip limitation, is 64MB. + See <asm/apecs.h> for more info. +*/ +/* NOTE: we must define the maximum as something less than 64Mb, to prevent + virt_to_bus() from returning an address in the first window, for a + data area that goes beyond the 64Mb first DMA window. Sigh... + We MUST coordinate the maximum with <asm/apecs.h> for consistency. + For now, this limit is set to 48Mb... +*/ +#define MAX_DMA_ADDRESS (0xfffffc0003000000UL) +#else /* CONFIG_ALPHA_XL */ +/* The maximum address that we can perform a DMA transfer to on normal + Alpha platforms */ +#define MAX_DMA_ADDRESS (~0UL) +#endif /* CONFIG_ALPHA_XL */ /* 8237 DMA controllers */ #define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */ @@ -294,8 +311,7 @@ static __inline__ int get_dma_residue(unsigned int dmanr) /* These are in kernel/dma.c: */ -extern int request_dma(unsigned int dmanr, char * device_id); /* reserve a DMA channel */ +extern int request_dma(unsigned int dmanr, const char * device_id); /* reserve a DMA channel */ extern void free_dma(unsigned int dmanr); /* release it again */ - #endif /* _ASM_DMA_H */ |