|
@@ -21,11 +21,1241 @@
|
|
|
#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);
|