Path: blob/master/arch/arm/mach-bcmring/dma_device.c
10817 views
/*****************************************************************************1* Copyright 2004 - 2008 Broadcom Corporation. All rights reserved.2*3* Unless you and Broadcom execute a separate written software license4* agreement governing use of this software, this software is licensed to you5* under the terms of the GNU General Public License version 2, available at6* http://www.broadcom.com/licenses/GPLv2.php (the "GPL").7*8* Notwithstanding the above, under no circumstances may you combine this9* software in any way with any other Broadcom software provided under a10* license other than the GPL, without Broadcom's express prior written11* consent.12*****************************************************************************/1314/****************************************************************************/15/**16* @file dma_device.c17*18* @brief private array of DMA_DeviceAttribute_t19*/20/****************************************************************************/2122DMA_DeviceAttribute_t DMA_gDeviceAttribute[DMA_NUM_DEVICE_ENTRIES] = {23[DMA_DEVICE_MEM_TO_MEM] = /* MEM 2 MEM */24{25.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,26.name = "mem-to-mem",27.config = {28.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,29.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,30.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,31.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,32.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,33.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,34.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,35.errorInterrupt = dmacHw_INTERRUPT_ENABLE,36.channelPriority = dmacHw_CHANNEL_PRIORITY_7,37.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,38.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,3940},41},42[DMA_DEVICE_VPM_MEM_TO_MEM] = /* VPM */43{44.flags = DMA_DEVICE_FLAG_IS_DEDICATED | DMA_DEVICE_FLAG_NO_ISR,45.name = "vpm",46.dedicatedController = 0,47.dedicatedChannel = 0,48/* reserve DMA0:0 for VPM */49},50[DMA_DEVICE_NAND_MEM_TO_MEM] = /* NAND */51{52.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,53.name = "nand",54.config = {55.srcPeripheralPort = 0,56.dstPeripheralPort = 0,57.srcStatusRegisterAddress = 0x00000000,58.dstStatusRegisterAddress = 0x00000000,59.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,60.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,61.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,62.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,63.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,64.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,65.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,66.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,67.errorInterrupt = dmacHw_INTERRUPT_ENABLE,68.channelPriority = dmacHw_CHANNEL_PRIORITY_6,69},70},71[DMA_DEVICE_PIF_MEM_TO_DEV] = /* PIF TX */72{73.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA174| DMA_DEVICE_FLAG_ALLOW_LARGE_FIFO75| DMA_DEVICE_FLAG_ALLOC_DMA1_FIRST | DMA_DEVICE_FLAG_PORT_PER_DMAC,76.name = "pif_tx",77.dmacPort = {14, 5},78.config = {79.srcPeripheralPort = 0, /* SRC: memory */80/* dstPeripheralPort = 5 or 14 */81.srcStatusRegisterAddress = 0x00000000,82.dstStatusRegisterAddress = 0x00000000,83.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,84.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,85.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,86.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,87.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,88.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,89.errorInterrupt = dmacHw_INTERRUPT_ENABLE,90.channelPriority = dmacHw_CHANNEL_PRIORITY_7,91.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,92.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,93.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,94.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,95.maxDataPerBlock = 16256,96},97},98[DMA_DEVICE_PIF_DEV_TO_MEM] = /* PIF RX */99{100.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1101| DMA_DEVICE_FLAG_ALLOW_LARGE_FIFO102/* DMA_DEVICE_FLAG_ALLOC_DMA1_FIRST */103| DMA_DEVICE_FLAG_PORT_PER_DMAC,104.name = "pif_rx",105.dmacPort = {14, 5},106.config = {107/* srcPeripheralPort = 5 or 14 */108.dstPeripheralPort = 0, /* DST: memory */109.srcStatusRegisterAddress = 0x00000000,110.dstStatusRegisterAddress = 0x00000000,111.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,112.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,113.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,114.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,115.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,116.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,117.errorInterrupt = dmacHw_INTERRUPT_ENABLE,118.channelPriority = dmacHw_CHANNEL_PRIORITY_7,119.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,120.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,121.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,122.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,123.maxDataPerBlock = 16256,124},125},126[DMA_DEVICE_I2S0_DEV_TO_MEM] = /* I2S RX */127{128.flags = DMA_DEVICE_FLAG_ON_DMA0,129.name = "i2s0_rx",130.config = {131.srcPeripheralPort = 0, /* SRC: I2S0 */132.dstPeripheralPort = 0, /* DST: memory */133.srcStatusRegisterAddress = 0,134.dstStatusRegisterAddress = 0,135.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,136.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,137.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,138.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_16,139.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,140.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,141.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_0,142.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,143.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,144.errorInterrupt = dmacHw_INTERRUPT_ENABLE,145.channelPriority = dmacHw_CHANNEL_PRIORITY_7,146.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,147},148},149[DMA_DEVICE_I2S0_MEM_TO_DEV] = /* I2S TX */150{151.flags = DMA_DEVICE_FLAG_ON_DMA0,152.name = "i2s0_tx",153.config = {154.srcPeripheralPort = 0, /* SRC: memory */155.dstPeripheralPort = 1, /* DST: I2S0 */156.srcStatusRegisterAddress = 0,157.dstStatusRegisterAddress = 0,158.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,159.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,160.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,161.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,162.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_16,163.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_0,164.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,165.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,166.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,167.errorInterrupt = dmacHw_INTERRUPT_ENABLE,168.channelPriority = dmacHw_CHANNEL_PRIORITY_7,169.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,170},171},172[DMA_DEVICE_I2S1_DEV_TO_MEM] = /* I2S1 RX */173{174.flags = DMA_DEVICE_FLAG_ON_DMA1,175.name = "i2s1_rx",176.config = {177.srcPeripheralPort = 2, /* SRC: I2S1 */178.dstPeripheralPort = 0, /* DST: memory */179.srcStatusRegisterAddress = 0,180.dstStatusRegisterAddress = 0,181.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,182.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,183.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,184.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_16,185.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,186.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,187.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_0,188.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,189.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,190.errorInterrupt = dmacHw_INTERRUPT_ENABLE,191.channelPriority = dmacHw_CHANNEL_PRIORITY_7,192.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,193},194},195[DMA_DEVICE_I2S1_MEM_TO_DEV] = /* I2S1 TX */196{197.flags = DMA_DEVICE_FLAG_ON_DMA1,198.name = "i2s1_tx",199.config = {200.srcPeripheralPort = 0, /* SRC: memory */201.dstPeripheralPort = 3, /* DST: I2S1 */202.srcStatusRegisterAddress = 0,203.dstStatusRegisterAddress = 0,204.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,205.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,206.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,207.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,208.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_16,209.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_0,210.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,211.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,212.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,213.errorInterrupt = dmacHw_INTERRUPT_ENABLE,214.channelPriority = dmacHw_CHANNEL_PRIORITY_7,215.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,216},217},218[DMA_DEVICE_ESW_MEM_TO_DEV] = /* ESW TX */219{220.name = "esw_tx",221.flags = DMA_DEVICE_FLAG_IS_DEDICATED,222.dedicatedController = 1,223.dedicatedChannel = 3,224.config = {225.srcPeripheralPort = 0, /* SRC: memory */226.dstPeripheralPort = 1, /* DST: ESW (MTP) */227.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,228.errorInterrupt = dmacHw_INTERRUPT_DISABLE,229/* DMAx_AHB_SSTATARy */230.srcStatusRegisterAddress = 0x00000000,231/* DMAx_AHB_DSTATARy */232.dstStatusRegisterAddress = 0x30490010,233/* DMAx_AHB_CFGy */234.channelPriority = dmacHw_CHANNEL_PRIORITY_7,235/* DMAx_AHB_CTLy */236.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,237.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,238.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,239.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_0,240.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,241.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,242.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,243.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,244.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,245},246},247[DMA_DEVICE_ESW_DEV_TO_MEM] = /* ESW RX */248{249.name = "esw_rx",250.flags = DMA_DEVICE_FLAG_IS_DEDICATED,251.dedicatedController = 1,252.dedicatedChannel = 2,253.config = {254.srcPeripheralPort = 0, /* SRC: ESW (PTM) */255.dstPeripheralPort = 0, /* DST: memory */256.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,257.errorInterrupt = dmacHw_INTERRUPT_DISABLE,258/* DMAx_AHB_SSTATARy */259.srcStatusRegisterAddress = 0x30480010,260/* DMAx_AHB_DSTATARy */261.dstStatusRegisterAddress = 0x00000000,262/* DMAx_AHB_CFGy */263.channelPriority = dmacHw_CHANNEL_PRIORITY_7,264/* DMAx_AHB_CTLy */265.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,266.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,267.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,268.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,269.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_0,270.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,271.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,272.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,273.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,274},275},276[DMA_DEVICE_APM_CODEC_A_DEV_TO_MEM] = /* APM Codec A Ingress */277{278.flags = DMA_DEVICE_FLAG_ON_DMA0,279.name = "apm_a_rx",280.config = {281.srcPeripheralPort = 2, /* SRC: Codec A Ingress FIFO */282.dstPeripheralPort = 0, /* DST: memory */283.srcStatusRegisterAddress = 0x00000000,284.dstStatusRegisterAddress = 0x00000000,285.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,286.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,287.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,288.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,289.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,290.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,291.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,292.errorInterrupt = dmacHw_INTERRUPT_ENABLE,293.channelPriority = dmacHw_CHANNEL_PRIORITY_7,294.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,295.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,296.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,297.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,298.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,299},300},301[DMA_DEVICE_APM_CODEC_A_MEM_TO_DEV] = /* APM Codec A Egress */302{303.flags = DMA_DEVICE_FLAG_ON_DMA0,304.name = "apm_a_tx",305.config = {306.srcPeripheralPort = 0, /* SRC: memory */307.dstPeripheralPort = 3, /* DST: Codec A Egress FIFO */308.srcStatusRegisterAddress = 0x00000000,309.dstStatusRegisterAddress = 0x00000000,310.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,311.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,312.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,313.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,314.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,315.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,316.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,317.errorInterrupt = dmacHw_INTERRUPT_ENABLE,318.channelPriority = dmacHw_CHANNEL_PRIORITY_7,319.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,320.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,321.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,322.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,323.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,324},325},326[DMA_DEVICE_APM_CODEC_B_DEV_TO_MEM] = /* APM Codec B Ingress */327{328.flags = DMA_DEVICE_FLAG_ON_DMA0,329.name = "apm_b_rx",330.config = {331.srcPeripheralPort = 4, /* SRC: Codec B Ingress FIFO */332.dstPeripheralPort = 0, /* DST: memory */333.srcStatusRegisterAddress = 0x00000000,334.dstStatusRegisterAddress = 0x00000000,335.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,336.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,337.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,338.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,339.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,340.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,341.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,342.errorInterrupt = dmacHw_INTERRUPT_ENABLE,343.channelPriority = dmacHw_CHANNEL_PRIORITY_7,344.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,345.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,346.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,347.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,348.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,349},350},351[DMA_DEVICE_APM_CODEC_B_MEM_TO_DEV] = /* APM Codec B Egress */352{353.flags = DMA_DEVICE_FLAG_ON_DMA0,354.name = "apm_b_tx",355.config = {356.srcPeripheralPort = 0, /* SRC: memory */357.dstPeripheralPort = 5, /* DST: Codec B Egress FIFO */358.srcStatusRegisterAddress = 0x00000000,359.dstStatusRegisterAddress = 0x00000000,360.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,361.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,362.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,363.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,364.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,365.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,366.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,367.errorInterrupt = dmacHw_INTERRUPT_ENABLE,368.channelPriority = dmacHw_CHANNEL_PRIORITY_7,369.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,370.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,371.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,372.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,373.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,374},375},376[DMA_DEVICE_APM_CODEC_C_DEV_TO_MEM] = /* APM Codec C Ingress */377{378.flags = DMA_DEVICE_FLAG_ON_DMA1,379.name = "apm_c_rx",380.config = {381.srcPeripheralPort = 4, /* SRC: Codec C Ingress FIFO */382.dstPeripheralPort = 0, /* DST: memory */383.srcStatusRegisterAddress = 0x00000000,384.dstStatusRegisterAddress = 0x00000000,385.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,386.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,387.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,388.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,389.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,390.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,391.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,392.errorInterrupt = dmacHw_INTERRUPT_ENABLE,393.channelPriority = dmacHw_CHANNEL_PRIORITY_7,394.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,395.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,396.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,397.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,398.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,399},400},401[DMA_DEVICE_APM_PCM0_DEV_TO_MEM] = /* PCM0 RX */402{403.flags = DMA_DEVICE_FLAG_ON_DMA0,404.name = "pcm0_rx",405.config = {406.srcPeripheralPort = 12, /* SRC: PCM0 */407.dstPeripheralPort = 0, /* DST: memory */408.srcStatusRegisterAddress = 0,409.dstStatusRegisterAddress = 0,410.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,411.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,412.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,413.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,414.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,415.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,416.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,417.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,418.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,419.errorInterrupt = dmacHw_INTERRUPT_ENABLE,420.channelPriority = dmacHw_CHANNEL_PRIORITY_7,421.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,422},423},424[DMA_DEVICE_APM_PCM0_MEM_TO_DEV] = /* PCM0 TX */425{426.flags = DMA_DEVICE_FLAG_ON_DMA0,427.name = "pcm0_tx",428.config = {429.srcPeripheralPort = 0, /* SRC: memory */430.dstPeripheralPort = 13, /* DST: PCM0 */431.srcStatusRegisterAddress = 0,432.dstStatusRegisterAddress = 0,433.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,434.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,435.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,436.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,437.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,438.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,439.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,440.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,441.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,442.errorInterrupt = dmacHw_INTERRUPT_ENABLE,443.channelPriority = dmacHw_CHANNEL_PRIORITY_7,444.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,445},446},447[DMA_DEVICE_APM_PCM1_DEV_TO_MEM] = /* PCM1 RX */448{449.flags = DMA_DEVICE_FLAG_ON_DMA1,450.name = "pcm1_rx",451.config = {452.srcPeripheralPort = 14, /* SRC: PCM1 */453.dstPeripheralPort = 0, /* DST: memory */454.srcStatusRegisterAddress = 0,455.dstStatusRegisterAddress = 0,456.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,457.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,458.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,459.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,460.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,461.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,462.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_4,463.blockTransferInterrupt = dmacHw_INTERRUPT_ENABLE,464.completeTransferInterrupt = dmacHw_INTERRUPT_DISABLE,465.errorInterrupt = dmacHw_INTERRUPT_ENABLE,466.channelPriority = dmacHw_CHANNEL_PRIORITY_7,467.transferMode = dmacHw_TRANSFER_MODE_CONTINUOUS,468},469},470[DMA_DEVICE_APM_PCM1_MEM_TO_DEV] = /* PCM1 TX */471{472.flags = DMA_DEVICE_FLAG_ON_DMA1,473.name = "pcm1_tx",474.config = {475.srcPeripheralPort = 0, /* SRC: memory */476.dstPeripheralPort = 15, /* DST: PCM1 */477.srcStatusRegisterAddress = 0,478.dstStatusRegisterAddress = 0,479.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,480.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,481.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,482.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,483.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,484.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_4,485.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,486.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,487.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,488.errorInterrupt = dmacHw_INTERRUPT_ENABLE,489.channelPriority = dmacHw_CHANNEL_PRIORITY_7,490.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,491},492},493[DMA_DEVICE_SPUM_DEV_TO_MEM] = /* SPUM RX */494{495.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,496.name = "spum_rx",497.config = {498.srcPeripheralPort = 6, /* SRC: Codec A Ingress FIFO */499.dstPeripheralPort = 0, /* DST: memory */500.srcStatusRegisterAddress = 0x00000000,501.dstStatusRegisterAddress = 0x00000000,502.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,503.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,504.transferType = dmacHw_TRANSFER_TYPE_PERIPHERAL_TO_MEM,505.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,506.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,507.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,508.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,509.errorInterrupt = dmacHw_INTERRUPT_ENABLE,510.channelPriority = dmacHw_CHANNEL_PRIORITY_7,511.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,512.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,513/* Busrt size **MUST** be 16 for SPUM to work */514.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_16,515.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_16,516.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,517/* on the RX side, SPU needs to be the flow controller */518.flowControler = dmacHw_FLOW_CONTROL_PERIPHERAL,519},520},521[DMA_DEVICE_SPUM_MEM_TO_DEV] = /* SPUM TX */522{523.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,524.name = "spum_tx",525.config = {526.srcPeripheralPort = 0, /* SRC: memory */527.dstPeripheralPort = 7, /* DST: SPUM */528.srcStatusRegisterAddress = 0x00000000,529.dstStatusRegisterAddress = 0x00000000,530.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,531.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,532.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_PERIPHERAL,533.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,534.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,535.blockTransferInterrupt = dmacHw_INTERRUPT_DISABLE,536.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,537.errorInterrupt = dmacHw_INTERRUPT_ENABLE,538.channelPriority = dmacHw_CHANNEL_PRIORITY_7,539.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_32,540.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_32,541/* Busrt size **MUST** be 16 for SPUM to work */542.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_16,543.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_16,544.transferMode = dmacHw_TRANSFER_MODE_PERREQUEST,545},546},547[DMA_DEVICE_MEM_TO_VRAM] = /* MEM 2 VRAM */548{549.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,550.name = "mem-to-vram",551.config = {552.srcPeripheralPort = 0, /* SRC: memory */553.srcStatusRegisterAddress = 0x00000000,554.dstStatusRegisterAddress = 0x00000000,555.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,556.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,557.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,558.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_1,559.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_2,560.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,561.errorInterrupt = dmacHw_INTERRUPT_ENABLE,562.channelPriority = dmacHw_CHANNEL_PRIORITY_7,563.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,564.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,565.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,566.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,567},568},569[DMA_DEVICE_VRAM_TO_MEM] = /* VRAM 2 MEM */570{571.flags = DMA_DEVICE_FLAG_ON_DMA0 | DMA_DEVICE_FLAG_ON_DMA1,572.name = "vram-to-mem",573.config = {574.dstPeripheralPort = 0, /* DST: memory */575.srcStatusRegisterAddress = 0x00000000,576.dstStatusRegisterAddress = 0x00000000,577.srcUpdate = dmacHw_SRC_ADDRESS_UPDATE_MODE_INC,578.dstUpdate = dmacHw_DST_ADDRESS_UPDATE_MODE_INC,579.transferType = dmacHw_TRANSFER_TYPE_MEM_TO_MEM,580.srcMasterInterface = dmacHw_SRC_MASTER_INTERFACE_2,581.dstMasterInterface = dmacHw_DST_MASTER_INTERFACE_1,582.completeTransferInterrupt = dmacHw_INTERRUPT_ENABLE,583.errorInterrupt = dmacHw_INTERRUPT_ENABLE,584.channelPriority = dmacHw_CHANNEL_PRIORITY_7,585.srcMaxTransactionWidth = dmacHw_SRC_TRANSACTION_WIDTH_64,586.dstMaxTransactionWidth = dmacHw_DST_TRANSACTION_WIDTH_64,587.srcMaxBurstWidth = dmacHw_SRC_BURST_WIDTH_8,588.dstMaxBurstWidth = dmacHw_DST_BURST_WIDTH_8,589},590},591};592EXPORT_SYMBOL(DMA_gDeviceAttribute); /* primarily for dma-test.c */593594595