Merge tag 'coh901318-for-arm-soc' of http://git.kernel.org/pub/scm/linux/kernel/git...
authorOlof Johansson <olof@lixom.net>
Mon, 28 Jan 2013 21:37:09 +0000 (13:37 -0800)
committerOlof Johansson <olof@lixom.net>
Mon, 28 Jan 2013 21:37:09 +0000 (13:37 -0800)
This pushes the platform data for the U300 COH901318
DMA controller down into the driver and cleans up in
the <mach/*> namespace for the U300 platform.

* tag 'coh901318-for-arm-soc' of http://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson:
  dma: coh901318: cut down on platform data abstraction
  dma: coh901318: merge header files
  dma: coh901318: push definitions into driver
  dma: coh901318: push header down into the DMA subsystem
  dma: coh901318: skip hard-coded addresses
  dma: coh901318: remove hardcoded target addresses
  dma: coh901318: push platform data into driver
  dma: coh901318: create a proper platform data file

Signed-off-by: Olof Johansson <olof@lixom.net>
Conflicts:
arch/arm/mach-u300/core.c

arch/arm/mach-u300/core.c
arch/arm/mach-u300/dma_channels.h [deleted file]
arch/arm/mach-u300/include/mach/coh901318.h [deleted file]
arch/arm/mach-u300/spi.c
drivers/dma/coh901318.c
drivers/dma/coh901318.h [new file with mode: 0644]
drivers/dma/coh901318_lli.c
drivers/dma/coh901318_lli.h [deleted file]
include/linux/platform_data/dma-coh901318.h [new file with mode: 0644]

index 12060ae4e8f186f49467066fd6d8dc7de3092c49..a683d17b2ce43ad5380186eaaa214f862f6748b7 100644 (file)
@@ -31,6 +31,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/platform_data/clk-u300.h>
 #include <linux/platform_data/pinctrl-coh901.h>
+#include <linux/platform_data/dma-coh901318.h>
 #include <linux/irqchip/arm-vic.h>
 
 #include <asm/types.h>
@@ -40,7 +41,6 @@
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
 
-#include <mach/coh901318.h>
 #include <mach/hardware.h>
 #include <mach/syscon.h>
 #include <mach/irqs.h>
@@ -49,7 +49,6 @@
 #include "spi.h"
 #include "i2c.h"
 #include "u300-gpio.h"
-#include "dma_channels.h"
 
 /*
  * Static I/O mappings that are needed for booting the U300 platforms. The
@@ -327,1089 +326,6 @@ static struct resource dma_resource[] = {
        }
 };
 
-/* points out all dma slave channels.
- * Syntax is [A1, B1, A2, B2, .... ,-1,-1]
- * Select all channels from A to B, end of list is marked with -1,-1
- */
-static int dma_slave_channels[] = {
-       U300_DMA_MSL_TX_0, U300_DMA_SPI_RX,
-       U300_DMA_UART1_TX, U300_DMA_UART1_RX, -1, -1};
-
-/* points out all dma memcpy channels. */
-static int dma_memcpy_channels[] = {
-       U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_8, -1, -1};
-
-/** register dma for memory access
- *
- * active  1 means dma intends to access memory
- *         0 means dma wont access memory
- */
-static void coh901318_access_memory_state(struct device *dev, bool active)
-{
-}
-
-#define flags_memcpy_config (COH901318_CX_CFG_CH_DISABLE | \
-                       COH901318_CX_CFG_RM_MEMORY_TO_MEMORY | \
-                       COH901318_CX_CFG_LCR_DISABLE | \
-                       COH901318_CX_CFG_TC_IRQ_ENABLE | \
-                       COH901318_CX_CFG_BE_IRQ_ENABLE)
-#define flags_memcpy_lli_chained (COH901318_CX_CTRL_TC_ENABLE | \
-                       COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
-                       COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
-                       COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
-                       COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
-                       COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
-                       COH901318_CX_CTRL_MASTER_MODE_M1RW | \
-                       COH901318_CX_CTRL_TCP_DISABLE | \
-                       COH901318_CX_CTRL_TC_IRQ_DISABLE | \
-                       COH901318_CX_CTRL_HSP_DISABLE | \
-                       COH901318_CX_CTRL_HSS_DISABLE | \
-                       COH901318_CX_CTRL_DDMA_LEGACY | \
-                       COH901318_CX_CTRL_PRDD_SOURCE)
-#define flags_memcpy_lli (COH901318_CX_CTRL_TC_ENABLE | \
-                       COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
-                       COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
-                       COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
-                       COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
-                       COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
-                       COH901318_CX_CTRL_MASTER_MODE_M1RW | \
-                       COH901318_CX_CTRL_TCP_DISABLE | \
-                       COH901318_CX_CTRL_TC_IRQ_DISABLE | \
-                       COH901318_CX_CTRL_HSP_DISABLE | \
-                       COH901318_CX_CTRL_HSS_DISABLE | \
-                       COH901318_CX_CTRL_DDMA_LEGACY | \
-                       COH901318_CX_CTRL_PRDD_SOURCE)
-#define flags_memcpy_lli_last (COH901318_CX_CTRL_TC_ENABLE | \
-                       COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
-                       COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
-                       COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
-                       COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
-                       COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
-                       COH901318_CX_CTRL_MASTER_MODE_M1RW | \
-                       COH901318_CX_CTRL_TCP_DISABLE | \
-                       COH901318_CX_CTRL_TC_IRQ_ENABLE | \
-                       COH901318_CX_CTRL_HSP_DISABLE | \
-                       COH901318_CX_CTRL_HSS_DISABLE | \
-                       COH901318_CX_CTRL_DDMA_LEGACY | \
-                       COH901318_CX_CTRL_PRDD_SOURCE)
-
-const struct coh_dma_channel chan_config[U300_DMA_CHANNELS] = {
-       {
-               .number = U300_DMA_MSL_TX_0,
-               .name = "MSL TX 0",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 0 * 0x40 + 0x20,
-       },
-       {
-               .number = U300_DMA_MSL_TX_1,
-               .name = "MSL TX 1",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 1 * 0x40 + 0x20,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-       },
-       {
-               .number = U300_DMA_MSL_TX_2,
-               .name = "MSL TX 2",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 2 * 0x40 + 0x20,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .desc_nbr_max = 10,
-       },
-       {
-               .number = U300_DMA_MSL_TX_3,
-               .name = "MSL TX 3",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 3 * 0x40 + 0x20,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-       },
-       {
-               .number = U300_DMA_MSL_TX_4,
-               .name = "MSL TX 4",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 4 * 0x40 + 0x20,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-       },
-       {
-               .number = U300_DMA_MSL_TX_5,
-               .name = "MSL TX 5",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 5 * 0x40 + 0x20,
-       },
-       {
-               .number = U300_DMA_MSL_TX_6,
-               .name = "MSL TX 6",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 6 * 0x40 + 0x20,
-       },
-       {
-               .number = U300_DMA_MSL_RX_0,
-               .name = "MSL RX 0",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 0 * 0x40 + 0x220,
-       },
-       {
-               .number = U300_DMA_MSL_RX_1,
-               .name = "MSL RX 1",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 1 * 0x40 + 0x220,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_MSL_RX_2,
-               .name = "MSL RX 2",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 2 * 0x40 + 0x220,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_MSL_RX_3,
-               .name = "MSL RX 3",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 3 * 0x40 + 0x220,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_MSL_RX_4,
-               .name = "MSL RX 4",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 4 * 0x40 + 0x220,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_MSL_RX_5,
-               .name = "MSL RX 5",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 5 * 0x40 + 0x220,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_MSL_RX_6,
-               .name = "MSL RX 6",
-               .priority_high = 0,
-               .dev_addr = U300_MSL_BASE + 6 * 0x40 + 0x220,
-       },
-       /*
-        * Don't set up device address, burst count or size of src
-        * or dst bus for this peripheral - handled by PrimeCell
-        * DMA extension.
-        */
-       {
-               .number = U300_DMA_MMCSD_RX_TX,
-               .name = "MMCSD RX TX",
-               .priority_high = 0,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-
-       },
-       {
-               .number = U300_DMA_MSPRO_TX,
-               .name = "MSPRO TX",
-               .priority_high = 0,
-       },
-       {
-               .number = U300_DMA_MSPRO_RX,
-               .name = "MSPRO RX",
-               .priority_high = 0,
-       },
-       /*
-        * Don't set up device address, burst count or size of src
-        * or dst bus for this peripheral - handled by PrimeCell
-        * DMA extension.
-        */
-       {
-               .number = U300_DMA_UART0_TX,
-               .name = "UART0 TX",
-               .priority_high = 0,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-       },
-       {
-               .number = U300_DMA_UART0_RX,
-               .name = "UART0 RX",
-               .priority_high = 0,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-       },
-       {
-               .number = U300_DMA_APEX_TX,
-               .name = "APEX TX",
-               .priority_high = 0,
-       },
-       {
-               .number = U300_DMA_APEX_RX,
-               .name = "APEX RX",
-               .priority_high = 0,
-       },
-       {
-               .number = U300_DMA_PCM_I2S0_TX,
-               .name = "PCM I2S0 TX",
-               .priority_high = 1,
-               .dev_addr = U300_PCM_I2S0_BASE + 0x14,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-       },
-       {
-               .number = U300_DMA_PCM_I2S0_RX,
-               .name = "PCM I2S0 RX",
-               .priority_high = 1,
-               .dev_addr = U300_PCM_I2S0_BASE + 0x10,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_PCM_I2S1_TX,
-               .name = "PCM I2S1 TX",
-               .priority_high = 1,
-               .dev_addr =  U300_PCM_I2S1_BASE + 0x14,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_SOURCE,
-       },
-       {
-               .number = U300_DMA_PCM_I2S1_RX,
-               .name = "PCM I2S1 RX",
-               .priority_high = 1,
-               .dev_addr = U300_PCM_I2S1_BASE + 0x10,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_DEST,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
-                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
-                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
-                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_ENABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY |
-                               COH901318_CX_CTRL_PRDD_DEST,
-       },
-       {
-               .number = U300_DMA_XGAM_CDI,
-               .name = "XGAM CDI",
-               .priority_high = 0,
-       },
-       {
-               .number = U300_DMA_XGAM_PDI,
-               .name = "XGAM PDI",
-               .priority_high = 0,
-       },
-       /*
-        * Don't set up device address, burst count or size of src
-        * or dst bus for this peripheral - handled by PrimeCell
-        * DMA extension.
-        */
-       {
-               .number = U300_DMA_SPI_TX,
-               .name = "SPI TX",
-               .priority_high = 0,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-       },
-       {
-               .number = U300_DMA_SPI_RX,
-               .name = "SPI RX",
-               .priority_high = 0,
-               .param.config = COH901318_CX_CFG_CH_DISABLE |
-                               COH901318_CX_CFG_LCR_DISABLE |
-                               COH901318_CX_CFG_TC_IRQ_ENABLE |
-                               COH901318_CX_CFG_BE_IRQ_ENABLE,
-               .param.ctrl_lli_chained = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-               .param.ctrl_lli_last = 0 |
-                               COH901318_CX_CTRL_TC_ENABLE |
-                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
-                               COH901318_CX_CTRL_TCP_DISABLE |
-                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
-                               COH901318_CX_CTRL_HSP_ENABLE |
-                               COH901318_CX_CTRL_HSS_DISABLE |
-                               COH901318_CX_CTRL_DDMA_LEGACY,
-
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_0,
-               .name = "GENERAL 00",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_1,
-               .name = "GENERAL 01",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_2,
-               .name = "GENERAL 02",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_3,
-               .name = "GENERAL 03",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_4,
-               .name = "GENERAL 04",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_5,
-               .name = "GENERAL 05",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_6,
-               .name = "GENERAL 06",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_7,
-               .name = "GENERAL 07",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_GENERAL_PURPOSE_8,
-               .name = "GENERAL 08",
-               .priority_high = 0,
-
-               .param.config = flags_memcpy_config,
-               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
-               .param.ctrl_lli = flags_memcpy_lli,
-               .param.ctrl_lli_last = flags_memcpy_lli_last,
-       },
-       {
-               .number = U300_DMA_UART1_TX,
-               .name = "UART1 TX",
-               .priority_high = 0,
-       },
-       {
-               .number = U300_DMA_UART1_RX,
-               .name = "UART1 RX",
-               .priority_high = 0,
-       }
-};
-
-
-static struct coh901318_platform coh901318_platform = {
-       .chans_slave = dma_slave_channels,
-       .chans_memcpy = dma_memcpy_channels,
-       .access_memory_state = coh901318_access_memory_state,
-       .chan_conf = chan_config,
-       .max_channels = U300_DMA_CHANNELS,
-};
 
 static struct resource pinctrl_resources[] = {
        {
@@ -1521,7 +437,6 @@ static struct platform_device dma_device = {
        .resource       = dma_resource,
        .num_resources  = ARRAY_SIZE(dma_resource),
        .dev = {
-               .platform_data = &coh901318_platform,
                .coherent_dma_mask = ~0,
        },
 };
diff --git a/arch/arm/mach-u300/dma_channels.h b/arch/arm/mach-u300/dma_channels.h
deleted file mode 100644 (file)
index 4e8a88f..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *
- * arch/arm/mach-u300/include/mach/dma_channels.h
- *
- *
- * Copyright (C) 2007-2012 ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- * Map file for the U300 dma driver.
- * Author: Per Friden <per.friden@stericsson.com>
- */
-
-#ifndef DMA_CHANNELS_H
-#define DMA_CHANNELS_H
-
-#define U300_DMA_MSL_TX_0             0
-#define U300_DMA_MSL_TX_1             1
-#define U300_DMA_MSL_TX_2             2
-#define U300_DMA_MSL_TX_3             3
-#define U300_DMA_MSL_TX_4             4
-#define U300_DMA_MSL_TX_5             5
-#define U300_DMA_MSL_TX_6             6
-#define U300_DMA_MSL_RX_0             7
-#define U300_DMA_MSL_RX_1             8
-#define U300_DMA_MSL_RX_2             9
-#define U300_DMA_MSL_RX_3             10
-#define U300_DMA_MSL_RX_4             11
-#define U300_DMA_MSL_RX_5             12
-#define U300_DMA_MSL_RX_6             13
-#define U300_DMA_MMCSD_RX_TX          14
-#define U300_DMA_MSPRO_TX             15
-#define U300_DMA_MSPRO_RX             16
-#define U300_DMA_UART0_TX             17
-#define U300_DMA_UART0_RX             18
-#define U300_DMA_APEX_TX              19
-#define U300_DMA_APEX_RX              20
-#define U300_DMA_PCM_I2S0_TX          21
-#define U300_DMA_PCM_I2S0_RX          22
-#define U300_DMA_PCM_I2S1_TX          23
-#define U300_DMA_PCM_I2S1_RX          24
-#define U300_DMA_XGAM_CDI             25
-#define U300_DMA_XGAM_PDI             26
-#define U300_DMA_SPI_TX               27
-#define U300_DMA_SPI_RX               28
-#define U300_DMA_GENERAL_PURPOSE_0    29
-#define U300_DMA_GENERAL_PURPOSE_1    30
-#define U300_DMA_GENERAL_PURPOSE_2    31
-#define U300_DMA_GENERAL_PURPOSE_3    32
-#define U300_DMA_GENERAL_PURPOSE_4    33
-#define U300_DMA_GENERAL_PURPOSE_5    34
-#define U300_DMA_GENERAL_PURPOSE_6    35
-#define U300_DMA_GENERAL_PURPOSE_7    36
-#define U300_DMA_GENERAL_PURPOSE_8    37
-#define U300_DMA_UART1_TX             38
-#define U300_DMA_UART1_RX             39
-
-#define U300_DMA_DEVICE_CHANNELS      32
-#define U300_DMA_CHANNELS             40
-
-
-#endif /* DMA_CHANNELS_H */
diff --git a/arch/arm/mach-u300/include/mach/coh901318.h b/arch/arm/mach-u300/include/mach/coh901318.h
deleted file mode 100644 (file)
index 7c3b2b2..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-/*
- *
- * include/linux/coh901318.h
- *
- *
- * Copyright (C) 2007-2009 ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- * DMA driver for COH 901 318
- * Author: Per Friden <per.friden@stericsson.com>
- */
-
-#ifndef COH901318_H
-#define COH901318_H
-
-#include <linux/device.h>
-#include <linux/dmaengine.h>
-
-#define MAX_DMA_PACKET_SIZE_SHIFT 11
-#define MAX_DMA_PACKET_SIZE (1 << MAX_DMA_PACKET_SIZE_SHIFT)
-
-/**
- * struct coh901318_lli - linked list item for DMAC
- * @control: control settings for DMAC
- * @src_addr: transfer source address
- * @dst_addr: transfer destination address
- * @link_addr:  physical address to next lli
- * @virt_link_addr: virtual address of next lli (only used by pool_free)
- * @phy_this: physical address of current lli (only used by pool_free)
- */
-struct coh901318_lli {
-       u32 control;
-       dma_addr_t src_addr;
-       dma_addr_t dst_addr;
-       dma_addr_t link_addr;
-
-       void *virt_link_addr;
-       dma_addr_t phy_this;
-};
-/**
- * struct coh901318_params - parameters for DMAC configuration
- * @config: DMA config register
- * @ctrl_lli_last: DMA control register for the last lli in the list
- * @ctrl_lli: DMA control register for an lli
- * @ctrl_lli_chained: DMA control register for a chained lli
- */
-struct coh901318_params {
-       u32 config;
-       u32 ctrl_lli_last;
-       u32 ctrl_lli;
-       u32 ctrl_lli_chained;
-};
-/**
- * struct coh_dma_channel - dma channel base
- * @name: ascii name of dma channel
- * @number: channel id number
- * @desc_nbr_max: number of preallocated descriptors
- * @priority_high: prio of channel, 0 low otherwise high.
- * @param: configuration parameters
- * @dev_addr: physical address of periphal connected to channel
- */
-struct coh_dma_channel {
-       const char name[32];
-       const int number;
-       const int desc_nbr_max;
-       const int priority_high;
-       const struct coh901318_params param;
-       const dma_addr_t dev_addr;
-};
-
-/**
- * dma_access_memory_state_t - register dma for memory access
- *
- * @dev: The dma device
- * @active:  1 means dma intends to access memory
- *           0 means dma wont access memory
- */
-typedef void (*dma_access_memory_state_t)(struct device *dev,
-                                         bool active);
-
-/**
- * struct powersave - DMA power save structure
- * @lock: lock protecting data in this struct
- * @started_channels: bit mask indicating active dma channels
- */
-struct powersave {
-       spinlock_t lock;
-       u64 started_channels;
-};
-/**
- * struct coh901318_platform - platform arch structure
- * @chans_slave: specifying dma slave channels
- * @chans_memcpy: specifying dma memcpy channels
- * @access_memory_state: requesting DMA memory access (on / off)
- * @chan_conf: dma channel configurations
- * @max_channels: max number of dma chanenls
- */
-struct coh901318_platform {
-       const int *chans_slave;
-       const int *chans_memcpy;
-       const dma_access_memory_state_t access_memory_state;
-       const struct coh_dma_channel *chan_conf;
-       const int max_channels;
-};
-
-#ifdef CONFIG_COH901318
-/**
- * coh901318_filter_id() - DMA channel filter function
- * @chan: dma channel handle
- * @chan_id: id of dma channel to be filter out
- *
- * In dma_request_channel() it specifies what channel id to be requested
- */
-bool coh901318_filter_id(struct dma_chan *chan, void *chan_id);
-#else
-static inline bool coh901318_filter_id(struct dma_chan *chan, void *chan_id)
-{
-       return false;
-}
-#endif
-
-/*
- * DMA Controller - this access the static mappings of the coh901318 dma.
- *
- */
-
-#define COH901318_MOD32_MASK                                   (0x1F)
-#define COH901318_WORD_MASK                                    (0xFFFFFFFF)
-/* INT_STATUS - Interrupt Status Registers 32bit (R/-) */
-#define COH901318_INT_STATUS1                                  (0x0000)
-#define COH901318_INT_STATUS2                                  (0x0004)
-/* TC_INT_STATUS - Terminal Count Interrupt Status Registers 32bit (R/-) */
-#define COH901318_TC_INT_STATUS1                               (0x0008)
-#define COH901318_TC_INT_STATUS2                               (0x000C)
-/* TC_INT_CLEAR - Terminal Count Interrupt Clear Registers 32bit (-/W) */
-#define COH901318_TC_INT_CLEAR1                                        (0x0010)
-#define COH901318_TC_INT_CLEAR2                                        (0x0014)
-/* RAW_TC_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */
-#define COH901318_RAW_TC_INT_STATUS1                           (0x0018)
-#define COH901318_RAW_TC_INT_STATUS2                           (0x001C)
-/* BE_INT_STATUS - Bus Error Interrupt Status Registers 32bit (R/-) */
-#define COH901318_BE_INT_STATUS1                               (0x0020)
-#define COH901318_BE_INT_STATUS2                               (0x0024)
-/* BE_INT_CLEAR - Bus Error Interrupt Clear Registers 32bit (-/W) */
-#define COH901318_BE_INT_CLEAR1                                        (0x0028)
-#define COH901318_BE_INT_CLEAR2                                        (0x002C)
-/* RAW_BE_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */
-#define COH901318_RAW_BE_INT_STATUS1                           (0x0030)
-#define COH901318_RAW_BE_INT_STATUS2                           (0x0034)
-
-/*
- * CX_CFG - Channel Configuration Registers 32bit (R/W)
- */
-#define COH901318_CX_CFG                                       (0x0100)
-#define COH901318_CX_CFG_SPACING                               (0x04)
-/* Channel enable activates tha dma job */
-#define COH901318_CX_CFG_CH_ENABLE                             (0x00000001)
-#define COH901318_CX_CFG_CH_DISABLE                            (0x00000000)
-/* Request Mode */
-#define COH901318_CX_CFG_RM_MASK                               (0x00000006)
-#define COH901318_CX_CFG_RM_MEMORY_TO_MEMORY                   (0x0 << 1)
-#define COH901318_CX_CFG_RM_PRIMARY_TO_MEMORY                  (0x1 << 1)
-#define COH901318_CX_CFG_RM_MEMORY_TO_PRIMARY                  (0x1 << 1)
-#define COH901318_CX_CFG_RM_PRIMARY_TO_SECONDARY               (0x3 << 1)
-#define COH901318_CX_CFG_RM_SECONDARY_TO_PRIMARY               (0x3 << 1)
-/* Linked channel request field. RM must == 11 */
-#define COH901318_CX_CFG_LCRF_SHIFT                            3
-#define COH901318_CX_CFG_LCRF_MASK                             (0x000001F8)
-#define COH901318_CX_CFG_LCR_DISABLE                           (0x00000000)
-/* Terminal Counter Interrupt Request Mask */
-#define COH901318_CX_CFG_TC_IRQ_ENABLE                         (0x00000200)
-#define COH901318_CX_CFG_TC_IRQ_DISABLE                                (0x00000000)
-/* Bus Error interrupt Mask */
-#define COH901318_CX_CFG_BE_IRQ_ENABLE                         (0x00000400)
-#define COH901318_CX_CFG_BE_IRQ_DISABLE                                (0x00000000)
-
-/*
- * CX_STAT - Channel Status Registers 32bit (R/-)
- */
-#define COH901318_CX_STAT                                      (0x0200)
-#define COH901318_CX_STAT_SPACING                              (0x04)
-#define COH901318_CX_STAT_RBE_IRQ_IND                          (0x00000008)
-#define COH901318_CX_STAT_RTC_IRQ_IND                          (0x00000004)
-#define COH901318_CX_STAT_ACTIVE                               (0x00000002)
-#define COH901318_CX_STAT_ENABLED                              (0x00000001)
-
-/*
- * CX_CTRL - Channel Control Registers 32bit (R/W)
- */
-#define COH901318_CX_CTRL                                      (0x0400)
-#define COH901318_CX_CTRL_SPACING                              (0x10)
-/* Transfer Count Enable */
-#define COH901318_CX_CTRL_TC_ENABLE                            (0x00001000)
-#define COH901318_CX_CTRL_TC_DISABLE                           (0x00000000)
-/* Transfer Count Value 0 - 4095 */
-#define COH901318_CX_CTRL_TC_VALUE_MASK                                (0x00000FFF)
-/* Burst count */
-#define COH901318_CX_CTRL_BURST_COUNT_MASK                     (0x0000E000)
-#define COH901318_CX_CTRL_BURST_COUNT_64_BYTES                 (0x7 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_48_BYTES                 (0x6 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_32_BYTES                 (0x5 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_16_BYTES                 (0x4 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_8_BYTES                  (0x3 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_4_BYTES                  (0x2 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_2_BYTES                  (0x1 << 13)
-#define COH901318_CX_CTRL_BURST_COUNT_1_BYTE                   (0x0 << 13)
-/* Source bus size  */
-#define COH901318_CX_CTRL_SRC_BUS_SIZE_MASK                    (0x00030000)
-#define COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS                 (0x2 << 16)
-#define COH901318_CX_CTRL_SRC_BUS_SIZE_16_BITS                 (0x1 << 16)
-#define COH901318_CX_CTRL_SRC_BUS_SIZE_8_BITS                  (0x0 << 16)
-/* Source address increment */
-#define COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE                  (0x00040000)
-#define COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE                 (0x00000000)
-/* Destination Bus Size */
-#define COH901318_CX_CTRL_DST_BUS_SIZE_MASK                    (0x00180000)
-#define COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS                 (0x2 << 19)
-#define COH901318_CX_CTRL_DST_BUS_SIZE_16_BITS                 (0x1 << 19)
-#define COH901318_CX_CTRL_DST_BUS_SIZE_8_BITS                  (0x0 << 19)
-/* Destination address increment */
-#define COH901318_CX_CTRL_DST_ADDR_INC_ENABLE                  (0x00200000)
-#define COH901318_CX_CTRL_DST_ADDR_INC_DISABLE                 (0x00000000)
-/* Master Mode (Master2 is only connected to MSL) */
-#define COH901318_CX_CTRL_MASTER_MODE_MASK                     (0x00C00000)
-#define COH901318_CX_CTRL_MASTER_MODE_M2R_M1W                  (0x3 << 22)
-#define COH901318_CX_CTRL_MASTER_MODE_M1R_M2W                  (0x2 << 22)
-#define COH901318_CX_CTRL_MASTER_MODE_M2RW                     (0x1 << 22)
-#define COH901318_CX_CTRL_MASTER_MODE_M1RW                     (0x0 << 22)
-/* Terminal Count flag to PER enable */
-#define COH901318_CX_CTRL_TCP_ENABLE                           (0x01000000)
-#define COH901318_CX_CTRL_TCP_DISABLE                          (0x00000000)
-/* Terminal Count flags to CPU enable */
-#define COH901318_CX_CTRL_TC_IRQ_ENABLE                                (0x02000000)
-#define COH901318_CX_CTRL_TC_IRQ_DISABLE                       (0x00000000)
-/* Hand shake to peripheral */
-#define COH901318_CX_CTRL_HSP_ENABLE                           (0x04000000)
-#define COH901318_CX_CTRL_HSP_DISABLE                          (0x00000000)
-#define COH901318_CX_CTRL_HSS_ENABLE                           (0x08000000)
-#define COH901318_CX_CTRL_HSS_DISABLE                          (0x00000000)
-/* DMA mode */
-#define COH901318_CX_CTRL_DDMA_MASK                            (0x30000000)
-#define COH901318_CX_CTRL_DDMA_LEGACY                          (0x0 << 28)
-#define COH901318_CX_CTRL_DDMA_DEMAND_DMA1                     (0x1 << 28)
-#define COH901318_CX_CTRL_DDMA_DEMAND_DMA2                     (0x2 << 28)
-/* Primary Request Data Destination */
-#define COH901318_CX_CTRL_PRDD_MASK                            (0x40000000)
-#define COH901318_CX_CTRL_PRDD_DEST                            (0x1 << 30)
-#define COH901318_CX_CTRL_PRDD_SOURCE                          (0x0 << 30)
-
-/*
- * CX_SRC_ADDR - Channel Source Address Registers 32bit (R/W)
- */
-#define COH901318_CX_SRC_ADDR                                  (0x0404)
-#define COH901318_CX_SRC_ADDR_SPACING                          (0x10)
-
-/*
- * CX_DST_ADDR - Channel Destination Address Registers 32bit R/W
- */
-#define COH901318_CX_DST_ADDR                                  (0x0408)
-#define COH901318_CX_DST_ADDR_SPACING                          (0x10)
-
-/*
- * CX_LNK_ADDR - Channel Link Address Registers 32bit (R/W)
- */
-#define COH901318_CX_LNK_ADDR                                  (0x040C)
-#define COH901318_CX_LNK_ADDR_SPACING                          (0x10)
-#define COH901318_CX_LNK_LINK_IMMEDIATE                                (0x00000001)
-#endif /* COH901318_H */
index 02e6659286d5b0e4d2e2761954ebd81ce09aa766..910698293d64790416d6af1e7085539e5d7bc0d0 100644 (file)
@@ -10,9 +10,8 @@
 #include <linux/amba/bus.h>
 #include <linux/spi/spi.h>
 #include <linux/amba/pl022.h>
+#include <linux/platform_data/dma-coh901318.h>
 #include <linux/err.h>
-#include <mach/coh901318.h>
-#include "dma_channels.h"
 
 /*
  * The following is for the actual devices on the SSP/SPI bus
index aa384e53b7aca152c71c82a79a817313b276a79b..a2f079aca550b4e0b3fb6ecb3db2fcec53c89a24 100644 (file)
 #include <linux/io.h>
 #include <linux/uaccess.h>
 #include <linux/debugfs.h>
-#include <mach/coh901318.h>
+#include <linux/platform_data/dma-coh901318.h>
 
-#include "coh901318_lli.h"
+#include "coh901318.h"
 #include "dmaengine.h"
 
+#define COH901318_MOD32_MASK                                   (0x1F)
+#define COH901318_WORD_MASK                                    (0xFFFFFFFF)
+/* INT_STATUS - Interrupt Status Registers 32bit (R/-) */
+#define COH901318_INT_STATUS1                                  (0x0000)
+#define COH901318_INT_STATUS2                                  (0x0004)
+/* TC_INT_STATUS - Terminal Count Interrupt Status Registers 32bit (R/-) */
+#define COH901318_TC_INT_STATUS1                               (0x0008)
+#define COH901318_TC_INT_STATUS2                               (0x000C)
+/* TC_INT_CLEAR - Terminal Count Interrupt Clear Registers 32bit (-/W) */
+#define COH901318_TC_INT_CLEAR1                                        (0x0010)
+#define COH901318_TC_INT_CLEAR2                                        (0x0014)
+/* RAW_TC_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */
+#define COH901318_RAW_TC_INT_STATUS1                           (0x0018)
+#define COH901318_RAW_TC_INT_STATUS2                           (0x001C)
+/* BE_INT_STATUS - Bus Error Interrupt Status Registers 32bit (R/-) */
+#define COH901318_BE_INT_STATUS1                               (0x0020)
+#define COH901318_BE_INT_STATUS2                               (0x0024)
+/* BE_INT_CLEAR - Bus Error Interrupt Clear Registers 32bit (-/W) */
+#define COH901318_BE_INT_CLEAR1                                        (0x0028)
+#define COH901318_BE_INT_CLEAR2                                        (0x002C)
+/* RAW_BE_INT_STATUS - Raw Term Count Interrupt Status Registers 32bit (R/-) */
+#define COH901318_RAW_BE_INT_STATUS1                           (0x0030)
+#define COH901318_RAW_BE_INT_STATUS2                           (0x0034)
+
+/*
+ * CX_CFG - Channel Configuration Registers 32bit (R/W)
+ */
+#define COH901318_CX_CFG                                       (0x0100)
+#define COH901318_CX_CFG_SPACING                               (0x04)
+/* Channel enable activates tha dma job */
+#define COH901318_CX_CFG_CH_ENABLE                             (0x00000001)
+#define COH901318_CX_CFG_CH_DISABLE                            (0x00000000)
+/* Request Mode */
+#define COH901318_CX_CFG_RM_MASK                               (0x00000006)
+#define COH901318_CX_CFG_RM_MEMORY_TO_MEMORY                   (0x0 << 1)
+#define COH901318_CX_CFG_RM_PRIMARY_TO_MEMORY                  (0x1 << 1)
+#define COH901318_CX_CFG_RM_MEMORY_TO_PRIMARY                  (0x1 << 1)
+#define COH901318_CX_CFG_RM_PRIMARY_TO_SECONDARY               (0x3 << 1)
+#define COH901318_CX_CFG_RM_SECONDARY_TO_PRIMARY               (0x3 << 1)
+/* Linked channel request field. RM must == 11 */
+#define COH901318_CX_CFG_LCRF_SHIFT                            3
+#define COH901318_CX_CFG_LCRF_MASK                             (0x000001F8)
+#define COH901318_CX_CFG_LCR_DISABLE                           (0x00000000)
+/* Terminal Counter Interrupt Request Mask */
+#define COH901318_CX_CFG_TC_IRQ_ENABLE                         (0x00000200)
+#define COH901318_CX_CFG_TC_IRQ_DISABLE                                (0x00000000)
+/* Bus Error interrupt Mask */
+#define COH901318_CX_CFG_BE_IRQ_ENABLE                         (0x00000400)
+#define COH901318_CX_CFG_BE_IRQ_DISABLE                                (0x00000000)
+
+/*
+ * CX_STAT - Channel Status Registers 32bit (R/-)
+ */
+#define COH901318_CX_STAT                                      (0x0200)
+#define COH901318_CX_STAT_SPACING                              (0x04)
+#define COH901318_CX_STAT_RBE_IRQ_IND                          (0x00000008)
+#define COH901318_CX_STAT_RTC_IRQ_IND                          (0x00000004)
+#define COH901318_CX_STAT_ACTIVE                               (0x00000002)
+#define COH901318_CX_STAT_ENABLED                              (0x00000001)
+
+/*
+ * CX_CTRL - Channel Control Registers 32bit (R/W)
+ */
+#define COH901318_CX_CTRL                                      (0x0400)
+#define COH901318_CX_CTRL_SPACING                              (0x10)
+/* Transfer Count Enable */
+#define COH901318_CX_CTRL_TC_ENABLE                            (0x00001000)
+#define COH901318_CX_CTRL_TC_DISABLE                           (0x00000000)
+/* Transfer Count Value 0 - 4095 */
+#define COH901318_CX_CTRL_TC_VALUE_MASK                                (0x00000FFF)
+/* Burst count */
+#define COH901318_CX_CTRL_BURST_COUNT_MASK                     (0x0000E000)
+#define COH901318_CX_CTRL_BURST_COUNT_64_BYTES                 (0x7 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_48_BYTES                 (0x6 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_32_BYTES                 (0x5 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_16_BYTES                 (0x4 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_8_BYTES                  (0x3 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_4_BYTES                  (0x2 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_2_BYTES                  (0x1 << 13)
+#define COH901318_CX_CTRL_BURST_COUNT_1_BYTE                   (0x0 << 13)
+/* Source bus size  */
+#define COH901318_CX_CTRL_SRC_BUS_SIZE_MASK                    (0x00030000)
+#define COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS                 (0x2 << 16)
+#define COH901318_CX_CTRL_SRC_BUS_SIZE_16_BITS                 (0x1 << 16)
+#define COH901318_CX_CTRL_SRC_BUS_SIZE_8_BITS                  (0x0 << 16)
+/* Source address increment */
+#define COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE                  (0x00040000)
+#define COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE                 (0x00000000)
+/* Destination Bus Size */
+#define COH901318_CX_CTRL_DST_BUS_SIZE_MASK                    (0x00180000)
+#define COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS                 (0x2 << 19)
+#define COH901318_CX_CTRL_DST_BUS_SIZE_16_BITS                 (0x1 << 19)
+#define COH901318_CX_CTRL_DST_BUS_SIZE_8_BITS                  (0x0 << 19)
+/* Destination address increment */
+#define COH901318_CX_CTRL_DST_ADDR_INC_ENABLE                  (0x00200000)
+#define COH901318_CX_CTRL_DST_ADDR_INC_DISABLE                 (0x00000000)
+/* Master Mode (Master2 is only connected to MSL) */
+#define COH901318_CX_CTRL_MASTER_MODE_MASK                     (0x00C00000)
+#define COH901318_CX_CTRL_MASTER_MODE_M2R_M1W                  (0x3 << 22)
+#define COH901318_CX_CTRL_MASTER_MODE_M1R_M2W                  (0x2 << 22)
+#define COH901318_CX_CTRL_MASTER_MODE_M2RW                     (0x1 << 22)
+#define COH901318_CX_CTRL_MASTER_MODE_M1RW                     (0x0 << 22)
+/* Terminal Count flag to PER enable */
+#define COH901318_CX_CTRL_TCP_ENABLE                           (0x01000000)
+#define COH901318_CX_CTRL_TCP_DISABLE                          (0x00000000)
+/* Terminal Count flags to CPU enable */
+#define COH901318_CX_CTRL_TC_IRQ_ENABLE                                (0x02000000)
+#define COH901318_CX_CTRL_TC_IRQ_DISABLE                       (0x00000000)
+/* Hand shake to peripheral */
+#define COH901318_CX_CTRL_HSP_ENABLE                           (0x04000000)
+#define COH901318_CX_CTRL_HSP_DISABLE                          (0x00000000)
+#define COH901318_CX_CTRL_HSS_ENABLE                           (0x08000000)
+#define COH901318_CX_CTRL_HSS_DISABLE                          (0x00000000)
+/* DMA mode */
+#define COH901318_CX_CTRL_DDMA_MASK                            (0x30000000)
+#define COH901318_CX_CTRL_DDMA_LEGACY                          (0x0 << 28)
+#define COH901318_CX_CTRL_DDMA_DEMAND_DMA1                     (0x1 << 28)
+#define COH901318_CX_CTRL_DDMA_DEMAND_DMA2                     (0x2 << 28)
+/* Primary Request Data Destination */
+#define COH901318_CX_CTRL_PRDD_MASK                            (0x40000000)
+#define COH901318_CX_CTRL_PRDD_DEST                            (0x1 << 30)
+#define COH901318_CX_CTRL_PRDD_SOURCE                          (0x0 << 30)
+
+/*
+ * CX_SRC_ADDR - Channel Source Address Registers 32bit (R/W)
+ */
+#define COH901318_CX_SRC_ADDR                                  (0x0404)
+#define COH901318_CX_SRC_ADDR_SPACING                          (0x10)
+
+/*
+ * CX_DST_ADDR - Channel Destination Address Registers 32bit R/W
+ */
+#define COH901318_CX_DST_ADDR                                  (0x0408)
+#define COH901318_CX_DST_ADDR_SPACING                          (0x10)
+
+/*
+ * CX_LNK_ADDR - Channel Link Address Registers 32bit (R/W)
+ */
+#define COH901318_CX_LNK_ADDR                                  (0x040C)
+#define COH901318_CX_LNK_ADDR_SPACING                          (0x10)
+#define COH901318_CX_LNK_LINK_IMMEDIATE                                (0x00000001)
+
+/**
+ * struct coh901318_params - parameters for DMAC configuration
+ * @config: DMA config register
+ * @ctrl_lli_last: DMA control register for the last lli in the list
+ * @ctrl_lli: DMA control register for an lli
+ * @ctrl_lli_chained: DMA control register for a chained lli
+ */
+struct coh901318_params {
+       u32 config;
+       u32 ctrl_lli_last;
+       u32 ctrl_lli;
+       u32 ctrl_lli_chained;
+};
+
+/**
+ * struct coh_dma_channel - dma channel base
+ * @name: ascii name of dma channel
+ * @number: channel id number
+ * @desc_nbr_max: number of preallocated descriptors
+ * @priority_high: prio of channel, 0 low otherwise high.
+ * @param: configuration parameters
+ */
+struct coh_dma_channel {
+       const char name[32];
+       const int number;
+       const int desc_nbr_max;
+       const int priority_high;
+       const struct coh901318_params param;
+};
+
+/**
+ * struct powersave - DMA power save structure
+ * @lock: lock protecting data in this struct
+ * @started_channels: bit mask indicating active dma channels
+ */
+struct powersave {
+       spinlock_t lock;
+       u64 started_channels;
+};
+
+/* points out all dma slave channels.
+ * Syntax is [A1, B1, A2, B2, .... ,-1,-1]
+ * Select all channels from A to B, end of list is marked with -1,-1
+ */
+static int dma_slave_channels[] = {
+       U300_DMA_MSL_TX_0, U300_DMA_SPI_RX,
+       U300_DMA_UART1_TX, U300_DMA_UART1_RX, -1, -1};
+
+/* points out all dma memcpy channels. */
+static int dma_memcpy_channels[] = {
+       U300_DMA_GENERAL_PURPOSE_0, U300_DMA_GENERAL_PURPOSE_8, -1, -1};
+
+#define flags_memcpy_config (COH901318_CX_CFG_CH_DISABLE | \
+                       COH901318_CX_CFG_RM_MEMORY_TO_MEMORY | \
+                       COH901318_CX_CFG_LCR_DISABLE | \
+                       COH901318_CX_CFG_TC_IRQ_ENABLE | \
+                       COH901318_CX_CFG_BE_IRQ_ENABLE)
+#define flags_memcpy_lli_chained (COH901318_CX_CTRL_TC_ENABLE | \
+                       COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
+                       COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
+                       COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
+                       COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
+                       COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
+                       COH901318_CX_CTRL_MASTER_MODE_M1RW | \
+                       COH901318_CX_CTRL_TCP_DISABLE | \
+                       COH901318_CX_CTRL_TC_IRQ_DISABLE | \
+                       COH901318_CX_CTRL_HSP_DISABLE | \
+                       COH901318_CX_CTRL_HSS_DISABLE | \
+                       COH901318_CX_CTRL_DDMA_LEGACY | \
+                       COH901318_CX_CTRL_PRDD_SOURCE)
+#define flags_memcpy_lli (COH901318_CX_CTRL_TC_ENABLE | \
+                       COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
+                       COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
+                       COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
+                       COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
+                       COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
+                       COH901318_CX_CTRL_MASTER_MODE_M1RW | \
+                       COH901318_CX_CTRL_TCP_DISABLE | \
+                       COH901318_CX_CTRL_TC_IRQ_DISABLE | \
+                       COH901318_CX_CTRL_HSP_DISABLE | \
+                       COH901318_CX_CTRL_HSS_DISABLE | \
+                       COH901318_CX_CTRL_DDMA_LEGACY | \
+                       COH901318_CX_CTRL_PRDD_SOURCE)
+#define flags_memcpy_lli_last (COH901318_CX_CTRL_TC_ENABLE | \
+                       COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
+                       COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
+                       COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
+                       COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
+                       COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
+                       COH901318_CX_CTRL_MASTER_MODE_M1RW | \
+                       COH901318_CX_CTRL_TCP_DISABLE | \
+                       COH901318_CX_CTRL_TC_IRQ_ENABLE | \
+                       COH901318_CX_CTRL_HSP_DISABLE | \
+                       COH901318_CX_CTRL_HSS_DISABLE | \
+                       COH901318_CX_CTRL_DDMA_LEGACY | \
+                       COH901318_CX_CTRL_PRDD_SOURCE)
+
+const struct coh_dma_channel chan_config[U300_DMA_CHANNELS] = {
+       {
+               .number = U300_DMA_MSL_TX_0,
+               .name = "MSL TX 0",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_MSL_TX_1,
+               .name = "MSL TX 1",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+       },
+       {
+               .number = U300_DMA_MSL_TX_2,
+               .name = "MSL TX 2",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .desc_nbr_max = 10,
+       },
+       {
+               .number = U300_DMA_MSL_TX_3,
+               .name = "MSL TX 3",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+       },
+       {
+               .number = U300_DMA_MSL_TX_4,
+               .name = "MSL TX 4",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1R_M2W |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+       },
+       {
+               .number = U300_DMA_MSL_TX_5,
+               .name = "MSL TX 5",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_MSL_TX_6,
+               .name = "MSL TX 6",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_MSL_RX_0,
+               .name = "MSL RX 0",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_MSL_RX_1,
+               .name = "MSL RX 1",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_MSL_RX_2,
+               .name = "MSL RX 2",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_MSL_RX_3,
+               .name = "MSL RX 3",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_MSL_RX_4,
+               .name = "MSL RX 4",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_MSL_RX_5,
+               .name = "MSL RX 5",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_32_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M2R_M1W |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_DEMAND_DMA1 |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_MSL_RX_6,
+               .name = "MSL RX 6",
+               .priority_high = 0,
+       },
+       /*
+        * Don't set up device address, burst count or size of src
+        * or dst bus for this peripheral - handled by PrimeCell
+        * DMA extension.
+        */
+       {
+               .number = U300_DMA_MMCSD_RX_TX,
+               .name = "MMCSD RX TX",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+
+       },
+       {
+               .number = U300_DMA_MSPRO_TX,
+               .name = "MSPRO TX",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_MSPRO_RX,
+               .name = "MSPRO RX",
+               .priority_high = 0,
+       },
+       /*
+        * Don't set up device address, burst count or size of src
+        * or dst bus for this peripheral - handled by PrimeCell
+        * DMA extension.
+        */
+       {
+               .number = U300_DMA_UART0_TX,
+               .name = "UART0 TX",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+       },
+       {
+               .number = U300_DMA_UART0_RX,
+               .name = "UART0 RX",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+       },
+       {
+               .number = U300_DMA_APEX_TX,
+               .name = "APEX TX",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_APEX_RX,
+               .name = "APEX RX",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_PCM_I2S0_TX,
+               .name = "PCM I2S0 TX",
+               .priority_high = 1,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+       },
+       {
+               .number = U300_DMA_PCM_I2S0_RX,
+               .name = "PCM I2S0 RX",
+               .priority_high = 1,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_PCM_I2S1_TX,
+               .name = "PCM I2S1 TX",
+               .priority_high = 1,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_SOURCE,
+       },
+       {
+               .number = U300_DMA_PCM_I2S1_RX,
+               .name = "PCM I2S1 RX",
+               .priority_high = 1,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_DEST,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_BURST_COUNT_16_BYTES |
+                               COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE |
+                               COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS |
+                               COH901318_CX_CTRL_DST_ADDR_INC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_ENABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY |
+                               COH901318_CX_CTRL_PRDD_DEST,
+       },
+       {
+               .number = U300_DMA_XGAM_CDI,
+               .name = "XGAM CDI",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_XGAM_PDI,
+               .name = "XGAM PDI",
+               .priority_high = 0,
+       },
+       /*
+        * Don't set up device address, burst count or size of src
+        * or dst bus for this peripheral - handled by PrimeCell
+        * DMA extension.
+        */
+       {
+               .number = U300_DMA_SPI_TX,
+               .name = "SPI TX",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+       },
+       {
+               .number = U300_DMA_SPI_RX,
+               .name = "SPI RX",
+               .priority_high = 0,
+               .param.config = COH901318_CX_CFG_CH_DISABLE |
+                               COH901318_CX_CFG_LCR_DISABLE |
+                               COH901318_CX_CFG_TC_IRQ_ENABLE |
+                               COH901318_CX_CFG_BE_IRQ_ENABLE,
+               .param.ctrl_lli_chained = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_DISABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+               .param.ctrl_lli_last = 0 |
+                               COH901318_CX_CTRL_TC_ENABLE |
+                               COH901318_CX_CTRL_MASTER_MODE_M1RW |
+                               COH901318_CX_CTRL_TCP_DISABLE |
+                               COH901318_CX_CTRL_TC_IRQ_ENABLE |
+                               COH901318_CX_CTRL_HSP_ENABLE |
+                               COH901318_CX_CTRL_HSS_DISABLE |
+                               COH901318_CX_CTRL_DDMA_LEGACY,
+
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_0,
+               .name = "GENERAL 00",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_1,
+               .name = "GENERAL 01",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_2,
+               .name = "GENERAL 02",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_3,
+               .name = "GENERAL 03",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_4,
+               .name = "GENERAL 04",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_5,
+               .name = "GENERAL 05",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_6,
+               .name = "GENERAL 06",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_7,
+               .name = "GENERAL 07",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_GENERAL_PURPOSE_8,
+               .name = "GENERAL 08",
+               .priority_high = 0,
+
+               .param.config = flags_memcpy_config,
+               .param.ctrl_lli_chained = flags_memcpy_lli_chained,
+               .param.ctrl_lli = flags_memcpy_lli,
+               .param.ctrl_lli_last = flags_memcpy_lli_last,
+       },
+       {
+               .number = U300_DMA_UART1_TX,
+               .name = "UART1 TX",
+               .priority_high = 0,
+       },
+       {
+               .number = U300_DMA_UART1_RX,
+               .name = "UART1 RX",
+               .priority_high = 0,
+       }
+};
+
 #define COHC_2_DEV(cohc) (&cohc->chan.dev->device)
 
 #ifdef VERBOSE_DEBUG
