|
@@ -0,0 +1,593 @@
|
|
|
+/*****************************************************************************
|
|
|
+* Copyright 2004 - 2008 Broadcom Corporation. All rights reserved.
|
|
|
+*
|
|
|
+* Unless you and Broadcom execute a separate written software license
|
|
|
+* agreement governing use of this software, this software is licensed to you
|
|
|
+* under the terms of the GNU General Public License version 2, available at
|
|
|
+* http://www.broadcom.com/licenses/GPLv2.php (the "GPL").
|
|
|
+*
|
|
|
+* Notwithstanding the above, under no circumstances may you combine this
|
|
|
+* software in any way with any other Broadcom software provided under a
|
|
|
+* license other than the GPL, without Broadcom's express prior written
|
|
|
+* consent.
|
|
|
+*****************************************************************************/
|
|
|
+
|
|
|
+/****************************************************************************/
|
|
|
+/**
|
|
|
+* @file dma_device.c
|
|
|
+*
|
|
|
+* @brief private array of DMA_DeviceAttribute_t
|
|
|
+*/
|
|
|
+/****************************************************************************/
|
|
|
+
|
|
|
+DMA_DeviceAttribute_t DMA_gDeviceAttribute[DMA_NUM_DEVICE_ENTRIES] = {
|
|
|
+ [DMA_DEVICE_MEM_TO_MEM] = /* MEM 2 MEM */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "mem-to-mem",
|
|
|
+ .config = {
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_VPM_MEM_TO_MEM] = /* VPM */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_IS_DEDICATED | DMA_DEVICE_FLAG_NO_ISR,
|
|
|
+ .name = "vpm",
|
|
|
+ .dedicatedController = 0,
|
|
|
+ .dedicatedChannel = 0,
|
|
|
+ /* reserve DMA0:0 for VPM */
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_NAND_MEM_TO_MEM] = /* NAND */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "nand",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0,
|
|
|
+ .dstPeripheralPort = 0,
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_6,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_PIF_MEM_TO_DEV] = /* PIF TX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1
|
|
|
+ | DMA_DEVICE_FLAG_ALLOW_LARGE_FIFO
|
|
|
+ | DMA_DEVICE_FLAG_ALLOC_DMA1_FIRST | DMA_DEVICE_FLAG_PORT_PER_DMAC,
|
|
|
+ .name = "pif_tx",
|
|
|
+ .dmacPort = {14, 5},
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ /* dstPeripheralPort = 5 or 14 */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ .maxDataPerBlock = 16256,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_PIF_DEV_TO_MEM] = /* PIF RX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1
|
|
|
+ | DMA_DEVICE_FLAG_ALLOW_LARGE_FIFO
|
|
|
+ /* DMA_DEVICE_FLAG_ALLOC_DMA1_FIRST */
|
|
|
+ | DMA_DEVICE_FLAG_PORT_PER_DMAC,
|
|
|
+ .name = "pif_rx",
|
|
|
+ .dmacPort = {14, 5},
|
|
|
+ .config = {
|
|
|
+ /* srcPeripheralPort = 5 or 14 */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ .maxDataPerBlock = 16256,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_I2S0_DEV_TO_MEM] = /* I2S RX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "i2s0_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: I2S0 */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_16,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_0,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_I2S0_MEM_TO_DEV] = /* I2S TX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "i2s0_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 1, /* DST: I2S0 */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_16,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_0,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_I2S1_DEV_TO_MEM] = /* I2S1 RX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "i2s1_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 2, /* SRC: I2S1 */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_16,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_0,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_I2S1_MEM_TO_DEV] = /* I2S1 TX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "i2s1_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 3, /* DST: I2S1 */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_16,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_0,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_ESW_MEM_TO_DEV] = /* ESW TX */
|
|
|
+ {
|
|
|
+ .name = "esw_tx",
|
|
|
+ .flags = DMA_DEVICE_FLAG_IS_DEDICATED,
|
|
|
+ .dedicatedController = 1,
|
|
|
+ .dedicatedChannel = 3,
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 1, /* DST: ESW (MTP) */
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ /* DMAx_AHB_SSTATARy */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ /* DMAx_AHB_DSTATARy */
|
|
|
+ .dstStatusRegisterAddress = 0x30490010,
|
|
|
+ /* DMAx_AHB_CFGy */
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ /* DMAx_AHB_CTLy */
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_0,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_ESW_DEV_TO_MEM] = /* ESW RX */
|
|
|
+ {
|
|
|
+ .name = "esw_rx",
|
|
|
+ .flags = DMA_DEVICE_FLAG_IS_DEDICATED,
|
|
|
+ .dedicatedController = 1,
|
|
|
+ .dedicatedChannel = 2,
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: ESW (PTM) */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ /* DMAx_AHB_SSTATARy */
|
|
|
+ .srcStatusRegisterAddress = 0x30480010,
|
|
|
+ /* DMAx_AHB_DSTATARy */
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ /* DMAx_AHB_CFGy */
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ /* DMAx_AHB_CTLy */
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_0,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_CODEC_A_DEV_TO_MEM] = /* APM Codec A Ingress */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "apm_a_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 2, /* SRC: Codec A Ingress FIFO */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_CODEC_A_MEM_TO_DEV] = /* APM Codec A Egress */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "apm_a_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 3, /* DST: Codec A Egress FIFO */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_CODEC_B_DEV_TO_MEM] = /* APM Codec B Ingress */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "apm_b_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 4, /* SRC: Codec B Ingress FIFO */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_CODEC_B_MEM_TO_DEV] = /* APM Codec B Egress */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "apm_b_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 5, /* DST: Codec B Egress FIFO */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_CODEC_C_DEV_TO_MEM] = /* APM Codec C Ingress */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "apm_c_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 4, /* SRC: Codec C Ingress FIFO */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_PCM0_DEV_TO_MEM] = /* PCM0 RX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "pcm0_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 12, /* SRC: PCM0 */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_PCM0_MEM_TO_DEV] = /* PCM0 TX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0,
|
|
|
+ .name = "pcm0_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 13, /* DST: PCM0 */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_PCM1_DEV_TO_MEM] = /* PCM1 RX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "pcm1_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 14, /* SRC: PCM1 */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_APM_PCM1_MEM_TO_DEV] = /* PCM1 TX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "pcm1_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 15, /* DST: PCM1 */
|
|
|
+ .srcStatusRegisterAddress = 0,
|
|
|
+ .dstStatusRegisterAddress = 0,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_SPUM_DEV_TO_MEM] = /* SPUM RX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "spum_rx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 6, /* SRC: Codec A Ingress FIFO */
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ /* Busrt size **MUST** be 16 for SPUM to work */
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_16,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_16,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ /* on the RX side, SPU needs to be the flow controller */
|
|
|
+ .flowControler = dmacHw_FLOW_CONTROL_PERIPHERAL,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_SPUM_MEM_TO_DEV] = /* SPUM TX */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "spum_tx",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .dstPeripheralPort = 7, /* DST: SPUM */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,
|
|
|
+ /* Busrt size **MUST** be 16 for SPUM to work */
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_16,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_16,
|
|
|
+ .transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_MEM_TO_VRAM] = /* MEM 2 VRAM */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "mem-to-vram",
|
|
|
+ .config = {
|
|
|
+ .srcPeripheralPort = 0, /* SRC: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ [DMA_DEVICE_VRAM_TO_MEM] = /* VRAM 2 MEM */
|
|
|
+ {
|
|
|
+ .flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,
|
|
|
+ .name = "vram-to-mem",
|
|
|
+ .config = {
|
|
|
+ .dstPeripheralPort = 0, /* DST: memory */
|
|
|
+ .srcStatusRegisterAddress = 0x00000000,
|
|
|
+ .dstStatusRegisterAddress = 0x00000000,
|
|
|
+ .srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,
|
|
|
+ .transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,
|
|
|
+ .srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,
|
|
|
+ .dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,
|
|
|
+ .completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .errorInterrupt = dmacHw_INTERRUPT_ENABLE,
|
|
|
+ .channelPriority = dmacHw_CHANNEL_PRIORITY_7,
|
|
|
+ .srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,
|
|
|
+ .dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,
|
|
|
+ .srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,
|
|
|
+ .dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
+EXPORT_SYMBOL(DMA_gDeviceAttribute); /* primarily for dma-test.c */
|