Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-bcmring/dma_device.c
10817 views
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 */
594
595