|
@@ -332,3 +332,164 @@ static struct resource dma_resource[] = {
|
|
* Select all channels from A to B, end of list is marked with -1,-1
|
|
* Select all channels from A to B, end of list is marked with -1,-1
|
|
*/
|
|
*/
|
|
static int dma_slave_channels[] = {
|
|
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 |
|