diff options
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-audio.c | 56 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500-sdi.c | 40 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.c | 63 | ||||
-rw-r--r-- | arch/arm/mach-ux500/board-mop500.h | 1 | ||||
-rw-r--r-- | arch/arm/mach-ux500/cpu-db8500.c | 52 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-db8500.c | 123 | ||||
-rw-r--r-- | arch/arm/mach-ux500/ste-dma40-db8500.h | 193 | ||||
-rw-r--r-- | arch/arm/mach-ux500/usb.c | 18 |
8 files changed, 117 insertions, 429 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c index aba9e5692958..ec872622340f 100644 --- a/arch/arm/mach-ux500/board-mop500-audio.c +++ b/arch/arm/mach-ux500/board-mop500-audio.c | |||
@@ -22,27 +22,13 @@ | |||
22 | static struct stedma40_chan_cfg msp0_dma_rx = { | 22 | static struct stedma40_chan_cfg msp0_dma_rx = { |
23 | .high_priority = true, | 23 | .high_priority = true, |
24 | .dir = STEDMA40_PERIPH_TO_MEM, | 24 | .dir = STEDMA40_PERIPH_TO_MEM, |
25 | 25 | .dev_type = DB8500_DMA_DEV31_MSP0_SLIM0_CH0, | |
26 | .src_dev_type = DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX, | ||
27 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
28 | |||
29 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
30 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
31 | |||
32 | /* data_width is set during configuration */ | ||
33 | }; | 26 | }; |
34 | 27 | ||
35 | static struct stedma40_chan_cfg msp0_dma_tx = { | 28 | static struct stedma40_chan_cfg msp0_dma_tx = { |
36 | .high_priority = true, | 29 | .high_priority = true, |
37 | .dir = STEDMA40_MEM_TO_PERIPH, | 30 | .dir = STEDMA40_MEM_TO_PERIPH, |
38 | 31 | .dev_type = DB8500_DMA_DEV31_MSP0_SLIM0_CH0, | |
39 | .src_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
40 | .dst_dev_type = DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX, | ||
41 | |||
42 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
43 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
44 | |||
45 | /* data_width is set during configuration */ | ||
46 | }; | 32 | }; |
47 | 33 | ||
48 | struct msp_i2s_platform_data msp0_platform_data = { | 34 | struct msp_i2s_platform_data msp0_platform_data = { |
@@ -54,27 +40,13 @@ struct msp_i2s_platform_data msp0_platform_data = { | |||
54 | static struct stedma40_chan_cfg msp1_dma_rx = { | 40 | static struct stedma40_chan_cfg msp1_dma_rx = { |
55 | .high_priority = true, | 41 | .high_priority = true, |
56 | .dir = STEDMA40_PERIPH_TO_MEM, | 42 | .dir = STEDMA40_PERIPH_TO_MEM, |
57 | 43 | .dev_type = DB8500_DMA_DEV30_MSP3, | |
58 | .src_dev_type = DB8500_DMA_DEV30_MSP3_RX, | ||
59 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
60 | |||
61 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
62 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
63 | |||
64 | /* data_width is set during configuration */ | ||
65 | }; | 44 | }; |
66 | 45 | ||
67 | static struct stedma40_chan_cfg msp1_dma_tx = { | 46 | static struct stedma40_chan_cfg msp1_dma_tx = { |
68 | .high_priority = true, | 47 | .high_priority = true, |
69 | .dir = STEDMA40_MEM_TO_PERIPH, | 48 | .dir = STEDMA40_MEM_TO_PERIPH, |
70 | 49 | .dev_type = DB8500_DMA_DEV30_MSP1, | |
71 | .src_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
72 | .dst_dev_type = DB8500_DMA_DEV30_MSP1_TX, | ||
73 | |||
74 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
75 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
76 | |||
77 | /* data_width is set during configuration */ | ||
78 | }; | 50 | }; |
79 | 51 | ||
80 | struct msp_i2s_platform_data msp1_platform_data = { | 52 | struct msp_i2s_platform_data msp1_platform_data = { |
@@ -86,31 +58,15 @@ struct msp_i2s_platform_data msp1_platform_data = { | |||
86 | static struct stedma40_chan_cfg msp2_dma_rx = { | 58 | static struct stedma40_chan_cfg msp2_dma_rx = { |
87 | .high_priority = true, | 59 | .high_priority = true, |
88 | .dir = STEDMA40_PERIPH_TO_MEM, | 60 | .dir = STEDMA40_PERIPH_TO_MEM, |
89 | 61 | .dev_type = DB8500_DMA_DEV14_MSP2, | |
90 | .src_dev_type = DB8500_DMA_DEV14_MSP2_RX, | ||
91 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
92 | |||
93 | /* MSP2 DMA doesn't work with PSIZE == 4 on DB8500v2 */ | ||
94 | .src_info.psize = STEDMA40_PSIZE_LOG_1, | ||
95 | .dst_info.psize = STEDMA40_PSIZE_LOG_1, | ||
96 | |||
97 | /* data_width is set during configuration */ | ||
98 | }; | 62 | }; |
99 | 63 | ||
100 | static struct stedma40_chan_cfg msp2_dma_tx = { | 64 | static struct stedma40_chan_cfg msp2_dma_tx = { |
101 | .high_priority = true, | 65 | .high_priority = true, |
102 | .dir = STEDMA40_MEM_TO_PERIPH, | 66 | .dir = STEDMA40_MEM_TO_PERIPH, |
103 | 67 | .dev_type = DB8500_DMA_DEV14_MSP2, | |
104 | .src_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
105 | .dst_dev_type = DB8500_DMA_DEV14_MSP2_TX, | ||
106 | |||
107 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
108 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
109 | |||
110 | .use_fixed_channel = true, | 68 | .use_fixed_channel = true, |
111 | .phy_channel = 1, | 69 | .phy_channel = 1, |
112 | |||
113 | /* data_width is set during configuration */ | ||
114 | }; | 70 | }; |
115 | 71 | ||
116 | static struct platform_device *db8500_add_msp_i2s(struct device *parent, | 72 | static struct platform_device *db8500_add_msp_i2s(struct device *parent, |
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c index 0ef38775a0c1..29be714b8a73 100644 --- a/arch/arm/mach-ux500/board-mop500-sdi.c +++ b/arch/arm/mach-ux500/board-mop500-sdi.c | |||
@@ -35,19 +35,13 @@ | |||
35 | struct stedma40_chan_cfg mop500_sdi0_dma_cfg_rx = { | 35 | struct stedma40_chan_cfg mop500_sdi0_dma_cfg_rx = { |
36 | .mode = STEDMA40_MODE_LOGICAL, | 36 | .mode = STEDMA40_MODE_LOGICAL, |
37 | .dir = STEDMA40_PERIPH_TO_MEM, | 37 | .dir = STEDMA40_PERIPH_TO_MEM, |
38 | .src_dev_type = DB8500_DMA_DEV29_SD_MM0_RX, | 38 | .dev_type = DB8500_DMA_DEV29_SD_MM0, |
39 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
40 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
41 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
42 | }; | 39 | }; |
43 | 40 | ||
44 | static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = { | 41 | static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = { |
45 | .mode = STEDMA40_MODE_LOGICAL, | 42 | .mode = STEDMA40_MODE_LOGICAL, |
46 | .dir = STEDMA40_MEM_TO_PERIPH, | 43 | .dir = STEDMA40_MEM_TO_PERIPH, |
47 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 44 | .dev_type = DB8500_DMA_DEV29_SD_MM0, |
48 | .dst_dev_type = DB8500_DMA_DEV29_SD_MM0_TX, | ||
49 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
50 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
51 | }; | 45 | }; |
52 | #endif | 46 | #endif |
53 | 47 | ||
@@ -88,19 +82,13 @@ void mop500_sdi_tc35892_init(struct device *parent) | |||
88 | static struct stedma40_chan_cfg sdi1_dma_cfg_rx = { | 82 | static struct stedma40_chan_cfg sdi1_dma_cfg_rx = { |
89 | .mode = STEDMA40_MODE_LOGICAL, | 83 | .mode = STEDMA40_MODE_LOGICAL, |
90 | .dir = STEDMA40_PERIPH_TO_MEM, | 84 | .dir = STEDMA40_PERIPH_TO_MEM, |
91 | .src_dev_type = DB8500_DMA_DEV32_SD_MM1_RX, | 85 | .dev_type = DB8500_DMA_DEV32_SD_MM1, |
92 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
93 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
94 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
95 | }; | 86 | }; |
96 | 87 | ||
97 | static struct stedma40_chan_cfg sdi1_dma_cfg_tx = { | 88 | static struct stedma40_chan_cfg sdi1_dma_cfg_tx = { |
98 | .mode = STEDMA40_MODE_LOGICAL, | 89 | .mode = STEDMA40_MODE_LOGICAL, |
99 | .dir = STEDMA40_MEM_TO_PERIPH, | 90 | .dir = STEDMA40_MEM_TO_PERIPH, |
100 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 91 | .dev_type = DB8500_DMA_DEV32_SD_MM1, |
101 | .dst_dev_type = DB8500_DMA_DEV32_SD_MM1_TX, | ||
102 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
103 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
104 | }; | 92 | }; |
105 | #endif | 93 | #endif |
106 | 94 | ||
@@ -125,19 +113,13 @@ struct mmci_platform_data mop500_sdi1_data = { | |||
125 | struct stedma40_chan_cfg mop500_sdi2_dma_cfg_rx = { | 113 | struct stedma40_chan_cfg mop500_sdi2_dma_cfg_rx = { |
126 | .mode = STEDMA40_MODE_LOGICAL, | 114 | .mode = STEDMA40_MODE_LOGICAL, |
127 | .dir = STEDMA40_PERIPH_TO_MEM, | 115 | .dir = STEDMA40_PERIPH_TO_MEM, |
128 | .src_dev_type = DB8500_DMA_DEV28_SD_MM2_RX, | 116 | .dev_type = DB8500_DMA_DEV28_SD_MM2, |
129 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
130 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
131 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
132 | }; | 117 | }; |
133 | 118 | ||
134 | static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = { | 119 | static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = { |
135 | .mode = STEDMA40_MODE_LOGICAL, | 120 | .mode = STEDMA40_MODE_LOGICAL, |
136 | .dir = STEDMA40_MEM_TO_PERIPH, | 121 | .dir = STEDMA40_MEM_TO_PERIPH, |
137 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 122 | .dev_type = DB8500_DMA_DEV28_SD_MM2, |
138 | .dst_dev_type = DB8500_DMA_DEV28_SD_MM2_TX, | ||
139 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
140 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
141 | }; | 123 | }; |
142 | #endif | 124 | #endif |
143 | 125 | ||
@@ -163,19 +145,13 @@ struct mmci_platform_data mop500_sdi2_data = { | |||
163 | struct stedma40_chan_cfg mop500_sdi4_dma_cfg_rx = { | 145 | struct stedma40_chan_cfg mop500_sdi4_dma_cfg_rx = { |
164 | .mode = STEDMA40_MODE_LOGICAL, | 146 | .mode = STEDMA40_MODE_LOGICAL, |
165 | .dir = STEDMA40_PERIPH_TO_MEM, | 147 | .dir = STEDMA40_PERIPH_TO_MEM, |
166 | .src_dev_type = DB8500_DMA_DEV42_SD_MM4_RX, | 148 | .dev_type = DB8500_DMA_DEV42_SD_MM4, |
167 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
168 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
169 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
170 | }; | 149 | }; |
171 | 150 | ||
172 | static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = { | 151 | static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = { |
173 | .mode = STEDMA40_MODE_LOGICAL, | 152 | .mode = STEDMA40_MODE_LOGICAL, |
174 | .dir = STEDMA40_MEM_TO_PERIPH, | 153 | .dir = STEDMA40_MEM_TO_PERIPH, |
175 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 154 | .dev_type = DB8500_DMA_DEV42_SD_MM4, |
176 | .dst_dev_type = DB8500_DMA_DEV42_SD_MM4_TX, | ||
177 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
178 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
179 | }; | 155 | }; |
180 | #endif | 156 | #endif |
181 | 157 | ||
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c index 78389de94dde..f59d52806afe 100644 --- a/arch/arm/mach-ux500/board-mop500.c +++ b/arch/arm/mach-ux500/board-mop500.c | |||
@@ -425,35 +425,20 @@ void mop500_snowball_ethernet_clock_enable(void) | |||
425 | static struct cryp_platform_data u8500_cryp1_platform_data = { | 425 | static struct cryp_platform_data u8500_cryp1_platform_data = { |
426 | .mem_to_engine = { | 426 | .mem_to_engine = { |
427 | .dir = STEDMA40_MEM_TO_PERIPH, | 427 | .dir = STEDMA40_MEM_TO_PERIPH, |
428 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 428 | .dev_type = DB8500_DMA_DEV48_CAC1, |
429 | .dst_dev_type = DB8500_DMA_DEV48_CAC1_TX, | ||
430 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
431 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
432 | .mode = STEDMA40_MODE_LOGICAL, | 429 | .mode = STEDMA40_MODE_LOGICAL, |
433 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
434 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
435 | }, | 430 | }, |
436 | .engine_to_mem = { | 431 | .engine_to_mem = { |
437 | .dir = STEDMA40_PERIPH_TO_MEM, | 432 | .dir = STEDMA40_PERIPH_TO_MEM, |
438 | .src_dev_type = DB8500_DMA_DEV48_CAC1_RX, | 433 | .dev_type = DB8500_DMA_DEV48_CAC1, |
439 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
440 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
441 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
442 | .mode = STEDMA40_MODE_LOGICAL, | 434 | .mode = STEDMA40_MODE_LOGICAL, |
443 | .src_info.psize = STEDMA40_PSIZE_LOG_4, | ||
444 | .dst_info.psize = STEDMA40_PSIZE_LOG_4, | ||
445 | } | 435 | } |
446 | }; | 436 | }; |
447 | 437 | ||
448 | static struct stedma40_chan_cfg u8500_hash_dma_cfg_tx = { | 438 | static struct stedma40_chan_cfg u8500_hash_dma_cfg_tx = { |
449 | .dir = STEDMA40_MEM_TO_PERIPH, | 439 | .dir = STEDMA40_MEM_TO_PERIPH, |
450 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 440 | .dev_type = DB8500_DMA_DEV50_HAC1_TX, |
451 | .dst_dev_type = DB8500_DMA_DEV50_HAC1_TX, | ||
452 | .src_info.data_width = STEDMA40_WORD_WIDTH, | ||
453 | .dst_info.data_width = STEDMA40_WORD_WIDTH, | ||
454 | .mode = STEDMA40_MODE_LOGICAL, | 441 | .mode = STEDMA40_MODE_LOGICAL, |
455 | .src_info.psize = STEDMA40_PSIZE_LOG_16, | ||
456 | .dst_info.psize = STEDMA40_PSIZE_LOG_16, | ||
457 | }; | 442 | }; |
458 | 443 | ||
459 | static struct hash_platform_data u8500_hash1_platform_data = { | 444 | static struct hash_platform_data u8500_hash1_platform_data = { |
@@ -471,19 +456,13 @@ static struct platform_device *mop500_platform_devs[] __initdata = { | |||
471 | static struct stedma40_chan_cfg ssp0_dma_cfg_rx = { | 456 | static struct stedma40_chan_cfg ssp0_dma_cfg_rx = { |
472 | .mode = STEDMA40_MODE_LOGICAL, | 457 | .mode = STEDMA40_MODE_LOGICAL, |
473 | .dir = STEDMA40_PERIPH_TO_MEM, | 458 | .dir = STEDMA40_PERIPH_TO_MEM, |
474 | .src_dev_type = DB8500_DMA_DEV8_SSP0_RX, | 459 | .dev_type = DB8500_DMA_DEV8_SSP0, |
475 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
476 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
477 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
478 | }; | 460 | }; |
479 | 461 | ||
480 | static struct stedma40_chan_cfg ssp0_dma_cfg_tx = { | 462 | static struct stedma40_chan_cfg ssp0_dma_cfg_tx = { |
481 | .mode = STEDMA40_MODE_LOGICAL, | 463 | .mode = STEDMA40_MODE_LOGICAL, |
482 | .dir = STEDMA40_MEM_TO_PERIPH, | 464 | .dir = STEDMA40_MEM_TO_PERIPH, |
483 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 465 | .dev_type = DB8500_DMA_DEV8_SSP0, |
484 | .dst_dev_type = DB8500_DMA_DEV8_SSP0_TX, | ||
485 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
486 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
487 | }; | 466 | }; |
488 | #endif | 467 | #endif |
489 | 468 | ||
@@ -512,55 +491,37 @@ static void __init mop500_spi_init(struct device *parent) | |||
512 | static struct stedma40_chan_cfg uart0_dma_cfg_rx = { | 491 | static struct stedma40_chan_cfg uart0_dma_cfg_rx = { |
513 | .mode = STEDMA40_MODE_LOGICAL, | 492 | .mode = STEDMA40_MODE_LOGICAL, |
514 | .dir = STEDMA40_PERIPH_TO_MEM, | 493 | .dir = STEDMA40_PERIPH_TO_MEM, |
515 | .src_dev_type = DB8500_DMA_DEV13_UART0_RX, | 494 | .dev_type = DB8500_DMA_DEV13_UART0, |
516 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
517 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
518 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
519 | }; | 495 | }; |
520 | 496 | ||
521 | static struct stedma40_chan_cfg uart0_dma_cfg_tx = { | 497 | static struct stedma40_chan_cfg uart0_dma_cfg_tx = { |
522 | .mode = STEDMA40_MODE_LOGICAL, | 498 | .mode = STEDMA40_MODE_LOGICAL, |
523 | .dir = STEDMA40_MEM_TO_PERIPH, | 499 | .dir = STEDMA40_MEM_TO_PERIPH, |
524 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 500 | .dev_type = DB8500_DMA_DEV13_UART0, |
525 | .dst_dev_type = DB8500_DMA_DEV13_UART0_TX, | ||
526 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
527 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
528 | }; | 501 | }; |
529 | 502 | ||
530 | static struct stedma40_chan_cfg uart1_dma_cfg_rx = { | 503 | static struct stedma40_chan_cfg uart1_dma_cfg_rx = { |
531 | .mode = STEDMA40_MODE_LOGICAL, | 504 | .mode = STEDMA40_MODE_LOGICAL, |
532 | .dir = STEDMA40_PERIPH_TO_MEM, | 505 | .dir = STEDMA40_PERIPH_TO_MEM, |
533 | .src_dev_type = DB8500_DMA_DEV12_UART1_RX, | 506 | .dev_type = DB8500_DMA_DEV12_UART1, |
534 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
535 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
536 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
537 | }; | 507 | }; |
538 | 508 | ||
539 | static struct stedma40_chan_cfg uart1_dma_cfg_tx = { | 509 | static struct stedma40_chan_cfg uart1_dma_cfg_tx = { |
540 | .mode = STEDMA40_MODE_LOGICAL, | 510 | .mode = STEDMA40_MODE_LOGICAL, |
541 | .dir = STEDMA40_MEM_TO_PERIPH, | 511 | .dir = STEDMA40_MEM_TO_PERIPH, |
542 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 512 | .dev_type = DB8500_DMA_DEV12_UART1, |
543 | .dst_dev_type = DB8500_DMA_DEV12_UART1_TX, | ||
544 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
545 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
546 | }; | 513 | }; |
547 | 514 | ||
548 | static struct stedma40_chan_cfg uart2_dma_cfg_rx = { | 515 | static struct stedma40_chan_cfg uart2_dma_cfg_rx = { |
549 | .mode = STEDMA40_MODE_LOGICAL, | 516 | .mode = STEDMA40_MODE_LOGICAL, |
550 | .dir = STEDMA40_PERIPH_TO_MEM, | 517 | .dir = STEDMA40_PERIPH_TO_MEM, |
551 | .src_dev_type = DB8500_DMA_DEV11_UART2_RX, | 518 | .dev_type = DB8500_DMA_DEV11_UART2, |
552 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, | ||
553 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
554 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
555 | }; | 519 | }; |
556 | 520 | ||
557 | static struct stedma40_chan_cfg uart2_dma_cfg_tx = { | 521 | static struct stedma40_chan_cfg uart2_dma_cfg_tx = { |
558 | .mode = STEDMA40_MODE_LOGICAL, | 522 | .mode = STEDMA40_MODE_LOGICAL, |
559 | .dir = STEDMA40_MEM_TO_PERIPH, | 523 | .dir = STEDMA40_MEM_TO_PERIPH, |
560 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, | 524 | .dev_type = DB8500_DMA_DEV11_UART2, |
561 | .dst_dev_type = DB8500_DMA_DEV11_UART2_TX, | ||
562 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
563 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
564 | }; | 525 | }; |
565 | #endif | 526 | #endif |
566 | 527 | ||
@@ -676,6 +637,8 @@ static void __init snowball_init_machine(void) | |||
676 | 637 | ||
677 | mop500_snowball_ethernet_clock_enable(); | 638 | mop500_snowball_ethernet_clock_enable(); |
678 | 639 | ||
640 | u8500_cryp1_hash1_init(parent); | ||
641 | |||
679 | /* This board has full regulator constraints */ | 642 | /* This board has full regulator constraints */ |
680 | regulator_has_full_constraints(); | 643 | regulator_has_full_constraints(); |
681 | } | 644 | } |
diff --git a/arch/arm/mach-ux500/board-mop500.h b/arch/arm/mach-ux500/board-mop500.h index 49514b825034..6f0bfcb08907 100644 --- a/arch/arm/mach-ux500/board-mop500.h +++ b/arch/arm/mach-ux500/board-mop500.h | |||
@@ -93,6 +93,7 @@ extern struct amba_pl011_data uart0_plat; | |||
93 | extern struct amba_pl011_data uart1_plat; | 93 | extern struct amba_pl011_data uart1_plat; |
94 | extern struct amba_pl011_data uart2_plat; | 94 | extern struct amba_pl011_data uart2_plat; |
95 | extern struct pl022_ssp_controller ssp0_plat; | 95 | extern struct pl022_ssp_controller ssp0_plat; |
96 | extern struct stedma40_platform_data dma40_plat_data; | ||
96 | 97 | ||
97 | extern void mop500_sdi_init(struct device *parent); | 98 | extern void mop500_sdi_init(struct device *parent); |
98 | extern void snowball_sdi_init(struct device *parent); | 99 | extern void snowball_sdi_init(struct device *parent); |
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c index 46cca52890bc..243b91b66ae0 100644 --- a/arch/arm/mach-ux500/cpu-db8500.c +++ b/arch/arm/mach-ux500/cpu-db8500.c | |||
@@ -162,26 +162,15 @@ static void __init db8500_add_gpios(struct device *parent) | |||
162 | dbx500_add_pinctrl(parent, "pinctrl-db8500", U8500_PRCMU_BASE); | 162 | dbx500_add_pinctrl(parent, "pinctrl-db8500", U8500_PRCMU_BASE); |
163 | } | 163 | } |
164 | 164 | ||
165 | static int usb_db8500_rx_dma_cfg[] = { | 165 | static int usb_db8500_dma_cfg[] = { |
166 | DB8500_DMA_DEV38_USB_OTG_IEP_1_9, | 166 | DB8500_DMA_DEV38_USB_OTG_IEP_AND_OEP_1_9, |
167 | DB8500_DMA_DEV37_USB_OTG_IEP_2_10, | 167 | DB8500_DMA_DEV37_USB_OTG_IEP_AND_OEP_2_10, |
168 | DB8500_DMA_DEV36_USB_OTG_IEP_3_11, | 168 | DB8500_DMA_DEV36_USB_OTG_IEP_AND_OEP_3_11, |
169 | DB8500_DMA_DEV19_USB_OTG_IEP_4_12, | 169 | DB8500_DMA_DEV19_USB_OTG_IEP_AND_OEP_4_12, |
170 | DB8500_DMA_DEV18_USB_OTG_IEP_5_13, | 170 | DB8500_DMA_DEV18_USB_OTG_IEP_AND_OEP_5_13, |
171 | DB8500_DMA_DEV17_USB_OTG_IEP_6_14, | 171 | DB8500_DMA_DEV17_USB_OTG_IEP_AND_OEP_6_14, |
172 | DB8500_DMA_DEV16_USB_OTG_IEP_7_15, | 172 | DB8500_DMA_DEV16_USB_OTG_IEP_AND_OEP_7_15, |
173 | DB8500_DMA_DEV39_USB_OTG_IEP_8 | 173 | DB8500_DMA_DEV39_USB_OTG_IEP_AND_OEP_8 |
174 | }; | ||
175 | |||
176 | static int usb_db8500_tx_dma_cfg[] = { | ||
177 | DB8500_DMA_DEV38_USB_OTG_OEP_1_9, | ||
178 | DB8500_DMA_DEV37_USB_OTG_OEP_2_10, | ||
179 | DB8500_DMA_DEV36_USB_OTG_OEP_3_11, | ||
180 | DB8500_DMA_DEV19_USB_OTG_OEP_4_12, | ||
181 | DB8500_DMA_DEV18_USB_OTG_OEP_5_13, | ||
182 | DB8500_DMA_DEV17_USB_OTG_OEP_6_14, | ||
183 | DB8500_DMA_DEV16_USB_OTG_OEP_7_15, | ||
184 | DB8500_DMA_DEV39_USB_OTG_OEP_8 | ||
185 | }; | 174 | }; |
186 | 175 | ||
187 | static const char *db8500_read_soc_id(void) | 176 | static const char *db8500_read_soc_id(void) |
@@ -215,7 +204,7 @@ struct device * __init u8500_init_devices(void) | |||
215 | 204 | ||
216 | db8500_add_rtc(parent); | 205 | db8500_add_rtc(parent); |
217 | db8500_add_gpios(parent); | 206 | db8500_add_gpios(parent); |
218 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | 207 | db8500_add_usb(parent, usb_db8500_dma_cfg, usb_db8500_dma_cfg); |
219 | 208 | ||
220 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) | 209 | for (i = 0; i < ARRAY_SIZE(platform_devs); i++) |
221 | platform_devs[i]->dev.parent = parent; | 210 | platform_devs[i]->dev.parent = parent; |
@@ -232,17 +221,7 @@ static struct device * __init u8500_of_init_devices(void) | |||
232 | { | 221 | { |
233 | struct device *parent = db8500_soc_device_init(); | 222 | struct device *parent = db8500_soc_device_init(); |
234 | 223 | ||
235 | db8500_add_usb(parent, usb_db8500_rx_dma_cfg, usb_db8500_tx_dma_cfg); | 224 | db8500_add_usb(parent, usb_db8500_dma_cfg, usb_db8500_dma_cfg); |
236 | |||
237 | u8500_dma40_device.dev.parent = parent; | ||
238 | |||
239 | /* | ||
240 | * Devices to be DT:ed: | ||
241 | * u8500_dma40_device = todo | ||
242 | * db8500_pmu_device = done | ||
243 | * db8500_prcmu_device = done | ||
244 | */ | ||
245 | platform_device_register(&u8500_dma40_device); | ||
246 | 225 | ||
247 | return parent; | 226 | return parent; |
248 | } | 227 | } |
@@ -251,9 +230,9 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | |||
251 | /* Requires call-back bindings. */ | 230 | /* Requires call-back bindings. */ |
252 | OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), | 231 | OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), |
253 | /* Requires DMA bindings. */ | 232 | /* Requires DMA bindings. */ |
254 | OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", &uart0_plat), | 233 | OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", NULL), |
255 | OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", &uart1_plat), | 234 | OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", NULL), |
256 | OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", &uart2_plat), | 235 | OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", NULL), |
257 | OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat), | 236 | OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0", &ssp0_plat), |
258 | OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data), | 237 | OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0", &mop500_sdi0_data), |
259 | OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data), | 238 | OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1", &mop500_sdi1_data), |
@@ -289,6 +268,9 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { | |||
289 | "ux500-msp-i2s.2", &msp2_platform_data), | 268 | "ux500-msp-i2s.2", &msp2_platform_data), |
290 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, | 269 | OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, |
291 | "ux500-msp-i2s.3", &msp3_platform_data), | 270 | "ux500-msp-i2s.3", &msp3_platform_data), |
271 | /* Requires clock name bindings and channel address lookup table. */ | ||
272 | OF_DEV_AUXDATA("stericsson,db8500-dma40", 0x801C0000, | ||
273 | "dma40.0", &dma40_plat_data), | ||
292 | {}, | 274 | {}, |
293 | }; | 275 | }; |
294 | 276 | ||
diff --git a/arch/arm/mach-ux500/devices-db8500.c b/arch/arm/mach-ux500/devices-db8500.c index 1cf94ce0feec..e21ffd8c1412 100644 --- a/arch/arm/mach-ux500/devices-db8500.c +++ b/arch/arm/mach-ux500/devices-db8500.c | |||
@@ -42,128 +42,7 @@ static struct resource dma40_resources[] = { | |||
42 | } | 42 | } |
43 | }; | 43 | }; |
44 | 44 | ||
45 | /* Default configuration for physcial memcpy */ | 45 | struct stedma40_platform_data dma40_plat_data = { |
46 | struct stedma40_chan_cfg dma40_memcpy_conf_phy = { | ||
47 | .mode = STEDMA40_MODE_PHYSICAL, | ||
48 | .dir = STEDMA40_MEM_TO_MEM, | ||
49 | |||
50 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
51 | .src_info.psize = STEDMA40_PSIZE_PHY_1, | ||
52 | .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | ||
53 | |||
54 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
55 | .dst_info.psize = STEDMA40_PSIZE_PHY_1, | ||
56 | .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | ||
57 | }; | ||
58 | /* Default configuration for logical memcpy */ | ||
59 | struct stedma40_chan_cfg dma40_memcpy_conf_log = { | ||
60 | .dir = STEDMA40_MEM_TO_MEM, | ||
61 | |||
62 | .src_info.data_width = STEDMA40_BYTE_WIDTH, | ||
63 | .src_info.psize = STEDMA40_PSIZE_LOG_1, | ||
64 | .src_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | ||
65 | |||
66 | .dst_info.data_width = STEDMA40_BYTE_WIDTH, | ||
67 | .dst_info.psize = STEDMA40_PSIZE_LOG_1, | ||
68 | .dst_info.flow_ctrl = STEDMA40_NO_FLOW_CTRL, | ||
69 | }; | ||
70 | |||
71 | /* | ||
72 | * Mapping between destination event lines and physical device address. | ||
73 | * The event line is tied to a device and therefore the address is constant. | ||
74 | * When the address comes from a primecell it will be configured in runtime | ||
75 | * and we set the address to -1 as a placeholder. | ||
76 | */ | ||
77 | static const dma_addr_t dma40_tx_map[DB8500_DMA_NR_DEV] = { | ||
78 | /* MUSB - these will be runtime-reconfigured */ | ||
79 | [DB8500_DMA_DEV39_USB_OTG_OEP_8] = -1, | ||
80 | [DB8500_DMA_DEV16_USB_OTG_OEP_7_15] = -1, | ||
81 | [DB8500_DMA_DEV17_USB_OTG_OEP_6_14] = -1, | ||
82 | [DB8500_DMA_DEV18_USB_OTG_OEP_5_13] = -1, | ||
83 | [DB8500_DMA_DEV19_USB_OTG_OEP_4_12] = -1, | ||
84 | [DB8500_DMA_DEV36_USB_OTG_OEP_3_11] = -1, | ||
85 | [DB8500_DMA_DEV37_USB_OTG_OEP_2_10] = -1, | ||
86 | [DB8500_DMA_DEV38_USB_OTG_OEP_1_9] = -1, | ||
87 | /* PrimeCells - run-time configured */ | ||
88 | [DB8500_DMA_DEV0_SPI0_TX] = -1, | ||
89 | [DB8500_DMA_DEV1_SD_MMC0_TX] = -1, | ||
90 | [DB8500_DMA_DEV2_SD_MMC1_TX] = -1, | ||
91 | [DB8500_DMA_DEV3_SD_MMC2_TX] = -1, | ||
92 | [DB8500_DMA_DEV8_SSP0_TX] = -1, | ||
93 | [DB8500_DMA_DEV9_SSP1_TX] = -1, | ||
94 | [DB8500_DMA_DEV11_UART2_TX] = -1, | ||
95 | [DB8500_DMA_DEV12_UART1_TX] = -1, | ||
96 | [DB8500_DMA_DEV13_UART0_TX] = -1, | ||
97 | [DB8500_DMA_DEV28_SD_MM2_TX] = -1, | ||
98 | [DB8500_DMA_DEV29_SD_MM0_TX] = -1, | ||
99 | [DB8500_DMA_DEV32_SD_MM1_TX] = -1, | ||
100 | [DB8500_DMA_DEV33_SPI2_TX] = -1, | ||
101 | [DB8500_DMA_DEV35_SPI1_TX] = -1, | ||
102 | [DB8500_DMA_DEV40_SPI3_TX] = -1, | ||
103 | [DB8500_DMA_DEV41_SD_MM3_TX] = -1, | ||
104 | [DB8500_DMA_DEV42_SD_MM4_TX] = -1, | ||
105 | [DB8500_DMA_DEV43_SD_MM5_TX] = -1, | ||
106 | [DB8500_DMA_DEV14_MSP2_TX] = U8500_MSP2_BASE + MSP_TX_RX_REG_OFFSET, | ||
107 | [DB8500_DMA_DEV30_MSP1_TX] = U8500_MSP1_BASE + MSP_TX_RX_REG_OFFSET, | ||
108 | [DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX] = U8500_MSP0_BASE + MSP_TX_RX_REG_OFFSET, | ||
109 | [DB8500_DMA_DEV48_CAC1_TX] = U8500_CRYP1_BASE + CRYP1_TX_REG_OFFSET, | ||
110 | [DB8500_DMA_DEV50_HAC1_TX] = U8500_HASH1_BASE + HASH1_TX_REG_OFFSET, | ||
111 | }; | ||
112 | |||
113 | /* Mapping between source event lines and physical device address */ | ||
114 | static const dma_addr_t dma40_rx_map[DB8500_DMA_NR_DEV] = { | ||
115 | /* MUSB - these will be runtime-reconfigured */ | ||
116 | [DB8500_DMA_DEV39_USB_OTG_IEP_8] = -1, | ||
117 | [DB8500_DMA_DEV16_USB_OTG_IEP_7_15] = -1, | ||
118 | [DB8500_DMA_DEV17_USB_OTG_IEP_6_14] = -1, | ||
119 | [DB8500_DMA_DEV18_USB_OTG_IEP_5_13] = -1, | ||
120 | [DB8500_DMA_DEV19_USB_OTG_IEP_4_12] = -1, | ||
121 | [DB8500_DMA_DEV36_USB_OTG_IEP_3_11] = -1, | ||
122 | [DB8500_DMA_DEV37_USB_OTG_IEP_2_10] = -1, | ||
123 | [DB8500_DMA_DEV38_USB_OTG_IEP_1_9] = -1, | ||
124 | /* PrimeCells */ | ||
125 | [DB8500_DMA_DEV0_SPI0_RX] = -1, | ||
126 | [DB8500_DMA_DEV1_SD_MMC0_RX] = -1, | ||
127 | [DB8500_DMA_DEV2_SD_MMC1_RX] = -1, | ||
128 | [DB8500_DMA_DEV3_SD_MMC2_RX] = -1, | ||
129 | [DB8500_DMA_DEV8_SSP0_RX] = -1, | ||
130 | [DB8500_DMA_DEV9_SSP1_RX] = -1, | ||
131 | [DB8500_DMA_DEV11_UART2_RX] = -1, | ||
132 | [DB8500_DMA_DEV12_UART1_RX] = -1, | ||
133 | [DB8500_DMA_DEV13_UART0_RX] = -1, | ||
134 | [DB8500_DMA_DEV28_SD_MM2_RX] = -1, | ||
135 | [DB8500_DMA_DEV29_SD_MM0_RX] = -1, | ||
136 | [DB8500_DMA_DEV32_SD_MM1_RX] = -1, | ||
137 | [DB8500_DMA_DEV33_SPI2_RX] = -1, | ||
138 | [DB8500_DMA_DEV35_SPI1_RX] = -1, | ||
139 | [DB8500_DMA_DEV40_SPI3_RX] = -1, | ||
140 | [DB8500_DMA_DEV41_SD_MM3_RX] = -1, | ||
141 | [DB8500_DMA_DEV42_SD_MM4_RX] = -1, | ||
142 | [DB8500_DMA_DEV43_SD_MM5_RX] = -1, | ||
143 | [DB8500_DMA_DEV14_MSP2_RX] = U8500_MSP2_BASE + MSP_TX_RX_REG_OFFSET, | ||
144 | [DB8500_DMA_DEV30_MSP3_RX] = U8500_MSP3_BASE + MSP_TX_RX_REG_OFFSET, | ||
145 | [DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX] = U8500_MSP0_BASE + MSP_TX_RX_REG_OFFSET, | ||
146 | [DB8500_DMA_DEV48_CAC1_RX] = U8500_CRYP1_BASE + CRYP1_RX_REG_OFFSET, | ||
147 | }; | ||
148 | |||
149 | /* Reserved event lines for memcpy only */ | ||
150 | static int dma40_memcpy_event[] = { | ||
151 | DB8500_DMA_MEMCPY_TX_0, | ||
152 | DB8500_DMA_MEMCPY_TX_1, | ||
153 | DB8500_DMA_MEMCPY_TX_2, | ||
154 | DB8500_DMA_MEMCPY_TX_3, | ||
155 | DB8500_DMA_MEMCPY_TX_4, | ||
156 | DB8500_DMA_MEMCPY_TX_5, | ||
157 | }; | ||
158 | |||
159 | static struct stedma40_platform_data dma40_plat_data = { | ||
160 | .dev_len = DB8500_DMA_NR_DEV, | ||
161 | .dev_rx = dma40_rx_map, | ||
162 | .dev_tx = dma40_tx_map, | ||
163 | .memcpy = dma40_memcpy_event, | ||
164 | .memcpy_len = ARRAY_SIZE(dma40_memcpy_event), | ||
165 | .memcpy_conf_phy = &dma40_memcpy_conf_phy, | ||
166 | .memcpy_conf_log = &dma40_memcpy_conf_log, | ||
167 | .disabled_channels = {-1}, | 46 | .disabled_channels = {-1}, |
168 | }; | 47 | }; |
169 | 48 | ||
diff --git a/arch/arm/mach-ux500/ste-dma40-db8500.h b/arch/arm/mach-ux500/ste-dma40-db8500.h index a616419bea76..0296ae5b0fd9 100644 --- a/arch/arm/mach-ux500/ste-dma40-db8500.h +++ b/arch/arm/mach-ux500/ste-dma40-db8500.h | |||
@@ -12,133 +12,74 @@ | |||
12 | 12 | ||
13 | #define DB8500_DMA_NR_DEV 64 | 13 | #define DB8500_DMA_NR_DEV 64 |
14 | 14 | ||
15 | enum dma_src_dev_type { | 15 | /* |
16 | DB8500_DMA_DEV0_SPI0_RX = 0, | 16 | * Unless otherwise specified, all channels numbers are used for |
17 | DB8500_DMA_DEV1_SD_MMC0_RX = 1, | 17 | * TX & RX, and can be used for either source or destination |
18 | DB8500_DMA_DEV2_SD_MMC1_RX = 2, | 18 | * channels. |
19 | DB8500_DMA_DEV3_SD_MMC2_RX = 3, | 19 | */ |
20 | DB8500_DMA_DEV4_I2C1_RX = 4, | 20 | enum dma_dev_type { |
21 | DB8500_DMA_DEV5_I2C3_RX = 5, | 21 | DB8500_DMA_DEV0_SPI0 = 0, |
22 | DB8500_DMA_DEV6_I2C2_RX = 6, | 22 | DB8500_DMA_DEV1_SD_MMC0 = 1, |
23 | DB8500_DMA_DEV7_I2C4_RX = 7, /* Only on V1 and later */ | 23 | DB8500_DMA_DEV2_SD_MMC1 = 2, |
24 | DB8500_DMA_DEV8_SSP0_RX = 8, | 24 | DB8500_DMA_DEV3_SD_MMC2 = 3, |
25 | DB8500_DMA_DEV9_SSP1_RX = 9, | 25 | DB8500_DMA_DEV4_I2C1 = 4, |
26 | DB8500_DMA_DEV10_MCDE_RX = 10, | 26 | DB8500_DMA_DEV5_I2C3 = 5, |
27 | DB8500_DMA_DEV11_UART2_RX = 11, | 27 | DB8500_DMA_DEV6_I2C2 = 6, |
28 | DB8500_DMA_DEV12_UART1_RX = 12, | 28 | DB8500_DMA_DEV7_I2C4 = 7, /* Only on V1 and later */ |
29 | DB8500_DMA_DEV13_UART0_RX = 13, | 29 | DB8500_DMA_DEV8_SSP0 = 8, |
30 | DB8500_DMA_DEV14_MSP2_RX = 14, | 30 | DB8500_DMA_DEV9_SSP1 = 9, |
31 | DB8500_DMA_DEV15_I2C0_RX = 15, | 31 | DB8500_DMA_DEV10_MCDE_RX = 10, /* RX only */ |
32 | DB8500_DMA_DEV16_USB_OTG_IEP_7_15 = 16, | 32 | DB8500_DMA_DEV11_UART2 = 11, |
33 | DB8500_DMA_DEV17_USB_OTG_IEP_6_14 = 17, | 33 | DB8500_DMA_DEV12_UART1 = 12, |
34 | DB8500_DMA_DEV18_USB_OTG_IEP_5_13 = 18, | 34 | DB8500_DMA_DEV13_UART0 = 13, |
35 | DB8500_DMA_DEV19_USB_OTG_IEP_4_12 = 19, | 35 | DB8500_DMA_DEV14_MSP2 = 14, |
36 | DB8500_DMA_DEV20_SLIM0_CH0_RX_HSI_RX_CH0 = 20, | 36 | DB8500_DMA_DEV15_I2C0 = 15, |
37 | DB8500_DMA_DEV21_SLIM0_CH1_RX_HSI_RX_CH1 = 21, | 37 | DB8500_DMA_DEV16_USB_OTG_IEP_AND_OEP_7_15 = 16, |
38 | DB8500_DMA_DEV22_SLIM0_CH2_RX_HSI_RX_CH2 = 22, | 38 | DB8500_DMA_DEV17_USB_OTG_IEP_AND_OEP_6_14 = 17, |
39 | DB8500_DMA_DEV23_SLIM0_CH3_RX_HSI_RX_CH3 = 23, | 39 | DB8500_DMA_DEV18_USB_OTG_IEP_AND_OEP_5_13 = 18, |
40 | DB8500_DMA_DEV24_SRC_SXA0_RX_TX = 24, | 40 | DB8500_DMA_DEV19_USB_OTG_IEP_AND_OEP_4_12 = 19, |
41 | DB8500_DMA_DEV25_SRC_SXA1_RX_TX = 25, | 41 | DB8500_DMA_DEV20_SLIM0_CH0_HSI_CH0 = 20, |
42 | DB8500_DMA_DEV26_SRC_SXA2_RX_TX = 26, | 42 | DB8500_DMA_DEV21_SLIM0_CH1_HSI_CH1 = 21, |
43 | DB8500_DMA_DEV27_SRC_SXA3_RX_TX = 27, | 43 | DB8500_DMA_DEV22_SLIM0_CH2_HSI_CH2 = 22, |
44 | DB8500_DMA_DEV28_SD_MM2_RX = 28, | 44 | DB8500_DMA_DEV23_SLIM0_CH3_HSI_CH3 = 23, |
45 | DB8500_DMA_DEV29_SD_MM0_RX = 29, | 45 | DB8500_DMA_DEV24_SXA0 = 24, |
46 | DB8500_DMA_DEV30_MSP1_RX = 30, | 46 | DB8500_DMA_DEV25_SXA1 = 25, |
47 | DB8500_DMA_DEV26_SXA2 = 26, | ||
48 | DB8500_DMA_DEV27_SXA3 = 27, | ||
49 | DB8500_DMA_DEV28_SD_MM2 = 28, | ||
50 | DB8500_DMA_DEV29_SD_MM0 = 29, | ||
51 | DB8500_DMA_DEV30_MSP1 = 30, | ||
47 | /* On DB8500v2, MSP3 RX replaces MSP1 RX */ | 52 | /* On DB8500v2, MSP3 RX replaces MSP1 RX */ |
48 | DB8500_DMA_DEV30_MSP3_RX = 30, | 53 | DB8500_DMA_DEV30_MSP3 = 30, |
49 | DB8500_DMA_DEV31_MSP0_RX_SLIM0_CH0_RX = 31, | 54 | DB8500_DMA_DEV31_MSP0_SLIM0_CH0 = 31, |
50 | DB8500_DMA_DEV32_SD_MM1_RX = 32, | 55 | DB8500_DMA_DEV32_SD_MM1 = 32, |
51 | DB8500_DMA_DEV33_SPI2_RX = 33, | 56 | DB8500_DMA_DEV33_SPI2 = 33, |
52 | DB8500_DMA_DEV34_I2C3_RX2 = 34, | 57 | DB8500_DMA_DEV34_I2C3_RX2_TX2 = 34, |
53 | DB8500_DMA_DEV35_SPI1_RX = 35, | 58 | DB8500_DMA_DEV35_SPI1 = 35, |
54 | DB8500_DMA_DEV36_USB_OTG_IEP_3_11 = 36, | 59 | DB8500_DMA_DEV36_USB_OTG_IEP_AND_OEP_3_11 = 36, |
55 | DB8500_DMA_DEV37_USB_OTG_IEP_2_10 = 37, | 60 | DB8500_DMA_DEV37_USB_OTG_IEP_AND_OEP_2_10 = 37, |
56 | DB8500_DMA_DEV38_USB_OTG_IEP_1_9 = 38, | 61 | DB8500_DMA_DEV38_USB_OTG_IEP_AND_OEP_1_9 = 38, |
57 | DB8500_DMA_DEV39_USB_OTG_IEP_8 = 39, | 62 | DB8500_DMA_DEV39_USB_OTG_IEP_AND_OEP_8 = 39, |
58 | DB8500_DMA_DEV40_SPI3_RX = 40, | 63 | DB8500_DMA_DEV40_SPI3 = 40, |
59 | DB8500_DMA_DEV41_SD_MM3_RX = 41, | 64 | DB8500_DMA_DEV41_SD_MM3 = 41, |
60 | DB8500_DMA_DEV42_SD_MM4_RX = 42, | 65 | DB8500_DMA_DEV42_SD_MM4 = 42, |
61 | DB8500_DMA_DEV43_SD_MM5_RX = 43, | 66 | DB8500_DMA_DEV43_SD_MM5 = 43, |
62 | DB8500_DMA_DEV44_SRC_SXA4_RX_TX = 44, | 67 | DB8500_DMA_DEV44_SXA4 = 44, |
63 | DB8500_DMA_DEV45_SRC_SXA5_RX_TX = 45, | 68 | DB8500_DMA_DEV45_SXA5 = 45, |
64 | DB8500_DMA_DEV46_SLIM0_CH8_RX_SRC_SXA6_RX_TX = 46, | 69 | DB8500_DMA_DEV46_SLIM0_CH8_SRC_SXA6 = 46, |
65 | DB8500_DMA_DEV47_SLIM0_CH9_RX_SRC_SXA7_RX_TX = 47, | 70 | DB8500_DMA_DEV47_SLIM0_CH9_SRC_SXA7 = 47, |
66 | DB8500_DMA_DEV48_CAC1_RX = 48, | 71 | DB8500_DMA_DEV48_CAC1 = 48, |
67 | /* 49, 50 and 51 are not used */ | 72 | DB8500_DMA_DEV49_CAC1_TX_HAC1_TX = 49, /* TX only */ |
68 | DB8500_DMA_DEV52_SLIM0_CH4_RX_HSI_RX_CH4 = 52, | 73 | DB8500_DMA_DEV50_HAC1_TX = 50, /* TX only */ |
69 | DB8500_DMA_DEV53_SLIM0_CH5_RX_HSI_RX_CH5 = 53, | 74 | DB8500_DMA_MEMCPY_TX_0 = 51, /* TX only */ |
70 | DB8500_DMA_DEV54_SLIM0_CH6_RX_HSI_RX_CH6 = 54, | 75 | DB8500_DMA_DEV52_SLIM0_CH4_HSI_CH4 = 52, |
71 | DB8500_DMA_DEV55_SLIM0_CH7_RX_HSI_RX_CH7 = 55, | 76 | DB8500_DMA_DEV53_SLIM0_CH5_HSI_CH5 = 53, |
72 | /* 56, 57, 58, 59 and 60 are not used */ | 77 | DB8500_DMA_DEV54_SLIM0_CH6_HSI_CH6 = 54, |
73 | DB8500_DMA_DEV61_CAC0_RX = 61, | 78 | DB8500_DMA_DEV55_SLIM0_CH7_HSI_CH7 = 55, |
74 | /* 62 and 63 are not used */ | 79 | /* 56 -> 60 are channels reserved for memcpy only */ |
75 | }; | 80 | DB8500_DMA_DEV61_CAC0 = 61, |
76 | 81 | DB8500_DMA_DEV62_CAC0_TX_HAC0_TX = 62, /* TX only */ | |
77 | enum dma_dest_dev_type { | 82 | DB8500_DMA_DEV63_HAC0_TX = 63, /* TX only */ |
78 | DB8500_DMA_DEV0_SPI0_TX = 0, | ||
79 | DB8500_DMA_DEV1_SD_MMC0_TX = 1, | ||
80 | DB8500_DMA_DEV2_SD_MMC1_TX = 2, | ||
81 | DB8500_DMA_DEV3_SD_MMC2_TX = 3, | ||
82 | DB8500_DMA_DEV4_I2C1_TX = 4, | ||
83 | DB8500_DMA_DEV5_I2C3_TX = 5, | ||
84 | DB8500_DMA_DEV6_I2C2_TX = 6, | ||
85 | DB8500_DMA_DEV7_I2C4_TX = 7, /* Only on V1 and later */ | ||
86 | DB8500_DMA_DEV8_SSP0_TX = 8, | ||
87 | DB8500_DMA_DEV9_SSP1_TX = 9, | ||
88 | /* 10 is not used*/ | ||
89 | DB8500_DMA_DEV11_UART2_TX = 11, | ||
90 | DB8500_DMA_DEV12_UART1_TX = 12, | ||
91 | DB8500_DMA_DEV13_UART0_TX = 13, | ||
92 | DB8500_DMA_DEV14_MSP2_TX = 14, | ||
93 | DB8500_DMA_DEV15_I2C0_TX = 15, | ||
94 | DB8500_DMA_DEV16_USB_OTG_OEP_7_15 = 16, | ||
95 | DB8500_DMA_DEV17_USB_OTG_OEP_6_14 = 17, | ||
96 | DB8500_DMA_DEV18_USB_OTG_OEP_5_13 = 18, | ||
97 | DB8500_DMA_DEV19_USB_OTG_OEP_4_12 = 19, | ||
98 | DB8500_DMA_DEV20_SLIM0_CH0_TX_HSI_TX_CH0 = 20, | ||
99 | DB8500_DMA_DEV21_SLIM0_CH1_TX_HSI_TX_CH1 = 21, | ||
100 | DB8500_DMA_DEV22_SLIM0_CH2_TX_HSI_TX_CH2 = 22, | ||
101 | DB8500_DMA_DEV23_SLIM0_CH3_TX_HSI_TX_CH3 = 23, | ||
102 | DB8500_DMA_DEV24_DST_SXA0_RX_TX = 24, | ||
103 | DB8500_DMA_DEV25_DST_SXA1_RX_TX = 25, | ||
104 | DB8500_DMA_DEV26_DST_SXA2_RX_TX = 26, | ||
105 | DB8500_DMA_DEV27_DST_SXA3_RX_TX = 27, | ||
106 | DB8500_DMA_DEV28_SD_MM2_TX = 28, | ||
107 | DB8500_DMA_DEV29_SD_MM0_TX = 29, | ||
108 | DB8500_DMA_DEV30_MSP1_TX = 30, | ||
109 | DB8500_DMA_DEV31_MSP0_TX_SLIM0_CH0_TX = 31, | ||
110 | DB8500_DMA_DEV32_SD_MM1_TX = 32, | ||
111 | DB8500_DMA_DEV33_SPI2_TX = 33, | ||
112 | DB8500_DMA_DEV34_I2C3_TX2 = 34, | ||
113 | DB8500_DMA_DEV35_SPI1_TX = 35, | ||
114 | DB8500_DMA_DEV36_USB_OTG_OEP_3_11 = 36, | ||
115 | DB8500_DMA_DEV37_USB_OTG_OEP_2_10 = 37, | ||
116 | DB8500_DMA_DEV38_USB_OTG_OEP_1_9 = 38, | ||
117 | DB8500_DMA_DEV39_USB_OTG_OEP_8 = 39, | ||
118 | DB8500_DMA_DEV40_SPI3_TX = 40, | ||
119 | DB8500_DMA_DEV41_SD_MM3_TX = 41, | ||
120 | DB8500_DMA_DEV42_SD_MM4_TX = 42, | ||
121 | DB8500_DMA_DEV43_SD_MM5_TX = 43, | ||
122 | DB8500_DMA_DEV44_DST_SXA4_RX_TX = 44, | ||
123 | DB8500_DMA_DEV45_DST_SXA5_RX_TX = 45, | ||
124 | DB8500_DMA_DEV46_SLIM0_CH8_TX_DST_SXA6_RX_TX = 46, | ||
125 | DB8500_DMA_DEV47_SLIM0_CH9_TX_DST_SXA7_RX_TX = 47, | ||
126 | DB8500_DMA_DEV48_CAC1_TX = 48, | ||
127 | DB8500_DMA_DEV49_CAC1_TX_HAC1_TX = 49, | ||
128 | DB8500_DMA_DEV50_HAC1_TX = 50, | ||
129 | DB8500_DMA_MEMCPY_TX_0 = 51, | ||
130 | DB8500_DMA_DEV52_SLIM1_CH4_TX_HSI_TX_CH4 = 52, | ||
131 | DB8500_DMA_DEV53_SLIM1_CH5_TX_HSI_TX_CH5 = 53, | ||
132 | DB8500_DMA_DEV54_SLIM1_CH6_TX_HSI_TX_CH6 = 54, | ||
133 | DB8500_DMA_DEV55_SLIM1_CH7_TX_HSI_TX_CH7 = 55, | ||
134 | DB8500_DMA_MEMCPY_TX_1 = 56, | ||
135 | DB8500_DMA_MEMCPY_TX_2 = 57, | ||
136 | DB8500_DMA_MEMCPY_TX_3 = 58, | ||
137 | DB8500_DMA_MEMCPY_TX_4 = 59, | ||
138 | DB8500_DMA_MEMCPY_TX_5 = 60, | ||
139 | DB8500_DMA_DEV61_CAC0_TX = 61, | ||
140 | DB8500_DMA_DEV62_CAC0_TX_HAC0_TX = 62, | ||
141 | DB8500_DMA_DEV63_HAC0_TX = 63, | ||
142 | }; | 83 | }; |
143 | 84 | ||
144 | #endif | 85 | #endif |
diff --git a/arch/arm/mach-ux500/usb.c b/arch/arm/mach-ux500/usb.c index 2dfc72f7cd8a..72754e369417 100644 --- a/arch/arm/mach-ux500/usb.c +++ b/arch/arm/mach-ux500/usb.c | |||
@@ -15,21 +15,11 @@ | |||
15 | #define MUSB_DMA40_RX_CH { \ | 15 | #define MUSB_DMA40_RX_CH { \ |
16 | .mode = STEDMA40_MODE_LOGICAL, \ | 16 | .mode = STEDMA40_MODE_LOGICAL, \ |
17 | .dir = STEDMA40_PERIPH_TO_MEM, \ | 17 | .dir = STEDMA40_PERIPH_TO_MEM, \ |
18 | .dst_dev_type = STEDMA40_DEV_DST_MEMORY, \ | ||
19 | .src_info.data_width = STEDMA40_WORD_WIDTH, \ | ||
20 | .dst_info.data_width = STEDMA40_WORD_WIDTH, \ | ||
21 | .src_info.psize = STEDMA40_PSIZE_LOG_16, \ | ||
22 | .dst_info.psize = STEDMA40_PSIZE_LOG_16, \ | ||
23 | } | 18 | } |
24 | 19 | ||
25 | #define MUSB_DMA40_TX_CH { \ | 20 | #define MUSB_DMA40_TX_CH { \ |
26 | .mode = STEDMA40_MODE_LOGICAL, \ | 21 | .mode = STEDMA40_MODE_LOGICAL, \ |
27 | .dir = STEDMA40_MEM_TO_PERIPH, \ | 22 | .dir = STEDMA40_MEM_TO_PERIPH, \ |
28 | .src_dev_type = STEDMA40_DEV_SRC_MEMORY, \ | ||
29 | .src_info.data_width = STEDMA40_WORD_WIDTH, \ | ||
30 | .dst_info.data_width = STEDMA40_WORD_WIDTH, \ | ||
31 | .src_info.psize = STEDMA40_PSIZE_LOG_16, \ | ||
32 | .dst_info.psize = STEDMA40_PSIZE_LOG_16, \ | ||
33 | } | 23 | } |
34 | 24 | ||
35 | static struct stedma40_chan_cfg musb_dma_rx_ch[UX500_MUSB_DMA_NUM_RX_CHANNELS] | 25 | static struct stedma40_chan_cfg musb_dma_rx_ch[UX500_MUSB_DMA_NUM_RX_CHANNELS] |
@@ -125,20 +115,20 @@ struct platform_device ux500_musb_device = { | |||
125 | .resource = usb_resources, | 115 | .resource = usb_resources, |
126 | }; | 116 | }; |
127 | 117 | ||
128 | static inline void ux500_usb_dma_update_rx_ch_config(int *src_dev_type) | 118 | static inline void ux500_usb_dma_update_rx_ch_config(int *dev_type) |
129 | { | 119 | { |
130 | u32 idx; | 120 | u32 idx; |
131 | 121 | ||
132 | for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_CHANNELS; idx++) | 122 | for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_CHANNELS; idx++) |
133 | musb_dma_rx_ch[idx].src_dev_type = src_dev_type[idx]; | 123 | musb_dma_rx_ch[idx].dev_type = dev_type[idx]; |
134 | } | 124 | } |
135 | 125 | ||
136 | static inline void ux500_usb_dma_update_tx_ch_config(int *dst_dev_type) | 126 | static inline void ux500_usb_dma_update_tx_ch_config(int *dev_type) |
137 | { | 127 | { |
138 | u32 idx; | 128 | u32 idx; |
139 | 129 | ||
140 | for (idx = 0; idx < UX500_MUSB_DMA_NUM_TX_CHANNELS; idx++) | 130 | for (idx = 0; idx < UX500_MUSB_DMA_NUM_TX_CHANNELS; idx++) |
141 | musb_dma_tx_ch[idx].dst_dev_type = dst_dev_type[idx]; | 131 | musb_dma_tx_ch[idx].dev_type = dev_type[idx]; |
142 | } | 132 | } |
143 | 133 | ||
144 | void ux500_add_usb(struct device *parent, resource_size_t base, int irq, | 134 | void ux500_add_usb(struct device *parent, resource_size_t base, int irq, |