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>
This commit is contained in:
Michael Hennerich
2007-05-21 18:09:17 +08:00
committed by Linus Torvalds
parent d1b945fdb6
commit 23ee968d96
2 changed files with 214 additions and 10 deletions
+14 -6
View File
@@ -115,13 +115,21 @@ static inline unsigned int readl(void __iomem *addr)
#ifndef __ASSEMBLY__
extern void outsb(void __iomem *port, const void *addr, unsigned long count);
extern void outsw(void __iomem *port, const void *addr, unsigned long count);
extern void outsl(void __iomem *port, const void *addr, unsigned long count);
extern void outsb(void __iomem *port, const void *addr, unsigned short count);
extern void outsw(void __iomem *port, const void *addr, unsigned short count);
extern void outsl(void __iomem *port, const void *addr, unsigned short count);
extern void insb(const void __iomem *port, void *addr, unsigned long count);
extern void insw(const void __iomem *port, void *addr, unsigned long count);
extern void insl(const void __iomem *port, void *addr, unsigned long count);
extern void insb(const void __iomem *port, void *addr, unsigned short count);
extern void insw(const void __iomem *port, void *addr, unsigned short count);
extern void insl(const void __iomem *port, void *addr, unsigned short count);
extern void dma_outsb(void __iomem *port, const void *addr, unsigned short count);
extern void dma_outsw(void __iomem *port, const void *addr, unsigned short count);
extern void dma_outsl(void __iomem *port, const void *addr, unsigned short count);
extern void dma_insb(const void __iomem *port, void *addr, unsigned short count);
extern void dma_insw(const void __iomem *port, void *addr, unsigned short count);
extern void dma_insl(const void __iomem *port, void *addr, unsigned short count);
/*
* Map some physical address range into the kernel address space.