diff options
author | Nicolas Ferre <nicolas.ferre@atmel.com> | 2009-12-14 18:01:30 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-12-15 08:53:35 -0800 |
commit | 2635d1ba711560d521f6218c585a3e0401f566e1 (patch) | |
tree | 11c8f09f15cd2f19bfd6f2d2d9b2cac67544179f /arch/arm/mach-at91/include/mach/atmel-mci.h | |
parent | bd68e0838fe85794b06892054772fa013a8d1986 (diff) | |
download | op-kernel-dev-2635d1ba711560d521f6218c585a3e0401f566e1.zip op-kernel-dev-2635d1ba711560d521f6218c585a3e0401f566e1.tar.gz |
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/arm/mach-at91/include/mach/atmel-mci.h')
-rw-r--r-- | arch/arm/mach-at91/include/mach/atmel-mci.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/include/mach/atmel-mci.h b/arch/arm/mach-at91/include/mach/atmel-mci.h new file mode 100644 index 0000000..998cb0c --- /dev/null +++ b/arch/arm/mach-at91/include/mach/atmel-mci.h @@ -0,0 +1,24 @@ +#ifndef __MACH_ATMEL_MCI_H +#define __MACH_ATMEL_MCI_H + +#include <mach/at_hdmac.h> + +/** + * struct mci_dma_data - DMA data for MCI interface + */ +struct mci_dma_data { + struct at_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 */ |