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