|  | /***************************************************************************** | 
|  | * 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 */ |