diff options
author | Michael Hennerich <michael.hennerich@analog.com> | 2007-05-21 06:09:17 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-05-21 12:50:22 -0400 |
commit | 23ee968d96ef5ad564c0f0b8a30412fb93137ebb (patch) | |
tree | a323c73062fa32a794e254a39c519650f0efe4b9 /include | |
parent | d1b945fdb62f3e6852fea5a8779c0151ac1e55a8 (diff) |
Blackfin arch: DMA operation cleanup
1) Disable Interrupts during DMA memcpy to avoid raise conditions.
2) Mark MDMA channel 0 as reserved, since were using it internally.
3) Add DMA based equivalents for insX and outsX.
4) Our insX and outsX only handles len <= 2^16.
Signed-off-by: Michael Hennerich <michael.hennerich@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-blackfin/io.h | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/include/asm-blackfin/io.h b/include/asm-blackfin/io.h index 7e6995e80d97..eac8bcaf64c2 100644 --- a/include/asm-blackfin/io.h +++ b/include/asm-blackfin/io.h | |||
@@ -115,13 +115,21 @@ static inline unsigned int readl(void __iomem *addr) | |||
115 | 115 | ||
116 | #ifndef __ASSEMBLY__ | 116 | #ifndef __ASSEMBLY__ |
117 | 117 | ||
118 | extern void outsb(void __iomem *port, const void *addr, unsigned long count); | 118 | extern void outsb(void __iomem *port, const void *addr, unsigned short count); |
119 | extern void outsw(void __iomem *port, const void *addr, unsigned long count); | 119 | extern void outsw(void __iomem *port, const void *addr, unsigned short count); |
120 | extern void outsl(void __iomem *port, const void *addr, unsigned long count); | 120 | extern void outsl(void __iomem *port, const void *addr, unsigned short count); |
121 | 121 | ||
122 | extern void insb(const void __iomem *port, void *addr, unsigned long count); | 122 | extern void insb(const void __iomem *port, void *addr, unsigned short count); |
123 | extern void insw(const void __iomem *port, void *addr, unsigned long count); | 123 | extern void insw(const void __iomem *port, void *addr, unsigned short count); |
124 | extern void insl(const void __iomem *port, void *addr, unsigned long count); | 124 | extern void insl(const void __iomem *port, void *addr, unsigned short count); |
125 | |||
126 | extern void dma_outsb(void __iomem *port, const void *addr, unsigned short count); | ||
127 | extern void dma_outsw(void __iomem *port, const void *addr, unsigned short count); | ||
128 | extern void dma_outsl(void __iomem *port, const void *addr, unsigned short count); | ||
129 | |||
130 | extern void dma_insb(const void __iomem *port, void *addr, unsigned short count); | ||
131 | extern void dma_insw(const void __iomem *port, void *addr, unsigned short count); | ||
132 | extern void dma_insl(const void __iomem *port, void *addr, unsigned short count); | ||
125 | 133 | ||
126 | /* | 134 | /* |
127 | * Map some physical address range into the kernel address space. | 135 | * Map some physical address range into the kernel address space. |