@@ -54,7 +1284,6 @@ struct coh901318_base {
        struct dma_device dma_slave;
        struct dma_device dma_memcpy;
        struct coh901318_chan *chans;
-       struct coh901318_platform *platform;
 };
 
 struct coh901318_chan {
@@ -75,8 +1304,8 @@ struct coh901318_chan {
        unsigned long nbr_active_done;
        unsigned long busy;
 
-       u32 runtime_addr;
-       u32 runtime_ctrl;
+       u32 addr;
+       u32 ctrl;
 
        struct coh901318_base *base;
 };
@@ -122,7 +1351,7 @@ static int coh901318_debugfs_read(struct file *file, char __user *buf,
 
        tmp += sprintf(tmp, "DMA -- enabled dma channels\n");
 
-       for (i = 0; i < debugfs_dma_base->platform->max_channels; i++)
+       for (i = 0; i < U300_DMA_CHANNELS; i++)
                if (started_channels & (1 << i))
                        tmp += sprintf(tmp, "channel %d\n", i);
 
@@ -187,25 +1416,16 @@ static inline struct coh901318_chan *to_coh901318_chan(struct dma_chan *chan)
        return container_of(chan, struct coh901318_chan, chan);
 }
 
-static inline dma_addr_t
-cohc_dev_addr(struct coh901318_chan *cohc)
-{
-       /* Runtime supplied address will take precedence */
-       if (cohc->runtime_addr)
-               return cohc->runtime_addr;
-       return cohc->base->platform->chan_conf[cohc->id].dev_addr;
-}
-
 static inline const struct coh901318_params *
 cohc_chan_param(struct coh901318_chan *cohc)
 {
-       return &cohc->base->platform->chan_conf[cohc->id].param;
+       return &chan_config[cohc->id].param;
 }
 
 static inline const struct coh_dma_channel *
 cohc_chan_conf(struct coh901318_chan *cohc)
 {
-       return &cohc->base->platform->chan_conf[cohc->id];
+       return &chan_config[cohc->id];
 }
 
 static void enable_powersave(struct coh901318_chan *cohc)
@@ -217,12 +1437,6 @@ static void enable_powersave(struct coh901318_chan *cohc)
 
        pm->started_channels &= ~(1ULL << cohc->id);
 
-       if (!pm->started_channels) {
-               /* DMA no longer intends to access memory */
-               cohc->base->platform->access_memory_state(cohc->base->dev,
-                                                         false);
-       }
-
        spin_unlock_irqrestore(&pm->lock, flags);
 }
 static void disable_powersave(struct coh901318_chan *cohc)
