3 * arch/arm/mach-u300/core.c
6 * Copyright (C) 2007-2012 ST-Ericsson SA
7 * License terms: GNU General Public License (GPL) version 2
8 * Core platform support, IRQ handling and device definitions.
9 * Author: Linus Walleij <linus.walleij@stericsson.com>
11 #include <linux/kernel.h>
12 #include <linux/init.h>
13 #include <linux/spinlock.h>
14 #include <linux/interrupt.h>
15 #include <linux/bitops.h>
16 #include <linux/device.h>
18 #include <linux/termios.h>
19 #include <linux/dmaengine.h>
20 #include <linux/amba/bus.h>
21 #include <linux/amba/mmci.h>
22 #include <linux/amba/serial.h>
23 #include <linux/platform_device.h>
24 #include <linux/gpio.h>
25 #include <linux/clk.h>
26 #include <linux/err.h>
27 #include <linux/mtd/nand.h>
28 #include <linux/mtd/fsmc.h>
29 #include <linux/pinctrl/machine.h>
30 #include <linux/pinctrl/pinconf-generic.h>
31 #include <linux/dma-mapping.h>
32 #include <linux/platform_data/clk-u300.h>
33 #include <linux/platform_data/pinctrl-coh901.h>
35 #include <asm/types.h>
36 #include <asm/setup.h>
37 #include <asm/memory.h>
38 #include <asm/hardware/vic.h>
39 #include <asm/mach/map.h>
40 #include <asm/mach-types.h>
41 #include <asm/mach/arch.h>
43 #include <mach/coh901318.h>
44 #include <mach/hardware.h>
45 #include <mach/syscon.h>
46 #include <mach/irqs.h>
51 #include "u300-gpio.h"
52 #include "dma_channels.h"
55 * Static I/O mappings that are needed for booting the U300 platforms. The
56 * only things we need are the areas where we find the timer, syscon and
57 * intcon, since the remaining device drivers will map their own memory
58 * physical to virtual as the need arise.
60 static struct map_desc u300_io_desc
[] __initdata
= {
62 .virtual = U300_SLOW_PER_VIRT_BASE
,
63 .pfn
= __phys_to_pfn(U300_SLOW_PER_PHYS_BASE
),
68 .virtual = U300_AHB_PER_VIRT_BASE
,
69 .pfn
= __phys_to_pfn(U300_AHB_PER_PHYS_BASE
),
74 .virtual = U300_FAST_PER_VIRT_BASE
,
75 .pfn
= __phys_to_pfn(U300_FAST_PER_PHYS_BASE
),
81 static void __init
u300_map_io(void)
83 iotable_init(u300_io_desc
, ARRAY_SIZE(u300_io_desc
));
87 * Declaration of devices found on the U300 board and
88 * their respective memory locations.
91 static struct amba_pl011_data uart0_plat_data
= {
92 #ifdef CONFIG_COH901318
93 .dma_filter
= coh901318_filter_id
,
94 .dma_rx_param
= (void *) U300_DMA_UART0_RX
,
95 .dma_tx_param
= (void *) U300_DMA_UART0_TX
,
99 /* Slow device at 0x3000 offset */
100 static AMBA_APB_DEVICE(uart0
, "uart0", 0, U300_UART0_BASE
,
101 { IRQ_U300_UART0
}, &uart0_plat_data
);
103 /* The U335 have an additional UART1 on the APP CPU */
104 static struct amba_pl011_data uart1_plat_data
= {
105 #ifdef CONFIG_COH901318
106 .dma_filter
= coh901318_filter_id
,
107 .dma_rx_param
= (void *) U300_DMA_UART1_RX
,
108 .dma_tx_param
= (void *) U300_DMA_UART1_TX
,
112 /* Fast device at 0x7000 offset */
113 static AMBA_APB_DEVICE(uart1
, "uart1", 0, U300_UART1_BASE
,
114 { IRQ_U300_UART1
}, &uart1_plat_data
);
116 /* AHB device at 0x4000 offset */
117 static AMBA_APB_DEVICE(pl172
, "pl172", 0, U300_EMIF_CFG_BASE
, { }, NULL
);
119 /* Fast device at 0x6000 offset */
120 static AMBA_APB_DEVICE(pl022
, "pl022", 0, U300_SPI_BASE
,
121 { IRQ_U300_SPI
}, NULL
);
123 /* Fast device at 0x1000 offset */
124 #define U300_MMCSD_IRQS { IRQ_U300_MMCSD_MCIINTR0, IRQ_U300_MMCSD_MCIINTR1 }
126 static struct mmci_platform_data mmcsd_platform_data
= {
128 * Do not set ocr_mask or voltage translation function,
129 * we have a regulator we can control instead.
133 .gpio_cd
= U300_GPIO_PIN_MMC_CD
,
135 .capabilities
= MMC_CAP_MMC_HIGHSPEED
|
136 MMC_CAP_SD_HIGHSPEED
| MMC_CAP_4_BIT_DATA
| MMC_CAP_8_BIT_DATA
,
137 #ifdef CONFIG_COH901318
138 .dma_filter
= coh901318_filter_id
,
139 .dma_rx_param
= (void *) U300_DMA_MMCSD_RX_TX
,
140 /* Don't specify a TX channel, this RX channel is bidirectional */
144 static AMBA_APB_DEVICE(mmcsd
, "mmci", 0, U300_MMCSD_BASE
,
145 U300_MMCSD_IRQS
, &mmcsd_platform_data
);
148 * The order of device declaration may be important, since some devices
149 * have dependencies on other devices being initialized first.
151 static struct amba_device
*amba_devs
[] __initdata
= {
159 /* Here follows a list of all hw resources that the platform devices
160 * allocate. Note, clock dependencies are not included
163 static struct resource gpio_resources
[] = {
165 .start
= U300_GPIO_BASE
,
166 .end
= (U300_GPIO_BASE
+ SZ_4K
- 1),
167 .flags
= IORESOURCE_MEM
,
171 .start
= IRQ_U300_GPIO_PORT0
,
172 .end
= IRQ_U300_GPIO_PORT0
,
173 .flags
= IORESOURCE_IRQ
,
177 .start
= IRQ_U300_GPIO_PORT1
,
178 .end
= IRQ_U300_GPIO_PORT1
,
179 .flags
= IORESOURCE_IRQ
,
183 .start
= IRQ_U300_GPIO_PORT2
,
184 .end
= IRQ_U300_GPIO_PORT2
,
185 .flags
= IORESOURCE_IRQ
,
189 .start
= IRQ_U300_GPIO_PORT3
,
190 .end
= IRQ_U300_GPIO_PORT3
,
191 .flags
= IORESOURCE_IRQ
,
195 .start
= IRQ_U300_GPIO_PORT4
,
196 .end
= IRQ_U300_GPIO_PORT4
,
197 .flags
= IORESOURCE_IRQ
,
201 .start
= IRQ_U300_GPIO_PORT5
,
202 .end
= IRQ_U300_GPIO_PORT5
,
203 .flags
= IORESOURCE_IRQ
,
207 .start
= IRQ_U300_GPIO_PORT6
,
208 .end
= IRQ_U300_GPIO_PORT6
,
209 .flags
= IORESOURCE_IRQ
,
213 static struct resource keypad_resources
[] = {
215 .start
= U300_KEYPAD_BASE
,
216 .end
= U300_KEYPAD_BASE
+ SZ_4K
- 1,
217 .flags
= IORESOURCE_MEM
,
220 .name
= "coh901461-press",
221 .start
= IRQ_U300_KEYPAD_KEYBF
,
222 .end
= IRQ_U300_KEYPAD_KEYBF
,
223 .flags
= IORESOURCE_IRQ
,
226 .name
= "coh901461-release",
227 .start
= IRQ_U300_KEYPAD_KEYBR
,
228 .end
= IRQ_U300_KEYPAD_KEYBR
,
229 .flags
= IORESOURCE_IRQ
,
233 static struct resource rtc_resources
[] = {
235 .start
= U300_RTC_BASE
,
236 .end
= U300_RTC_BASE
+ SZ_4K
- 1,
237 .flags
= IORESOURCE_MEM
,
240 .start
= IRQ_U300_RTC
,
242 .flags
= IORESOURCE_IRQ
,
247 * Fsmc does have IRQs: #43 and #44 (NFIF and NFIF2)
248 * but these are not yet used by the driver.
250 static struct resource fsmc_resources
[] = {
253 .start
= U300_NAND_CS0_PHYS_BASE
+ PLAT_NAND_ALE
,
254 .end
= U300_NAND_CS0_PHYS_BASE
+ PLAT_NAND_ALE
+ SZ_16K
- 1,
255 .flags
= IORESOURCE_MEM
,
259 .start
= U300_NAND_CS0_PHYS_BASE
+ PLAT_NAND_CLE
,
260 .end
= U300_NAND_CS0_PHYS_BASE
+ PLAT_NAND_CLE
+ SZ_16K
- 1,
261 .flags
= IORESOURCE_MEM
,
265 .start
= U300_NAND_CS0_PHYS_BASE
,
266 .end
= U300_NAND_CS0_PHYS_BASE
+ SZ_16K
- 1,
267 .flags
= IORESOURCE_MEM
,
271 .start
= U300_NAND_IF_PHYS_BASE
,
272 .end
= U300_NAND_IF_PHYS_BASE
+ SZ_4K
- 1,
273 .flags
= IORESOURCE_MEM
,
277 static struct resource i2c0_resources
[] = {
279 .start
= U300_I2C0_BASE
,
280 .end
= U300_I2C0_BASE
+ SZ_4K
- 1,
281 .flags
= IORESOURCE_MEM
,
284 .start
= IRQ_U300_I2C0
,
285 .end
= IRQ_U300_I2C0
,
286 .flags
= IORESOURCE_IRQ
,
290 static struct resource i2c1_resources
[] = {
292 .start
= U300_I2C1_BASE
,
293 .end
= U300_I2C1_BASE
+ SZ_4K
- 1,
294 .flags
= IORESOURCE_MEM
,
297 .start
= IRQ_U300_I2C1
,
298 .end
= IRQ_U300_I2C1
,
299 .flags
= IORESOURCE_IRQ
,
304 static struct resource wdog_resources
[] = {
306 .start
= U300_WDOG_BASE
,
307 .end
= U300_WDOG_BASE
+ SZ_4K
- 1,
308 .flags
= IORESOURCE_MEM
,
311 .start
= IRQ_U300_WDOG
,
312 .end
= IRQ_U300_WDOG
,
313 .flags
= IORESOURCE_IRQ
,
317 static struct resource dma_resource
[] = {
319 .start
= U300_DMAC_BASE
,
320 .end
= U300_DMAC_BASE
+ PAGE_SIZE
- 1,
321 .flags
= IORESOURCE_MEM
,
324 .start
= IRQ_U300_DMA
,
326 .flags
= IORESOURCE_IRQ
,
330 /* points out all dma slave channels.
331 * Syntax is [A1, B1, A2, B2, .... ,-1,-1]
332 * Select all channels from A to B, end of list is marked with -1,-1
334 static int dma_slave_channels
[] = {
335 U300_DMA_MSL_TX_0
, U300_DMA_SPI_RX
,
336 U300_DMA_UART1_TX
, U300_DMA_UART1_RX
, -1, -1};
338 /* points out all dma memcpy channels. */
339 static int dma_memcpy_channels
[] = {
340 U300_DMA_GENERAL_PURPOSE_0
, U300_DMA_GENERAL_PURPOSE_8
, -1, -1};
342 /** register dma for memory access
344 * active 1 means dma intends to access memory
345 * 0 means dma wont access memory
347 static void coh901318_access_memory_state(struct device
*dev
, bool active
)
351 #define flags_memcpy_config (COH901318_CX_CFG_CH_DISABLE | \
352 COH901318_CX_CFG_RM_MEMORY_TO_MEMORY | \
353 COH901318_CX_CFG_LCR_DISABLE | \
354 COH901318_CX_CFG_TC_IRQ_ENABLE | \
355 COH901318_CX_CFG_BE_IRQ_ENABLE)
356 #define flags_memcpy_lli_chained (COH901318_CX_CTRL_TC_ENABLE | \
357 COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
358 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
359 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
360 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
361 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
362 COH901318_CX_CTRL_MASTER_MODE_M1RW | \
363 COH901318_CX_CTRL_TCP_DISABLE | \
364 COH901318_CX_CTRL_TC_IRQ_DISABLE | \
365 COH901318_CX_CTRL_HSP_DISABLE | \
366 COH901318_CX_CTRL_HSS_DISABLE | \
367 COH901318_CX_CTRL_DDMA_LEGACY | \
368 COH901318_CX_CTRL_PRDD_SOURCE)
369 #define flags_memcpy_lli (COH901318_CX_CTRL_TC_ENABLE | \
370 COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
371 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
372 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
373 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
374 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
375 COH901318_CX_CTRL_MASTER_MODE_M1RW | \
376 COH901318_CX_CTRL_TCP_DISABLE | \
377 COH901318_CX_CTRL_TC_IRQ_DISABLE | \
378 COH901318_CX_CTRL_HSP_DISABLE | \
379 COH901318_CX_CTRL_HSS_DISABLE | \
380 COH901318_CX_CTRL_DDMA_LEGACY | \
381 COH901318_CX_CTRL_PRDD_SOURCE)
382 #define flags_memcpy_lli_last (COH901318_CX_CTRL_TC_ENABLE | \
383 COH901318_CX_CTRL_BURST_COUNT_32_BYTES | \
384 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS | \
385 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE | \
386 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS | \
387 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE | \
388 COH901318_CX_CTRL_MASTER_MODE_M1RW | \
389 COH901318_CX_CTRL_TCP_DISABLE | \
390 COH901318_CX_CTRL_TC_IRQ_ENABLE | \
391 COH901318_CX_CTRL_HSP_DISABLE | \
392 COH901318_CX_CTRL_HSS_DISABLE | \
393 COH901318_CX_CTRL_DDMA_LEGACY | \
394 COH901318_CX_CTRL_PRDD_SOURCE)
396 const struct coh_dma_channel chan_config
[U300_DMA_CHANNELS
] = {
398 .number
= U300_DMA_MSL_TX_0
,
401 .dev_addr
= U300_MSL_BASE
+ 0 * 0x40 + 0x20,
404 .number
= U300_DMA_MSL_TX_1
,
407 .dev_addr
= U300_MSL_BASE
+ 1 * 0x40 + 0x20,
408 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
409 COH901318_CX_CFG_LCR_DISABLE
|
410 COH901318_CX_CFG_TC_IRQ_ENABLE
|
411 COH901318_CX_CFG_BE_IRQ_ENABLE
,
412 .param
.ctrl_lli_chained
= 0 |
413 COH901318_CX_CTRL_TC_ENABLE
|
414 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
415 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
416 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
417 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
418 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
419 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
420 COH901318_CX_CTRL_TCP_DISABLE
|
421 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
422 COH901318_CX_CTRL_HSP_ENABLE
|
423 COH901318_CX_CTRL_HSS_DISABLE
|
424 COH901318_CX_CTRL_DDMA_LEGACY
|
425 COH901318_CX_CTRL_PRDD_SOURCE
,
426 .param
.ctrl_lli
= 0 |
427 COH901318_CX_CTRL_TC_ENABLE
|
428 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
429 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
430 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
431 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
432 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
433 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
434 COH901318_CX_CTRL_TCP_ENABLE
|
435 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
436 COH901318_CX_CTRL_HSP_ENABLE
|
437 COH901318_CX_CTRL_HSS_DISABLE
|
438 COH901318_CX_CTRL_DDMA_LEGACY
|
439 COH901318_CX_CTRL_PRDD_SOURCE
,
440 .param
.ctrl_lli_last
= 0 |
441 COH901318_CX_CTRL_TC_ENABLE
|
442 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
443 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
444 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
445 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
446 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
447 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
448 COH901318_CX_CTRL_TCP_ENABLE
|
449 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
450 COH901318_CX_CTRL_HSP_ENABLE
|
451 COH901318_CX_CTRL_HSS_DISABLE
|
452 COH901318_CX_CTRL_DDMA_LEGACY
|
453 COH901318_CX_CTRL_PRDD_SOURCE
,
456 .number
= U300_DMA_MSL_TX_2
,
459 .dev_addr
= U300_MSL_BASE
+ 2 * 0x40 + 0x20,
460 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
461 COH901318_CX_CFG_LCR_DISABLE
|
462 COH901318_CX_CFG_TC_IRQ_ENABLE
|
463 COH901318_CX_CFG_BE_IRQ_ENABLE
,
464 .param
.ctrl_lli_chained
= 0 |
465 COH901318_CX_CTRL_TC_ENABLE
|
466 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
467 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
468 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
469 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
470 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
471 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
472 COH901318_CX_CTRL_TCP_DISABLE
|
473 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
474 COH901318_CX_CTRL_HSP_ENABLE
|
475 COH901318_CX_CTRL_HSS_DISABLE
|
476 COH901318_CX_CTRL_DDMA_LEGACY
|
477 COH901318_CX_CTRL_PRDD_SOURCE
,
478 .param
.ctrl_lli
= 0 |
479 COH901318_CX_CTRL_TC_ENABLE
|
480 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
481 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
482 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
483 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
484 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
485 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
486 COH901318_CX_CTRL_TCP_ENABLE
|
487 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
488 COH901318_CX_CTRL_HSP_ENABLE
|
489 COH901318_CX_CTRL_HSS_DISABLE
|
490 COH901318_CX_CTRL_DDMA_LEGACY
|
491 COH901318_CX_CTRL_PRDD_SOURCE
,
492 .param
.ctrl_lli_last
= 0 |
493 COH901318_CX_CTRL_TC_ENABLE
|
494 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
495 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
496 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
497 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
498 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
499 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
500 COH901318_CX_CTRL_TCP_ENABLE
|
501 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
502 COH901318_CX_CTRL_HSP_ENABLE
|
503 COH901318_CX_CTRL_HSS_DISABLE
|
504 COH901318_CX_CTRL_DDMA_LEGACY
|
505 COH901318_CX_CTRL_PRDD_SOURCE
,
509 .number
= U300_DMA_MSL_TX_3
,
512 .dev_addr
= U300_MSL_BASE
+ 3 * 0x40 + 0x20,
513 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
514 COH901318_CX_CFG_LCR_DISABLE
|
515 COH901318_CX_CFG_TC_IRQ_ENABLE
|
516 COH901318_CX_CFG_BE_IRQ_ENABLE
,
517 .param
.ctrl_lli_chained
= 0 |
518 COH901318_CX_CTRL_TC_ENABLE
|
519 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
520 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
521 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
522 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
523 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
524 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
525 COH901318_CX_CTRL_TCP_DISABLE
|
526 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
527 COH901318_CX_CTRL_HSP_ENABLE
|
528 COH901318_CX_CTRL_HSS_DISABLE
|
529 COH901318_CX_CTRL_DDMA_LEGACY
|
530 COH901318_CX_CTRL_PRDD_SOURCE
,
531 .param
.ctrl_lli
= 0 |
532 COH901318_CX_CTRL_TC_ENABLE
|
533 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
534 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
535 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
536 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
537 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
538 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
539 COH901318_CX_CTRL_TCP_ENABLE
|
540 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
541 COH901318_CX_CTRL_HSP_ENABLE
|
542 COH901318_CX_CTRL_HSS_DISABLE
|
543 COH901318_CX_CTRL_DDMA_LEGACY
|
544 COH901318_CX_CTRL_PRDD_SOURCE
,
545 .param
.ctrl_lli_last
= 0 |
546 COH901318_CX_CTRL_TC_ENABLE
|
547 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
548 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
549 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
550 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
551 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
552 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
553 COH901318_CX_CTRL_TCP_ENABLE
|
554 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
555 COH901318_CX_CTRL_HSP_ENABLE
|
556 COH901318_CX_CTRL_HSS_DISABLE
|
557 COH901318_CX_CTRL_DDMA_LEGACY
|
558 COH901318_CX_CTRL_PRDD_SOURCE
,
561 .number
= U300_DMA_MSL_TX_4
,
564 .dev_addr
= U300_MSL_BASE
+ 4 * 0x40 + 0x20,
565 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
566 COH901318_CX_CFG_LCR_DISABLE
|
567 COH901318_CX_CFG_TC_IRQ_ENABLE
|
568 COH901318_CX_CFG_BE_IRQ_ENABLE
,
569 .param
.ctrl_lli_chained
= 0 |
570 COH901318_CX_CTRL_TC_ENABLE
|
571 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
572 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
573 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
574 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
575 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
576 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
577 COH901318_CX_CTRL_TCP_DISABLE
|
578 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
579 COH901318_CX_CTRL_HSP_ENABLE
|
580 COH901318_CX_CTRL_HSS_DISABLE
|
581 COH901318_CX_CTRL_DDMA_LEGACY
|
582 COH901318_CX_CTRL_PRDD_SOURCE
,
583 .param
.ctrl_lli
= 0 |
584 COH901318_CX_CTRL_TC_ENABLE
|
585 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
586 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
587 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
588 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
589 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
590 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
591 COH901318_CX_CTRL_TCP_ENABLE
|
592 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
593 COH901318_CX_CTRL_HSP_ENABLE
|
594 COH901318_CX_CTRL_HSS_DISABLE
|
595 COH901318_CX_CTRL_DDMA_LEGACY
|
596 COH901318_CX_CTRL_PRDD_SOURCE
,
597 .param
.ctrl_lli_last
= 0 |
598 COH901318_CX_CTRL_TC_ENABLE
|
599 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
600 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
601 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
602 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
603 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
604 COH901318_CX_CTRL_MASTER_MODE_M1R_M2W
|
605 COH901318_CX_CTRL_TCP_ENABLE
|
606 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
607 COH901318_CX_CTRL_HSP_ENABLE
|
608 COH901318_CX_CTRL_HSS_DISABLE
|
609 COH901318_CX_CTRL_DDMA_LEGACY
|
610 COH901318_CX_CTRL_PRDD_SOURCE
,
613 .number
= U300_DMA_MSL_TX_5
,
616 .dev_addr
= U300_MSL_BASE
+ 5 * 0x40 + 0x20,
619 .number
= U300_DMA_MSL_TX_6
,
622 .dev_addr
= U300_MSL_BASE
+ 6 * 0x40 + 0x20,
625 .number
= U300_DMA_MSL_RX_0
,
628 .dev_addr
= U300_MSL_BASE
+ 0 * 0x40 + 0x220,
631 .number
= U300_DMA_MSL_RX_1
,
634 .dev_addr
= U300_MSL_BASE
+ 1 * 0x40 + 0x220,
635 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
636 COH901318_CX_CFG_LCR_DISABLE
|
637 COH901318_CX_CFG_TC_IRQ_ENABLE
|
638 COH901318_CX_CFG_BE_IRQ_ENABLE
,
639 .param
.ctrl_lli_chained
= 0 |
640 COH901318_CX_CTRL_TC_ENABLE
|
641 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
642 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
643 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
644 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
645 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
646 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
647 COH901318_CX_CTRL_TCP_DISABLE
|
648 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
649 COH901318_CX_CTRL_HSP_ENABLE
|
650 COH901318_CX_CTRL_HSS_DISABLE
|
651 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
652 COH901318_CX_CTRL_PRDD_DEST
,
654 .param
.ctrl_lli_last
= 0 |
655 COH901318_CX_CTRL_TC_ENABLE
|
656 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
657 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
658 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
659 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
660 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
661 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
662 COH901318_CX_CTRL_TCP_DISABLE
|
663 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
664 COH901318_CX_CTRL_HSP_ENABLE
|
665 COH901318_CX_CTRL_HSS_DISABLE
|
666 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
667 COH901318_CX_CTRL_PRDD_DEST
,
670 .number
= U300_DMA_MSL_RX_2
,
673 .dev_addr
= U300_MSL_BASE
+ 2 * 0x40 + 0x220,
674 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
675 COH901318_CX_CFG_LCR_DISABLE
|
676 COH901318_CX_CFG_TC_IRQ_ENABLE
|
677 COH901318_CX_CFG_BE_IRQ_ENABLE
,
678 .param
.ctrl_lli_chained
= 0 |
679 COH901318_CX_CTRL_TC_ENABLE
|
680 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
681 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
682 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
683 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
684 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
685 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
686 COH901318_CX_CTRL_TCP_DISABLE
|
687 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
688 COH901318_CX_CTRL_HSP_ENABLE
|
689 COH901318_CX_CTRL_HSS_DISABLE
|
690 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
691 COH901318_CX_CTRL_PRDD_DEST
,
692 .param
.ctrl_lli
= 0 |
693 COH901318_CX_CTRL_TC_ENABLE
|
694 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
695 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
696 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
697 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
698 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
699 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
700 COH901318_CX_CTRL_TCP_DISABLE
|
701 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
702 COH901318_CX_CTRL_HSP_ENABLE
|
703 COH901318_CX_CTRL_HSS_DISABLE
|
704 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
705 COH901318_CX_CTRL_PRDD_DEST
,
706 .param
.ctrl_lli_last
= 0 |
707 COH901318_CX_CTRL_TC_ENABLE
|
708 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
709 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
710 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
711 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
712 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
713 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
714 COH901318_CX_CTRL_TCP_DISABLE
|
715 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
716 COH901318_CX_CTRL_HSP_ENABLE
|
717 COH901318_CX_CTRL_HSS_DISABLE
|
718 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
719 COH901318_CX_CTRL_PRDD_DEST
,
722 .number
= U300_DMA_MSL_RX_3
,
725 .dev_addr
= U300_MSL_BASE
+ 3 * 0x40 + 0x220,
726 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
727 COH901318_CX_CFG_LCR_DISABLE
|
728 COH901318_CX_CFG_TC_IRQ_ENABLE
|
729 COH901318_CX_CFG_BE_IRQ_ENABLE
,
730 .param
.ctrl_lli_chained
= 0 |
731 COH901318_CX_CTRL_TC_ENABLE
|
732 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
733 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
734 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
735 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
736 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
737 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
738 COH901318_CX_CTRL_TCP_DISABLE
|
739 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
740 COH901318_CX_CTRL_HSP_ENABLE
|
741 COH901318_CX_CTRL_HSS_DISABLE
|
742 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
743 COH901318_CX_CTRL_PRDD_DEST
,
744 .param
.ctrl_lli
= 0 |
745 COH901318_CX_CTRL_TC_ENABLE
|
746 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
747 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
748 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
749 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
750 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
751 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
752 COH901318_CX_CTRL_TCP_DISABLE
|
753 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
754 COH901318_CX_CTRL_HSP_ENABLE
|
755 COH901318_CX_CTRL_HSS_DISABLE
|
756 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
757 COH901318_CX_CTRL_PRDD_DEST
,
758 .param
.ctrl_lli_last
= 0 |
759 COH901318_CX_CTRL_TC_ENABLE
|
760 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
761 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
762 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
763 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
764 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
765 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
766 COH901318_CX_CTRL_TCP_DISABLE
|
767 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
768 COH901318_CX_CTRL_HSP_ENABLE
|
769 COH901318_CX_CTRL_HSS_DISABLE
|
770 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
771 COH901318_CX_CTRL_PRDD_DEST
,
774 .number
= U300_DMA_MSL_RX_4
,
777 .dev_addr
= U300_MSL_BASE
+ 4 * 0x40 + 0x220,
778 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
779 COH901318_CX_CFG_LCR_DISABLE
|
780 COH901318_CX_CFG_TC_IRQ_ENABLE
|
781 COH901318_CX_CFG_BE_IRQ_ENABLE
,
782 .param
.ctrl_lli_chained
= 0 |
783 COH901318_CX_CTRL_TC_ENABLE
|
784 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
785 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
786 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
787 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
788 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
789 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
790 COH901318_CX_CTRL_TCP_DISABLE
|
791 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
792 COH901318_CX_CTRL_HSP_ENABLE
|
793 COH901318_CX_CTRL_HSS_DISABLE
|
794 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
795 COH901318_CX_CTRL_PRDD_DEST
,
796 .param
.ctrl_lli
= 0 |
797 COH901318_CX_CTRL_TC_ENABLE
|
798 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
799 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
800 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
801 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
802 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
803 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
804 COH901318_CX_CTRL_TCP_DISABLE
|
805 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
806 COH901318_CX_CTRL_HSP_ENABLE
|
807 COH901318_CX_CTRL_HSS_DISABLE
|
808 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
809 COH901318_CX_CTRL_PRDD_DEST
,
810 .param
.ctrl_lli_last
= 0 |
811 COH901318_CX_CTRL_TC_ENABLE
|
812 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
813 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
814 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
815 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
816 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
817 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
818 COH901318_CX_CTRL_TCP_DISABLE
|
819 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
820 COH901318_CX_CTRL_HSP_ENABLE
|
821 COH901318_CX_CTRL_HSS_DISABLE
|
822 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
823 COH901318_CX_CTRL_PRDD_DEST
,
826 .number
= U300_DMA_MSL_RX_5
,
829 .dev_addr
= U300_MSL_BASE
+ 5 * 0x40 + 0x220,
830 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
831 COH901318_CX_CFG_LCR_DISABLE
|
832 COH901318_CX_CFG_TC_IRQ_ENABLE
|
833 COH901318_CX_CFG_BE_IRQ_ENABLE
,
834 .param
.ctrl_lli_chained
= 0 |
835 COH901318_CX_CTRL_TC_ENABLE
|
836 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
837 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
838 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
839 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
840 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
841 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
842 COH901318_CX_CTRL_TCP_DISABLE
|
843 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
844 COH901318_CX_CTRL_HSP_ENABLE
|
845 COH901318_CX_CTRL_HSS_DISABLE
|
846 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
847 COH901318_CX_CTRL_PRDD_DEST
,
848 .param
.ctrl_lli
= 0 |
849 COH901318_CX_CTRL_TC_ENABLE
|
850 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
851 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
852 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
853 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
854 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
855 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
856 COH901318_CX_CTRL_TCP_DISABLE
|
857 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
858 COH901318_CX_CTRL_HSP_ENABLE
|
859 COH901318_CX_CTRL_HSS_DISABLE
|
860 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
861 COH901318_CX_CTRL_PRDD_DEST
,
862 .param
.ctrl_lli_last
= 0 |
863 COH901318_CX_CTRL_TC_ENABLE
|
864 COH901318_CX_CTRL_BURST_COUNT_32_BYTES
|
865 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
866 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
867 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
868 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
869 COH901318_CX_CTRL_MASTER_MODE_M2R_M1W
|
870 COH901318_CX_CTRL_TCP_DISABLE
|
871 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
872 COH901318_CX_CTRL_HSP_ENABLE
|
873 COH901318_CX_CTRL_HSS_DISABLE
|
874 COH901318_CX_CTRL_DDMA_DEMAND_DMA1
|
875 COH901318_CX_CTRL_PRDD_DEST
,
878 .number
= U300_DMA_MSL_RX_6
,
881 .dev_addr
= U300_MSL_BASE
+ 6 * 0x40 + 0x220,
884 * Don't set up device address, burst count or size of src
885 * or dst bus for this peripheral - handled by PrimeCell
889 .number
= U300_DMA_MMCSD_RX_TX
,
890 .name
= "MMCSD RX TX",
892 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
893 COH901318_CX_CFG_LCR_DISABLE
|
894 COH901318_CX_CFG_TC_IRQ_ENABLE
|
895 COH901318_CX_CFG_BE_IRQ_ENABLE
,
896 .param
.ctrl_lli_chained
= 0 |
897 COH901318_CX_CTRL_TC_ENABLE
|
898 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
899 COH901318_CX_CTRL_TCP_ENABLE
|
900 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
901 COH901318_CX_CTRL_HSP_ENABLE
|
902 COH901318_CX_CTRL_HSS_DISABLE
|
903 COH901318_CX_CTRL_DDMA_LEGACY
,
904 .param
.ctrl_lli
= 0 |
905 COH901318_CX_CTRL_TC_ENABLE
|
906 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
907 COH901318_CX_CTRL_TCP_ENABLE
|
908 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
909 COH901318_CX_CTRL_HSP_ENABLE
|
910 COH901318_CX_CTRL_HSS_DISABLE
|
911 COH901318_CX_CTRL_DDMA_LEGACY
,
912 .param
.ctrl_lli_last
= 0 |
913 COH901318_CX_CTRL_TC_ENABLE
|
914 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
915 COH901318_CX_CTRL_TCP_DISABLE
|
916 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
917 COH901318_CX_CTRL_HSP_ENABLE
|
918 COH901318_CX_CTRL_HSS_DISABLE
|
919 COH901318_CX_CTRL_DDMA_LEGACY
,
923 .number
= U300_DMA_MSPRO_TX
,
928 .number
= U300_DMA_MSPRO_RX
,
933 * Don't set up device address, burst count or size of src
934 * or dst bus for this peripheral - handled by PrimeCell
938 .number
= U300_DMA_UART0_TX
,
941 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
942 COH901318_CX_CFG_LCR_DISABLE
|
943 COH901318_CX_CFG_TC_IRQ_ENABLE
|
944 COH901318_CX_CFG_BE_IRQ_ENABLE
,
945 .param
.ctrl_lli_chained
= 0 |
946 COH901318_CX_CTRL_TC_ENABLE
|
947 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
948 COH901318_CX_CTRL_TCP_ENABLE
|
949 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
950 COH901318_CX_CTRL_HSP_ENABLE
|
951 COH901318_CX_CTRL_HSS_DISABLE
|
952 COH901318_CX_CTRL_DDMA_LEGACY
,
953 .param
.ctrl_lli
= 0 |
954 COH901318_CX_CTRL_TC_ENABLE
|
955 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
956 COH901318_CX_CTRL_TCP_ENABLE
|
957 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
958 COH901318_CX_CTRL_HSP_ENABLE
|
959 COH901318_CX_CTRL_HSS_DISABLE
|
960 COH901318_CX_CTRL_DDMA_LEGACY
,
961 .param
.ctrl_lli_last
= 0 |
962 COH901318_CX_CTRL_TC_ENABLE
|
963 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
964 COH901318_CX_CTRL_TCP_ENABLE
|
965 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
966 COH901318_CX_CTRL_HSP_ENABLE
|
967 COH901318_CX_CTRL_HSS_DISABLE
|
968 COH901318_CX_CTRL_DDMA_LEGACY
,
971 .number
= U300_DMA_UART0_RX
,
974 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
975 COH901318_CX_CFG_LCR_DISABLE
|
976 COH901318_CX_CFG_TC_IRQ_ENABLE
|
977 COH901318_CX_CFG_BE_IRQ_ENABLE
,
978 .param
.ctrl_lli_chained
= 0 |
979 COH901318_CX_CTRL_TC_ENABLE
|
980 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
981 COH901318_CX_CTRL_TCP_ENABLE
|
982 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
983 COH901318_CX_CTRL_HSP_ENABLE
|
984 COH901318_CX_CTRL_HSS_DISABLE
|
985 COH901318_CX_CTRL_DDMA_LEGACY
,
986 .param
.ctrl_lli
= 0 |
987 COH901318_CX_CTRL_TC_ENABLE
|
988 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
989 COH901318_CX_CTRL_TCP_ENABLE
|
990 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
991 COH901318_CX_CTRL_HSP_ENABLE
|
992 COH901318_CX_CTRL_HSS_DISABLE
|
993 COH901318_CX_CTRL_DDMA_LEGACY
,
994 .param
.ctrl_lli_last
= 0 |
995 COH901318_CX_CTRL_TC_ENABLE
|
996 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
997 COH901318_CX_CTRL_TCP_ENABLE
|
998 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
999 COH901318_CX_CTRL_HSP_ENABLE
|
1000 COH901318_CX_CTRL_HSS_DISABLE
|
1001 COH901318_CX_CTRL_DDMA_LEGACY
,
1004 .number
= U300_DMA_APEX_TX
,
1009 .number
= U300_DMA_APEX_RX
,
1014 .number
= U300_DMA_PCM_I2S0_TX
,
1015 .name
= "PCM I2S0 TX",
1017 .dev_addr
= U300_PCM_I2S0_BASE
+ 0x14,
1018 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
1019 COH901318_CX_CFG_LCR_DISABLE
|
1020 COH901318_CX_CFG_TC_IRQ_ENABLE
|
1021 COH901318_CX_CFG_BE_IRQ_ENABLE
,
1022 .param
.ctrl_lli_chained
= 0 |
1023 COH901318_CX_CTRL_TC_ENABLE
|
1024 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1025 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1026 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
1027 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1028 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
1029 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1030 COH901318_CX_CTRL_TCP_DISABLE
|
1031 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1032 COH901318_CX_CTRL_HSP_ENABLE
|
1033 COH901318_CX_CTRL_HSS_DISABLE
|
1034 COH901318_CX_CTRL_DDMA_LEGACY
|
1035 COH901318_CX_CTRL_PRDD_SOURCE
,
1036 .param
.ctrl_lli
= 0 |
1037 COH901318_CX_CTRL_TC_ENABLE
|
1038 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1039 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1040 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
1041 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1042 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
1043 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1044 COH901318_CX_CTRL_TCP_ENABLE
|
1045 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1046 COH901318_CX_CTRL_HSP_ENABLE
|
1047 COH901318_CX_CTRL_HSS_DISABLE
|
1048 COH901318_CX_CTRL_DDMA_LEGACY
|
1049 COH901318_CX_CTRL_PRDD_SOURCE
,
1050 .param
.ctrl_lli_last
= 0 |
1051 COH901318_CX_CTRL_TC_ENABLE
|
1052 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1053 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1054 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
1055 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1056 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
1057 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1058 COH901318_CX_CTRL_TCP_ENABLE
|
1059 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1060 COH901318_CX_CTRL_HSP_ENABLE
|
1061 COH901318_CX_CTRL_HSS_DISABLE
|
1062 COH901318_CX_CTRL_DDMA_LEGACY
|
1063 COH901318_CX_CTRL_PRDD_SOURCE
,
1066 .number
= U300_DMA_PCM_I2S0_RX
,
1067 .name
= "PCM I2S0 RX",
1069 .dev_addr
= U300_PCM_I2S0_BASE
+ 0x10,
1070 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
1071 COH901318_CX_CFG_LCR_DISABLE
|
1072 COH901318_CX_CFG_TC_IRQ_ENABLE
|
1073 COH901318_CX_CFG_BE_IRQ_ENABLE
,
1074 .param
.ctrl_lli_chained
= 0 |
1075 COH901318_CX_CTRL_TC_ENABLE
|
1076 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1077 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1078 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
1079 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1080 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
1081 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1082 COH901318_CX_CTRL_TCP_DISABLE
|
1083 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1084 COH901318_CX_CTRL_HSP_ENABLE
|
1085 COH901318_CX_CTRL_HSS_DISABLE
|
1086 COH901318_CX_CTRL_DDMA_LEGACY
|
1087 COH901318_CX_CTRL_PRDD_DEST
,
1088 .param
.ctrl_lli
= 0 |
1089 COH901318_CX_CTRL_TC_ENABLE
|
1090 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1091 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1092 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
1093 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1094 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
1095 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1096 COH901318_CX_CTRL_TCP_ENABLE
|
1097 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1098 COH901318_CX_CTRL_HSP_ENABLE
|
1099 COH901318_CX_CTRL_HSS_DISABLE
|
1100 COH901318_CX_CTRL_DDMA_LEGACY
|
1101 COH901318_CX_CTRL_PRDD_DEST
,
1102 .param
.ctrl_lli_last
= 0 |
1103 COH901318_CX_CTRL_TC_ENABLE
|
1104 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1105 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1106 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
1107 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1108 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
1109 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1110 COH901318_CX_CTRL_TCP_ENABLE
|
1111 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1112 COH901318_CX_CTRL_HSP_ENABLE
|
1113 COH901318_CX_CTRL_HSS_DISABLE
|
1114 COH901318_CX_CTRL_DDMA_LEGACY
|
1115 COH901318_CX_CTRL_PRDD_DEST
,
1118 .number
= U300_DMA_PCM_I2S1_TX
,
1119 .name
= "PCM I2S1 TX",
1121 .dev_addr
= U300_PCM_I2S1_BASE
+ 0x14,
1122 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
1123 COH901318_CX_CFG_LCR_DISABLE
|
1124 COH901318_CX_CFG_TC_IRQ_ENABLE
|
1125 COH901318_CX_CFG_BE_IRQ_ENABLE
,
1126 .param
.ctrl_lli_chained
= 0 |
1127 COH901318_CX_CTRL_TC_ENABLE
|
1128 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1129 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1130 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
1131 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1132 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
1133 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1134 COH901318_CX_CTRL_TCP_DISABLE
|
1135 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1136 COH901318_CX_CTRL_HSP_ENABLE
|
1137 COH901318_CX_CTRL_HSS_DISABLE
|
1138 COH901318_CX_CTRL_DDMA_LEGACY
|
1139 COH901318_CX_CTRL_PRDD_SOURCE
,
1140 .param
.ctrl_lli
= 0 |
1141 COH901318_CX_CTRL_TC_ENABLE
|
1142 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1143 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1144 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
1145 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1146 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
1147 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1148 COH901318_CX_CTRL_TCP_ENABLE
|
1149 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1150 COH901318_CX_CTRL_HSP_ENABLE
|
1151 COH901318_CX_CTRL_HSS_DISABLE
|
1152 COH901318_CX_CTRL_DDMA_LEGACY
|
1153 COH901318_CX_CTRL_PRDD_SOURCE
,
1154 .param
.ctrl_lli_last
= 0 |
1155 COH901318_CX_CTRL_TC_ENABLE
|
1156 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1157 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1158 COH901318_CX_CTRL_SRC_ADDR_INC_ENABLE
|
1159 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1160 COH901318_CX_CTRL_DST_ADDR_INC_DISABLE
|
1161 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1162 COH901318_CX_CTRL_TCP_ENABLE
|
1163 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1164 COH901318_CX_CTRL_HSP_ENABLE
|
1165 COH901318_CX_CTRL_HSS_DISABLE
|
1166 COH901318_CX_CTRL_DDMA_LEGACY
|
1167 COH901318_CX_CTRL_PRDD_SOURCE
,
1170 .number
= U300_DMA_PCM_I2S1_RX
,
1171 .name
= "PCM I2S1 RX",
1173 .dev_addr
= U300_PCM_I2S1_BASE
+ 0x10,
1174 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
1175 COH901318_CX_CFG_LCR_DISABLE
|
1176 COH901318_CX_CFG_TC_IRQ_ENABLE
|
1177 COH901318_CX_CFG_BE_IRQ_ENABLE
,
1178 .param
.ctrl_lli_chained
= 0 |
1179 COH901318_CX_CTRL_TC_ENABLE
|
1180 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1181 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1182 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
1183 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1184 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
1185 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1186 COH901318_CX_CTRL_TCP_DISABLE
|
1187 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1188 COH901318_CX_CTRL_HSP_ENABLE
|
1189 COH901318_CX_CTRL_HSS_DISABLE
|
1190 COH901318_CX_CTRL_DDMA_LEGACY
|
1191 COH901318_CX_CTRL_PRDD_DEST
,
1192 .param
.ctrl_lli
= 0 |
1193 COH901318_CX_CTRL_TC_ENABLE
|
1194 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1195 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1196 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
1197 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1198 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
1199 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1200 COH901318_CX_CTRL_TCP_ENABLE
|
1201 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1202 COH901318_CX_CTRL_HSP_ENABLE
|
1203 COH901318_CX_CTRL_HSS_DISABLE
|
1204 COH901318_CX_CTRL_DDMA_LEGACY
|
1205 COH901318_CX_CTRL_PRDD_DEST
,
1206 .param
.ctrl_lli_last
= 0 |
1207 COH901318_CX_CTRL_TC_ENABLE
|
1208 COH901318_CX_CTRL_BURST_COUNT_16_BYTES
|
1209 COH901318_CX_CTRL_SRC_BUS_SIZE_32_BITS
|
1210 COH901318_CX_CTRL_SRC_ADDR_INC_DISABLE
|
1211 COH901318_CX_CTRL_DST_BUS_SIZE_32_BITS
|
1212 COH901318_CX_CTRL_DST_ADDR_INC_ENABLE
|
1213 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1214 COH901318_CX_CTRL_TCP_ENABLE
|
1215 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1216 COH901318_CX_CTRL_HSP_ENABLE
|
1217 COH901318_CX_CTRL_HSS_DISABLE
|
1218 COH901318_CX_CTRL_DDMA_LEGACY
|
1219 COH901318_CX_CTRL_PRDD_DEST
,
1222 .number
= U300_DMA_XGAM_CDI
,
1227 .number
= U300_DMA_XGAM_PDI
,
1232 * Don't set up device address, burst count or size of src
1233 * or dst bus for this peripheral - handled by PrimeCell
1237 .number
= U300_DMA_SPI_TX
,
1240 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
1241 COH901318_CX_CFG_LCR_DISABLE
|
1242 COH901318_CX_CFG_TC_IRQ_ENABLE
|
1243 COH901318_CX_CFG_BE_IRQ_ENABLE
,
1244 .param
.ctrl_lli_chained
= 0 |
1245 COH901318_CX_CTRL_TC_ENABLE
|
1246 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1247 COH901318_CX_CTRL_TCP_DISABLE
|
1248 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1249 COH901318_CX_CTRL_HSP_ENABLE
|
1250 COH901318_CX_CTRL_HSS_DISABLE
|
1251 COH901318_CX_CTRL_DDMA_LEGACY
,
1252 .param
.ctrl_lli
= 0 |
1253 COH901318_CX_CTRL_TC_ENABLE
|
1254 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1255 COH901318_CX_CTRL_TCP_DISABLE
|
1256 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1257 COH901318_CX_CTRL_HSP_ENABLE
|
1258 COH901318_CX_CTRL_HSS_DISABLE
|
1259 COH901318_CX_CTRL_DDMA_LEGACY
,
1260 .param
.ctrl_lli_last
= 0 |
1261 COH901318_CX_CTRL_TC_ENABLE
|
1262 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1263 COH901318_CX_CTRL_TCP_DISABLE
|
1264 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1265 COH901318_CX_CTRL_HSP_ENABLE
|
1266 COH901318_CX_CTRL_HSS_DISABLE
|
1267 COH901318_CX_CTRL_DDMA_LEGACY
,
1270 .number
= U300_DMA_SPI_RX
,
1273 .param
.config
= COH901318_CX_CFG_CH_DISABLE
|
1274 COH901318_CX_CFG_LCR_DISABLE
|
1275 COH901318_CX_CFG_TC_IRQ_ENABLE
|
1276 COH901318_CX_CFG_BE_IRQ_ENABLE
,
1277 .param
.ctrl_lli_chained
= 0 |
1278 COH901318_CX_CTRL_TC_ENABLE
|
1279 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1280 COH901318_CX_CTRL_TCP_DISABLE
|
1281 COH901318_CX_CTRL_TC_IRQ_DISABLE
|
1282 COH901318_CX_CTRL_HSP_ENABLE
|
1283 COH901318_CX_CTRL_HSS_DISABLE
|
1284 COH901318_CX_CTRL_DDMA_LEGACY
,
1285 .param
.ctrl_lli
= 0 |
1286 COH901318_CX_CTRL_TC_ENABLE
|
1287 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1288 COH901318_CX_CTRL_TCP_DISABLE
|
1289 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1290 COH901318_CX_CTRL_HSP_ENABLE
|
1291 COH901318_CX_CTRL_HSS_DISABLE
|
1292 COH901318_CX_CTRL_DDMA_LEGACY
,
1293 .param
.ctrl_lli_last
= 0 |
1294 COH901318_CX_CTRL_TC_ENABLE
|
1295 COH901318_CX_CTRL_MASTER_MODE_M1RW
|
1296 COH901318_CX_CTRL_TCP_DISABLE
|
1297 COH901318_CX_CTRL_TC_IRQ_ENABLE
|
1298 COH901318_CX_CTRL_HSP_ENABLE
|
1299 COH901318_CX_CTRL_HSS_DISABLE
|
1300 COH901318_CX_CTRL_DDMA_LEGACY
,
1304 .number
= U300_DMA_GENERAL_PURPOSE_0
,
1305 .name
= "GENERAL 00",
1308 .param
.config
= flags_memcpy_config
,
1309 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1310 .param
.ctrl_lli
= flags_memcpy_lli
,
1311 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1314 .number
= U300_DMA_GENERAL_PURPOSE_1
,
1315 .name
= "GENERAL 01",
1318 .param
.config
= flags_memcpy_config
,
1319 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1320 .param
.ctrl_lli
= flags_memcpy_lli
,
1321 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1324 .number
= U300_DMA_GENERAL_PURPOSE_2
,
1325 .name
= "GENERAL 02",
1328 .param
.config
= flags_memcpy_config
,
1329 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1330 .param
.ctrl_lli
= flags_memcpy_lli
,
1331 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1334 .number
= U300_DMA_GENERAL_PURPOSE_3
,
1335 .name
= "GENERAL 03",
1338 .param
.config
= flags_memcpy_config
,
1339 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1340 .param
.ctrl_lli
= flags_memcpy_lli
,
1341 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1344 .number
= U300_DMA_GENERAL_PURPOSE_4
,
1345 .name
= "GENERAL 04",
1348 .param
.config
= flags_memcpy_config
,
1349 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1350 .param
.ctrl_lli
= flags_memcpy_lli
,
1351 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1354 .number
= U300_DMA_GENERAL_PURPOSE_5
,
1355 .name
= "GENERAL 05",
1358 .param
.config
= flags_memcpy_config
,
1359 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1360 .param
.ctrl_lli
= flags_memcpy_lli
,
1361 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1364 .number
= U300_DMA_GENERAL_PURPOSE_6
,
1365 .name
= "GENERAL 06",
1368 .param
.config
= flags_memcpy_config
,
1369 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1370 .param
.ctrl_lli
= flags_memcpy_lli
,
1371 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1374 .number
= U300_DMA_GENERAL_PURPOSE_7
,
1375 .name
= "GENERAL 07",
1378 .param
.config
= flags_memcpy_config
,
1379 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1380 .param
.ctrl_lli
= flags_memcpy_lli
,
1381 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1384 .number
= U300_DMA_GENERAL_PURPOSE_8
,
1385 .name
= "GENERAL 08",
1388 .param
.config
= flags_memcpy_config
,
1389 .param
.ctrl_lli_chained
= flags_memcpy_lli_chained
,
1390 .param
.ctrl_lli
= flags_memcpy_lli
,
1391 .param
.ctrl_lli_last
= flags_memcpy_lli_last
,
1394 .number
= U300_DMA_UART1_TX
,
1399 .number
= U300_DMA_UART1_RX
,
1406 static struct coh901318_platform coh901318_platform
= {
1407 .chans_slave
= dma_slave_channels
,
1408 .chans_memcpy
= dma_memcpy_channels
,
1409 .access_memory_state
= coh901318_access_memory_state
,
1410 .chan_conf
= chan_config
,
1411 .max_channels
= U300_DMA_CHANNELS
,
1414 static struct resource pinctrl_resources
[] = {
1416 .start
= U300_SYSCON_BASE
,
1417 .end
= U300_SYSCON_BASE
+ SZ_4K
- 1,
1418 .flags
= IORESOURCE_MEM
,
1422 static struct platform_device wdog_device
= {
1423 .name
= "coh901327_wdog",
1425 .num_resources
= ARRAY_SIZE(wdog_resources
),
1426 .resource
= wdog_resources
,
1429 static struct platform_device i2c0_device
= {
1432 .num_resources
= ARRAY_SIZE(i2c0_resources
),
1433 .resource
= i2c0_resources
,
1436 static struct platform_device i2c1_device
= {
1439 .num_resources
= ARRAY_SIZE(i2c1_resources
),
1440 .resource
= i2c1_resources
,
1443 static struct platform_device pinctrl_device
= {
1444 .name
= "pinctrl-u300",
1446 .num_resources
= ARRAY_SIZE(pinctrl_resources
),
1447 .resource
= pinctrl_resources
,
1451 * The different variants have a few different versions of the
1452 * GPIO block, with different number of ports.
1454 static struct u300_gpio_platform u300_gpio_plat
= {
1459 static struct platform_device gpio_device
= {
1460 .name
= "u300-gpio",
1462 .num_resources
= ARRAY_SIZE(gpio_resources
),
1463 .resource
= gpio_resources
,
1465 .platform_data
= &u300_gpio_plat
,
1469 static struct platform_device keypad_device
= {
1472 .num_resources
= ARRAY_SIZE(keypad_resources
),
1473 .resource
= keypad_resources
,
1476 static struct platform_device rtc_device
= {
1477 .name
= "rtc-coh901331",
1479 .num_resources
= ARRAY_SIZE(rtc_resources
),
1480 .resource
= rtc_resources
,
1483 static struct mtd_partition u300_partitions
[] = {
1485 .name
= "bootrecords",
1492 .size
= 8064 * SZ_1K
,
1496 .offset
= 8192 * SZ_1K
,
1497 .size
= 253952 * SZ_1K
,
1501 static struct fsmc_nand_platform_data nand_platform_data
= {
1502 .partitions
= u300_partitions
,
1503 .nr_partitions
= ARRAY_SIZE(u300_partitions
),
1504 .options
= NAND_SKIP_BBTSCAN
,
1505 .width
= FSMC_NAND_BW8
,
1508 static struct platform_device nand_device
= {
1509 .name
= "fsmc-nand",
1511 .resource
= fsmc_resources
,
1512 .num_resources
= ARRAY_SIZE(fsmc_resources
),
1514 .platform_data
= &nand_platform_data
,
1518 static struct platform_device dma_device
= {
1519 .name
= "coh901318",
1521 .resource
= dma_resource
,
1522 .num_resources
= ARRAY_SIZE(dma_resource
),
1524 .platform_data
= &coh901318_platform
,
1525 .coherent_dma_mask
= ~0,
1529 static unsigned long pin_pullup_conf
[] = {
1530 PIN_CONF_PACKED(PIN_CONFIG_BIAS_PULL_UP
, 1),
1533 static unsigned long pin_highz_conf
[] = {
1534 PIN_CONF_PACKED(PIN_CONFIG_BIAS_HIGH_IMPEDANCE
, 0),
1537 /* Pin control settings */
1538 static struct pinctrl_map __initdata u300_pinmux_map
[] = {
1539 /* anonymous maps for chip power and EMIFs */
1540 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL
, "power"),
1541 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL
, "emif0"),
1542 PIN_MAP_MUX_GROUP_HOG_DEFAULT("pinctrl-u300", NULL
, "emif1"),
1543 /* per-device maps for MMC/SD, SPI and UART */
1544 PIN_MAP_MUX_GROUP_DEFAULT("mmci", "pinctrl-u300", NULL
, "mmc0"),
1545 PIN_MAP_MUX_GROUP_DEFAULT("pl022", "pinctrl-u300", NULL
, "spi0"),
1546 PIN_MAP_MUX_GROUP_DEFAULT("uart0", "pinctrl-u300", NULL
, "uart0"),
1547 /* This pin is used for clock return rather than GPIO */
1548 PIN_MAP_CONFIGS_PIN_DEFAULT("mmci", "pinctrl-u300", "PIO APP GPIO 11",
1550 /* This pin is used for card detect */
1551 PIN_MAP_CONFIGS_PIN_DEFAULT("mmci", "pinctrl-u300", "PIO MS INS",
1556 * Notice that AMBA devices are initialized before platform devices.
1559 static struct platform_device
*platform_devs
[] __initdata
= {
1572 * Interrupts: the U300 platforms have two pl190 ARM PrimeCells connected
1573 * together so some interrupts are connected to the first one and some
1574 * to the second one.
1576 static void __init
u300_init_irq(void)
1578 u32 mask
[2] = {0, 0};
1582 /* initialize clocking early, we want to clock the INTCON */
1583 u300_clk_init(U300_SYSCON_VBASE
);
1585 /* Bootstrap EMIF and SEMI clocks */
1586 clk
= clk_get_sys("pl172", NULL
);
1587 BUG_ON(IS_ERR(clk
));
1588 clk_prepare_enable(clk
);
1589 clk
= clk_get_sys("semi", NULL
);
1590 BUG_ON(IS_ERR(clk
));
1591 clk_prepare_enable(clk
);
1593 /* Clock the interrupt controller */
1594 clk
= clk_get_sys("intcon", NULL
);
1595 BUG_ON(IS_ERR(clk
));
1596 clk_prepare_enable(clk
);
1598 for (i
= 0; i
< U300_VIC_IRQS_END
; i
++)
1599 set_bit(i
, (unsigned long *) &mask
[0]);
1600 vic_init((void __iomem
*) U300_INTCON0_VBASE
, IRQ_U300_INTCON0_START
,
1602 vic_init((void __iomem
*) U300_INTCON1_VBASE
, IRQ_U300_INTCON1_START
,
1608 * U300 platforms peripheral handling
1616 * This is a list of the Digital Baseband chips used in the U300 platform.
1618 static struct db_chip db_chips
[] __initdata
= {
1645 .name
= "DB3350 P1x",
1649 .name
= "DB3350 P2x",
1652 .chipid
= 0x0000, /* List terminator */
1657 static void __init
u300_init_check_chip(void)
1661 struct db_chip
*chip
;
1662 const char *chipname
;
1663 const char unknown
[] = "UNKNOWN";
1665 /* Read out and print chip ID */
1666 val
= readw(U300_SYSCON_VBASE
+ U300_SYSCON_CIDR
);
1667 /* This is in funky bigendian order... */
1668 val
= (val
& 0xFFU
) << 8 | (val
>> 8);
1672 for ( ; chip
->chipid
; chip
++) {
1673 if (chip
->chipid
== (val
& 0xFF00U
)) {
1674 chipname
= chip
->name
;
1678 printk(KERN_INFO
"Initializing U300 system on %s baseband chip " \
1679 "(chip ID 0x%04x)\n", chipname
, val
);
1681 if ((val
& 0xFF00U
) != 0xf000 && (val
& 0xFF00U
) != 0xf100) {
1682 printk(KERN_ERR
"Platform configured for BS335 " \
1683 " with DB3350 but %s detected, expect problems!",
1689 * Some devices and their resources require reserved physical memory from
1690 * the end of the available RAM. This function traverses the list of devices
1691 * and assigns actual addresses to these.
1693 static void __init
u300_assign_physmem(void)
1695 unsigned long curr_start
= __pa(high_memory
);
1698 for (i
= 0; i
< ARRAY_SIZE(platform_devs
); i
++) {
1699 for (j
= 0; j
< platform_devs
[i
]->num_resources
; j
++) {
1700 struct resource
*const res
=
1701 &platform_devs
[i
]->resource
[j
];
1703 if (IORESOURCE_MEM
== res
->flags
&&
1705 res
->start
= curr_start
;
1706 res
->end
+= curr_start
;
1707 curr_start
+= resource_size(res
);
1709 printk(KERN_INFO
"core.c: Mapping RAM " \
1710 "%#x-%#x to device %s:%s\n",
1711 res
->start
, res
->end
,
1712 platform_devs
[i
]->name
, res
->name
);
1718 static void __init
u300_init_machine(void)
1723 /* Check what platform we run and print some status information */
1724 u300_init_check_chip();
1726 /* Initialize SPI device with some board specifics */
1727 u300_spi_init(&pl022_device
);
1729 /* Register the AMBA devices in the AMBA bus abstraction layer */
1730 for (i
= 0; i
< ARRAY_SIZE(amba_devs
); i
++) {
1731 struct amba_device
*d
= amba_devs
[i
];
1732 amba_device_register(d
, &iomem_resource
);
1735 u300_assign_physmem();
1737 /* Initialize pinmuxing */
1738 pinctrl_register_mappings(u300_pinmux_map
,
1739 ARRAY_SIZE(u300_pinmux_map
));
1741 /* Register subdevices on the I2C buses */
1742 u300_i2c_register_board_devices();
1744 /* Register the platform devices */
1745 platform_add_devices(platform_devs
, ARRAY_SIZE(platform_devs
));
1747 /* Register subdevices on the SPI bus */
1748 u300_spi_register_board_devices();
1750 /* Enable SEMI self refresh */
1751 val
= readw(U300_SYSCON_VBASE
+ U300_SYSCON_SMCR
) |
1752 U300_SYSCON_SMCR_SEMI_SREFREQ_ENABLE
;
1753 writew(val
, U300_SYSCON_VBASE
+ U300_SYSCON_SMCR
);
1756 /* Forward declare this function from the watchdog */
1757 void coh901327_watchdog_reset(void);
1759 static void u300_restart(char mode
, const char *cmd
)
1764 #ifdef CONFIG_COH901327_WATCHDOG
1765 coh901327_watchdog_reset();
1772 /* Wait for system do die/reset. */
1776 MACHINE_START(U300
, "Ericsson AB U335 S335/B335 Prototype Board")
1777 /* Maintainer: Linus Walleij <linus.walleij@stericsson.com> */
1778 .atag_offset
= 0x100,
1779 .map_io
= u300_map_io
,
1781 .init_irq
= u300_init_irq
,
1782 .handle_irq
= vic_handle_irq
,
1783 .timer
= &u300_timer
,
1784 .init_machine
= u300_init_machine
,
1785 .restart
= u300_restart
,