summaryrefslogtreecommitdiffstats
path: root/arch/avr32/mach-at32ap/include
diff options
context:
space:
mode:
authorNicolas Ferre <nicolas.ferre@atmel.com>2009-12-14 18:01:30 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2009-12-15 08:53:35 -0800
commit2635d1ba711560d521f6218c585a3e0401f566e1 (patch)
tree11c8f09f15cd2f19bfd6f2d2d9b2cac67544179f /arch/avr32/mach-at32ap/include
parentbd68e0838fe85794b06892054772fa013a8d1986 (diff)
downloadlinux-2635d1ba711560d521f6218c585a3e0401f566e1.tar.gz
linux-2635d1ba711560d521f6218c585a3e0401f566e1.tar.xz
atmel-mci: change use of dma slave interface
Allow the use of another DMA controller driver in atmel-mci sd/mmc driver. This adds a generic dma_slave pointer to the mci platform structure where we can store DMA controller information. In atmel-mci we use information provided by this structure to initialize the driver (with new helper functions that are architecture dependant). This also adds at32/avr32 chip modifications to cope with this new access method. Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com> Cc: Haavard Skinnemoen <hskinnemoen@atmel.com> Cc: <linux-mmc@vger.kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/avr32/mach-at32ap/include')
-rw-r--r--arch/avr32/mach-at32ap/include/mach/atmel-mci.h24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/avr32/mach-at32ap/include/mach/atmel-mci.h b/arch/avr32/mach-at32ap/include/mach/atmel-mci.h
new file mode 100644
index 000000000000..a9b38967f703
--- /dev/null
+++ b/arch/avr32/mach-at32ap/include/mach/atmel-mci.h
@@ -0,0 +1,24 @@
+#ifndef __MACH_ATMEL_MCI_H
+#define __MACH_ATMEL_MCI_H
+
+#include <linux/dw_dmac.h>
+
+/**
+ * struct mci_dma_data - DMA data for MCI interface
+ */
+struct mci_dma_data {
+ struct dw_dma_slave sdata;
+};
+
+/* accessor macros */
+#define slave_data_ptr(s) (&(s)->sdata)
+#define find_slave_dev(s) ((s)->sdata.dma_dev)
+
+#define setup_dma_addr(s, t, r) do { \
+ if (s) { \
+ (s)->sdata.tx_reg = (t); \
+ (s)->sdata.rx_reg = (r); \
+ } \
+} while (0)
+
+#endif /* __MACH_ATMEL_MCI_H */