@@ -232,12 +1446,6 @@ static void disable_powersave(struct coh901318_chan *cohc)
 
        spin_lock_irqsave(&pm->lock, flags);
 
-       if (!pm->started_channels) {
-               /* DMA intends to access memory */
-               cohc->base->platform->access_memory_state(cohc->base->dev,
-                                                         true);
-       }
-
        pm->started_channels |= (1ULL << cohc->id);
 
        spin_unlock_irqrestore(&pm->lock, flags);
@@ -596,7 +1804,7 @@ static int coh901318_config(struct coh901318_chan *cohc,
        if (param)
                p = param;
        else
-               p = &cohc->base->platform->chan_conf[channel].param;
+               p = cohc_chan_param(cohc);
 
        /* Clear any pending BE or TC interrupt */
        if (channel < 32) {
@@ -1052,9 +2260,9 @@ coh901318_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
         * sure the bits you set per peripheral channel are
         * cleared in the default config from the platform.
         */
-       ctrl_chained |= cohc->runtime_ctrl;
-       ctrl_last |= cohc->runtime_ctrl;
-       ctrl |= cohc->runtime_ctrl;
+       ctrl_chained |= cohc->ctrl;
+       ctrl_last |= cohc->ctrl;
+       ctrl |= cohc->ctrl;
 
        if (direction == DMA_MEM_TO_DEV) {
                u32 tx_flags = COH901318_CX_CTRL_PRDD_SOURCE |
@@ -1103,7 +2311,7 @@ coh901318_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl,
 
        /* initiate allocated lli list */
        ret = coh901318_lli_fill_sg(&cohc->base->pool, lli, sgl, sg_len,
-                                   cohc_dev_addr(cohc),
+                                   cohc->addr,
                                    ctrl_chained,
                                    ctrl,
                                    ctrl_last,
@@ -1244,7 +2452,7 @@ static void coh901318_dma_set_runtimeconfig(struct dma_chan *chan,
        dma_addr_t addr;
        enum dma_slave_buswidth addr_width;
        u32 maxburst;
-       u32 runtime_ctrl = 0;
+       u32 ctrl = 0;
        int i = 0;
 
        /* We only support mem to per or per to mem transfers */
@@ -1265,7 +2473,7 @@ static void coh901318_dma_set_runtimeconfig(struct dma_chan *chan,
                addr_width);
        switch (addr_width)  {
        case DMA_SLAVE_BUSWIDTH_1_BYTE:
-               runtime_ctrl |=
+               ctrl |=
                        COH901318_CX_CTRL_SRC_BUS_SIZE_8_BITS |
                        COH901318_CX_CTRL_DST_BUS_SIZE_8_BITS;
 
@@ -1277,7 +2485,7 @@ static void coh901318_dma_set_runtimeconfig(struct dma_chan *chan,
 
                break;
        case DMA_SLAVE_BUSWIDTH_2_BYTES:
-               runtime_ctrl |=
+               ctrl |=
                        COH901318_CX_CTRL_SRC_BUS_SIZE_16_BITS |
                        COH901318_CX_CTRL_DST_BUS_SIZE_16_BITS;
 
@@ -1290,7 +2498,7 @@ static void coh901318_dma_set_runtimeconfig(struct dma_chan *chan,
                break;
        case DMA_SLAVE_BUSWIDTH_4_BYTES:
                /* Direction doesn't matter here, it's 32/32 bits */
-               runtime_ctrl |=
+               ctrl |=
                        COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS |
                        COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS;
 
@@ -1307,13 +2515,13 @@ static void coh901318_dma_set_runtimeconfig(struct dma_chan *chan,
                return;
        }
 
-       runtime_ctrl |= burst_sizes[i].reg;
+       ctrl |= burst_sizes[i].reg;
        dev_dbg(COHC_2_DEV(cohc),
                "selected burst size %d bytes for address width %d bytes, maxburst %d\n",
                burst_sizes[i].burst_8bit, addr_width, maxburst);
 
-       cohc->runtime_addr = addr;
-       cohc->runtime_ctrl = runtime_ctrl;
+       cohc->addr = addr;
+       cohc->ctrl = ctrl;
 }
 
 static int
@@ -1431,7 +2639,6 @@ void coh901318_base_init(struct dma_device *dma, const int *pick_chans,
 static int __init coh901318_probe(struct platform_device *pdev)
 {
        int err = 0;
-       struct coh901318_platform *pdata;
        struct coh901318_base *base;
        int irq;
        struct resource *io;
@@ -1447,13 +2654,9 @@ static int __init coh901318_probe(struct platform_device *pdev)
                                    pdev->dev.driver->name) == NULL)
                return -ENOMEM;
 
-       pdata = pdev->dev.platform_data;
-       if (!pdata)
-               return -ENODEV;
-
        base = devm_kzalloc(&pdev->dev,
                            ALIGN(sizeof(struct coh901318_base), 4) +
-                           pdata->max_channels *
+                           U300_DMA_CHANNELS *
                            sizeof(struct coh901318_chan),
                            GFP_KERNEL);
        if (!base)
@@ -1466,7 +2669,6 @@ static int __init coh901318_probe(struct platform_device *pdev)
                return -ENOMEM;
 
        base->dev = &pdev->dev;
-       base->platform = pdata;
        spin_lock_init(&base->pm.lock);
        base->pm.started_channels = 0;
 
@@ -1488,7 +2690,7 @@ static int __init coh901318_probe(struct platform_device *pdev)
                return err;
 
        /* init channels for device transfers */
-       coh901318_base_init(&base->dma_slave,  base->platform->chans_slave,
+       coh901318_base_init(&base->dma_slave, dma_slave_channels,
                            base);
 
        dma_cap_zero(base->dma_slave.cap_mask);
@@ -1508,7 +2710,7 @@ static int __init coh901318_probe(struct platform_device *pdev)
                goto err_register_slave;
 
        /* init channels for memcpy */
-       coh901318_base_init(&base->dma_memcpy, base->platform->chans_memcpy,
+       coh901318_base_init(&base->dma_memcpy, dma_memcpy_channels,
                            base);
 
        dma_cap_zero(base->dma_memcpy.cap_mask);
diff --git a/drivers/dma/coh901318.h b/drivers/dma/coh901318.h
new file mode 100644 (file)
index 0000000..95ce1e2
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2007-2013 ST-Ericsson
+ * License terms: GNU General Public License (GPL) version 2
+ * DMA driver for COH 901 318
+ * Author: Per Friden <per.friden@stericsson.com>
+ */
+
+#ifndef COH901318_H
+#define COH901318_H
+
+#define MAX_DMA_PACKET_SIZE_SHIFT 11
+#define MAX_DMA_PACKET_SIZE (1 << MAX_DMA_PACKET_SIZE_SHIFT)
+
+struct device;
+
+struct coh901318_pool {
+       spinlock_t lock;
+       struct dma_pool *dmapool;
+       struct device *dev;
+
+#ifdef CONFIG_DEBUG_FS
+       int debugfs_pool_counter;
+#endif
+};
+
+/**
+ * struct coh901318_lli - linked list item for DMAC
+ * @control: control settings for DMAC
+ * @src_addr: transfer source address
+ * @dst_addr: transfer destination address
+ * @link_addr:  physical address to next lli
+ * @virt_link_addr: virtual address of next lli (only used by pool_free)
+ * @phy_this: physical address of current lli (only used by pool_free)
+ */
+struct coh901318_lli {
+       u32 control;
+       dma_addr_t src_addr;
+       dma_addr_t dst_addr;
+       dma_addr_t link_addr;
+
+       void *virt_link_addr;
+       dma_addr_t phy_this;
+};
+
+/**
+ * coh901318_pool_create() - Creates an dma pool for lli:s
+ * @pool: pool handle
+ * @dev: dma device
+ * @lli_nbr: number of lli:s in the pool
+ * @algin: address alignemtn of lli:s
+ * returns 0 on success otherwise none zero
+ */
+int coh901318_pool_create(struct coh901318_pool *pool,
+                         struct device *dev,
+                         size_t lli_nbr, size_t align);
+
+/**
+ * coh901318_pool_destroy() - Destroys the dma pool
+ * @pool: pool handle
+ * returns 0 on success otherwise none zero
+ */
+int coh901318_pool_destroy(struct coh901318_pool *pool);
+
+/**
+ * coh901318_lli_alloc() - Allocates a linked list
+ *
+ * @pool: pool handle
+ * @len: length to list
+ * return: none NULL if success otherwise NULL
+ */
+struct coh901318_lli *
+coh901318_lli_alloc(struct coh901318_pool *pool,
+                   unsigned int len);
+
+/**
+ * coh901318_lli_free() - Returns the linked list items to the pool
+ * @pool: pool handle
+ * @lli: reference to lli pointer to be freed
+ */
+void coh901318_lli_free(struct coh901318_pool *pool,
+                       struct coh901318_lli **lli);
+
+/**
+ * coh901318_lli_fill_memcpy() - Prepares the lli:s for dma memcpy
+ * @pool: pool handle
+ * @lli: allocated lli
+ * @src: src address
+ * @size: transfer size
+ * @dst: destination address
+ * @ctrl_chained: ctrl for chained lli
+ * @ctrl_last: ctrl for the last lli
+ * returns number of CPU interrupts for the lli, negative on error.
+ */
+int
+coh901318_lli_fill_memcpy(struct coh901318_pool *pool,
+                         struct coh901318_lli *lli,
+                         dma_addr_t src, unsigned int size,
+                         dma_addr_t dst, u32 ctrl_chained, u32 ctrl_last);
+
+/**
+ * coh901318_lli_fill_single() - Prepares the lli:s for dma single transfer
+ * @pool: pool handle
+ * @lli: allocated lli
+ * @buf: transfer buffer
+ * @size: transfer size
+ * @dev_addr: address of periphal
+ * @ctrl_chained: ctrl for chained lli
+ * @ctrl_last: ctrl for the last lli
+ * @dir: direction of transfer (to or from device)
+ * returns number of CPU interrupts for the lli, negative on error.
+ */
+int
+coh901318_lli_fill_single(struct coh901318_pool *pool,
+                         struct coh901318_lli *lli,
+                         dma_addr_t buf, unsigned int size,
+                         dma_addr_t dev_addr, u32 ctrl_chained, u32 ctrl_last,
+                         enum dma_transfer_direction dir);
+
+/**
+ * coh901318_lli_fill_single() - Prepares the lli:s for dma scatter list transfer
+ * @pool: pool handle
+ * @lli: allocated lli
+ * @sg: scatter gather list
+ * @nents: number of entries in sg
+ * @dev_addr: address of periphal
+ * @ctrl_chained: ctrl for chained lli
+ * @ctrl: ctrl of middle lli
+ * @ctrl_last: ctrl for the last lli
+ * @dir: direction of transfer (to or from device)
+ * @ctrl_irq_mask: ctrl mask for CPU interrupt
+ * returns number of CPU interrupts for the lli, negative on error.
+ */
+int
+coh901318_lli_fill_sg(struct coh901318_pool *pool,
+                     struct coh901318_lli *lli,
+                     struct scatterlist *sg, unsigned int nents,
+                     dma_addr_t dev_addr, u32 ctrl_chained,
+                     u32 ctrl, u32 ctrl_last,
+                     enum dma_transfer_direction dir, u32 ctrl_irq_mask);
+
+#endif /* COH901318_H */
index 780e0429b38cd30236001e4a121cefc6fa347aea..3e96610e18e29a5e6829261ef6d912640c0ad266 100644 (file)
@@ -11,9 +11,9 @@
 #include <linux/memory.h>
 #include <linux/gfp.h>
 #include <linux/dmapool.h>
-#include <mach/coh901318.h>
+#include <linux/dmaengine.h>
 
-#include "coh901318_lli.h"
+#include "coh901318.h"
 
 #if (defined(CONFIG_DEBUG_FS) && defined(CONFIG_U300_DEBUG))
 #define DEBUGFS_POOL_COUNTER_RESET(pool) (pool->debugfs_pool_counter = 0)
diff --git a/drivers/dma/coh901318_lli.h b/drivers/dma/coh901318_lli.h
deleted file mode 100644 (file)
index abff371..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * driver/dma/coh901318_lli.h
- *
- * Copyright (C) 2007-2009 ST-Ericsson
- * License terms: GNU General Public License (GPL) version 2
- * Support functions for handling lli for coh901318
- * Author: Per Friden <per.friden@stericsson.com>
- */
-
-#ifndef COH901318_LLI_H
-#define COH901318_LLI_H
-
-#include <mach/coh901318.h>
-
-struct device;
-
-struct coh901318_pool {
-       spinlock_t lock;
-       struct dma_pool *dmapool;
-       struct device *dev;
-
-#ifdef CONFIG_DEBUG_FS
-       int debugfs_pool_counter;
-#endif
-};
-
-struct device;
-/**
- * coh901318_pool_create() - Creates an dma pool for lli:s
- * @pool: pool handle
- * @dev: dma device
- * @lli_nbr: number of lli:s in the pool
- * @algin: address alignemtn of lli:s
- * returns 0 on success otherwise none zero
- */
-int coh901318_pool_create(struct coh901318_pool *pool,
-                         struct device *dev,
-                         size_t lli_nbr, size_t align);
-
-/**
- * coh901318_pool_destroy() - Destroys the dma pool
- * @pool: pool handle
- * returns 0 on success otherwise none zero
- */
-int coh901318_pool_destroy(struct coh901318_pool *pool);
-
-/**
- * coh901318_lli_alloc() - Allocates a linked list
- *
- * @pool: pool handle
- * @len: length to list
- * return: none NULL if success otherwise NULL
- */
-struct coh901318_lli *
-coh901318_lli_alloc(struct coh901318_pool *pool,
-                   unsigned int len);
-
-/**
- * coh901318_lli_free() - Returns the linked list items to the pool
- * @pool: pool handle
- * @lli: reference to lli pointer to be freed
- */
-void coh901318_lli_free(struct coh901318_pool *pool,
-                       struct coh901318_lli **lli);
-
-/**
- * coh901318_lli_fill_memcpy() - Prepares the lli:s for dma memcpy
- * @pool: pool handle
- * @lli: allocated lli
- * @src: src address
- * @size: transfer size
- * @dst: destination address
- * @ctrl_chained: ctrl for chained lli
- * @ctrl_last: ctrl for the last lli
- * returns number of CPU interrupts for the lli, negative on error.
- */
-int
-coh901318_lli_fill_memcpy(struct coh901318_pool *pool,
-                         struct coh901318_lli *lli,
-                         dma_addr_t src, unsigned int size,
-                         dma_addr_t dst, u32 ctrl_chained, u32 ctrl_last);
-
-/**
- * coh901318_lli_fill_single() - Prepares the lli:s for dma single transfer
- * @pool: pool handle
- * @lli: allocated lli
- * @buf: transfer buffer
- * @size: transfer size
- * @dev_addr: address of periphal
- * @ctrl_chained: ctrl for chained lli
- * @ctrl_last: ctrl for the last lli
- * @dir: direction of transfer (to or from device)
- * returns number of CPU interrupts for the lli, negative on error.
- */
-int
-coh901318_lli_fill_single(struct coh901318_pool *pool,
-                         struct coh901318_lli *lli,
-                         dma_addr_t buf, unsigned int size,
-                         dma_addr_t dev_addr, u32 ctrl_chained, u32 ctrl_last,
-                         enum dma_transfer_direction dir);
-
-/**
- * coh901318_lli_fill_single() - Prepares the lli:s for dma scatter list transfer
- * @pool: pool handle
- * @lli: allocated lli
- * @sg: scatter gather list
- * @nents: number of entries in sg
- * @dev_addr: address of periphal
- * @ctrl_chained: ctrl for chained lli
- * @ctrl: ctrl of middle lli
- * @ctrl_last: ctrl for the last lli
- * @dir: direction of transfer (to or from device)
- * @ctrl_irq_mask: ctrl mask for CPU interrupt
- * returns number of CPU interrupts for the lli, negative on error.
- */
-int
-coh901318_lli_fill_sg(struct coh901318_pool *pool,
-                     struct coh901318_lli *lli,
-                     struct scatterlist *sg, unsigned int nents,
-                     dma_addr_t dev_addr, u32 ctrl_chained,
-                     u32 ctrl, u32 ctrl_last,
-                     enum dma_transfer_direction dir, u32 ctrl_irq_mask);
-
-#endif /* COH901318_LLI_H */
diff --git a/include/linux/platform_data/dma-coh901318.h b/include/linux/platform_data/dma-coh901318.h
new file mode 100644 (file)
index 0000000..c4cb959
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Platform data for the COH901318 DMA controller
+ * Copyright (C) 2007-2013 ST-Ericsson
+ * License terms: GNU General Public License (GPL) version 2
+ */
+
+#ifndef PLAT_COH901318_H
+#define PLAT_COH901318_H
+
+#ifdef CONFIG_COH901318
+
+/* We only support the U300 DMA channels */
+#define U300_DMA_MSL_TX_0              0
+#define U300_DMA_MSL_TX_1              1
+#define U300_DMA_MSL_TX_2              2
+#define U300_DMA_MSL_TX_3              3
+#define U300_DMA_MSL_TX_4              4
+#define U300_DMA_MSL_TX_5              5
+#define U300_DMA_MSL_TX_6              6
+#define U300_DMA_MSL_RX_0              7
+#define U300_DMA_MSL_RX_1              8
+#define U300_DMA_MSL_RX_2              9
+#define U300_DMA_MSL_RX_3              10
+#define U300_DMA_MSL_RX_4              11
+#define U300_DMA_MSL_RX_5              12
+#define U300_DMA_MSL_RX_6              13
+#define U300_DMA_MMCSD_RX_TX           14
+#define U300_DMA_MSPRO_TX              15
+#define U300_DMA_MSPRO_RX              16
+#define U300_DMA_UART0_TX              17
+#define U300_DMA_UART0_RX              18
+#define U300_DMA_APEX_TX               19
+#define U300_DMA_APEX_RX               20
+#define U300_DMA_PCM_I2S0_TX           21
+#define U300_DMA_PCM_I2S0_RX           22
+#define U300_DMA_PCM_I2S1_TX           23
+#define U300_DMA_PCM_I2S1_RX           24
+#define U300_DMA_XGAM_CDI              25
+#define U300_DMA_XGAM_PDI              26
+#define U300_DMA_SPI_TX                        27
+#define U300_DMA_SPI_RX                        28
+#define U300_DMA_GENERAL_PURPOSE_0     29
+#define U300_DMA_GENERAL_PURPOSE_1     30
+#define U300_DMA_GENERAL_PURPOSE_2     31
+#define U300_DMA_GENERAL_PURPOSE_3     32
+#define U300_DMA_GENERAL_PURPOSE_4     33
+#define U300_DMA_GENERAL_PURPOSE_5     34
+#define U300_DMA_GENERAL_PURPOSE_6     35
+#define U300_DMA_GENERAL_PURPOSE_7     36
+#define U300_DMA_GENERAL_PURPOSE_8     37
+#define U300_DMA_UART1_TX              38
+#define U300_DMA_UART1_RX              39
+
+#define U300_DMA_DEVICE_CHANNELS       32
+#define U300_DMA_CHANNELS              40
+
+/**
+ * coh901318_filter_id() - DMA channel filter function
+ * @chan: dma channel handle
+ * @chan_id: id of dma channel to be filter out
+ *
+ * In dma_request_channel() it specifies what channel id to be requested
+ */
+bool coh901318_filter_id(struct dma_chan *chan, void *chan_id);
+#else
+static inline bool coh901318_filter_id(struct dma_chan *chan, void *chan_id)
+{
+       return false;
+}
+#endif
+
+#endif /* PLAT_COH901318_H */