aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ux500
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2013-06-14 19:53:54 -0400
committerOlof Johansson <olof@lixom.net>2013-06-14 19:53:54 -0400
commit2c3165ebb641e0ff3faf1c87ed1c8fbd85871da0 (patch)
treeecf0bef4ee0b56029d0f08aed941aca78da99424 /arch/arm/mach-ux500
parent0d86331b4cc9b0c52d41bbe78cb4b75f40b7381c (diff)
parent499c2bc3cc89dcbbf08aa526cd4a984b92a4d2a8 (diff)
Merge tag 'ux500-dma40-for-arm-soc-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson into next/drivers
From Linus Walleij: Second set of DMA40 changes: refactorings and device tree support for the DMA40. Now with MUSB and some platform data removal. * tag 'ux500-dma40-for-arm-soc-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-stericsson: dmaengine: ste_dma40: Fetch disabled channels from DT dmaengine: ste_dma40: Fetch the number of physical channels from DT ARM: ux500: Stop passing DMA platform data though AUXDATA dmaengine: ste_dma40: Allow memcpy channels to be configured from DT dmaengine: ste_dma40_ll: Replace meaningless register set with comment dmaengine: ste_dma40: Convert data_width from register bit format to value dmaengine: ste_dma40_ll: Use the BIT macro to replace ugly '(1 << x)'s ARM: ux500: Remove recently unused stedma40_xfer_dir enums dmaengine: ste_dma40: Replace ST-E's home-brew DMA direction defs with generic ones ARM: ux500: Replace ST-E's home-brew DMA direction definition with the generic one dmaengine: ste_dma40: Use the BIT macro to replace ugly '(1 << x)'s ARM: ux500: Remove empty function u8500_of_init_devices() ARM: ux500: Remove ux500-musb platform registation when booting with DT usb: musb: ux500: add device tree probing support usb: musb: ux500: attempt to find channels by name before using pdata usb: musb: ux500: harden checks for platform data usb: musb: ux500: take the dma_mask from coherent_dma_mask usb: musb: ux500: move the MUSB HDRC configuration into the driver usb: musb: ux500: move channel number knowledge into the driver
Diffstat (limited to 'arch/arm/mach-ux500')
-rw-r--r--arch/arm/mach-ux500/board-mop500-audio.c12
-rw-r--r--arch/arm/mach-ux500/board-mop500-sdi.c16
-rw-r--r--arch/arm/mach-ux500/board-mop500.c22
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c19
-rw-r--r--arch/arm/mach-ux500/usb.c29
5 files changed, 35 insertions, 63 deletions
diff --git a/arch/arm/mach-ux500/board-mop500-audio.c b/arch/arm/mach-ux500/board-mop500-audio.c
index ec872622340f..bfe443daf4b0 100644
--- a/arch/arm/mach-ux500/board-mop500-audio.c
+++ b/arch/arm/mach-ux500/board-mop500-audio.c
@@ -21,13 +21,13 @@
21 21
22static struct stedma40_chan_cfg msp0_dma_rx = { 22static struct stedma40_chan_cfg msp0_dma_rx = {
23 .high_priority = true, 23 .high_priority = true,
24 .dir = STEDMA40_PERIPH_TO_MEM, 24 .dir = DMA_DEV_TO_MEM,
25 .dev_type = DB8500_DMA_DEV31_MSP0_SLIM0_CH0, 25 .dev_type = DB8500_DMA_DEV31_MSP0_SLIM0_CH0,
26}; 26};
27 27
28static struct stedma40_chan_cfg msp0_dma_tx = { 28static struct stedma40_chan_cfg msp0_dma_tx = {
29 .high_priority = true, 29 .high_priority = true,
30 .dir = STEDMA40_MEM_TO_PERIPH, 30 .dir = DMA_MEM_TO_DEV,
31 .dev_type = DB8500_DMA_DEV31_MSP0_SLIM0_CH0, 31 .dev_type = DB8500_DMA_DEV31_MSP0_SLIM0_CH0,
32}; 32};
33 33
@@ -39,13 +39,13 @@ struct msp_i2s_platform_data msp0_platform_data = {
39 39
40static struct stedma40_chan_cfg msp1_dma_rx = { 40static struct stedma40_chan_cfg msp1_dma_rx = {
41 .high_priority = true, 41 .high_priority = true,
42 .dir = STEDMA40_PERIPH_TO_MEM, 42 .dir = DMA_DEV_TO_MEM,
43 .dev_type = DB8500_DMA_DEV30_MSP3, 43 .dev_type = DB8500_DMA_DEV30_MSP3,
44}; 44};
45 45
46static struct stedma40_chan_cfg msp1_dma_tx = { 46static struct stedma40_chan_cfg msp1_dma_tx = {
47 .high_priority = true, 47 .high_priority = true,
48 .dir = STEDMA40_MEM_TO_PERIPH, 48 .dir = DMA_MEM_TO_DEV,
49 .dev_type = DB8500_DMA_DEV30_MSP1, 49 .dev_type = DB8500_DMA_DEV30_MSP1,
50}; 50};
51 51
@@ -57,13 +57,13 @@ struct msp_i2s_platform_data msp1_platform_data = {
57 57
58static struct stedma40_chan_cfg msp2_dma_rx = { 58static struct stedma40_chan_cfg msp2_dma_rx = {
59 .high_priority = true, 59 .high_priority = true,
60 .dir = STEDMA40_PERIPH_TO_MEM, 60 .dir = DMA_DEV_TO_MEM,
61 .dev_type = DB8500_DMA_DEV14_MSP2, 61 .dev_type = DB8500_DMA_DEV14_MSP2,
62}; 62};
63 63
64static struct stedma40_chan_cfg msp2_dma_tx = { 64static struct stedma40_chan_cfg msp2_dma_tx = {
65 .high_priority = true, 65 .high_priority = true,
66 .dir = STEDMA40_MEM_TO_PERIPH, 66 .dir = DMA_MEM_TO_DEV,
67 .dev_type = DB8500_DMA_DEV14_MSP2, 67 .dev_type = DB8500_DMA_DEV14_MSP2,
68 .use_fixed_channel = true, 68 .use_fixed_channel = true,
69 .phy_channel = 1, 69 .phy_channel = 1,
diff --git a/arch/arm/mach-ux500/board-mop500-sdi.c b/arch/arm/mach-ux500/board-mop500-sdi.c
index 29be714b8a73..e6891d1933fa 100644
--- a/arch/arm/mach-ux500/board-mop500-sdi.c
+++ b/arch/arm/mach-ux500/board-mop500-sdi.c
@@ -34,13 +34,13 @@
34#ifdef CONFIG_STE_DMA40 34#ifdef CONFIG_STE_DMA40
35struct stedma40_chan_cfg mop500_sdi0_dma_cfg_rx = { 35struct 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 = DMA_DEV_TO_MEM,
38 .dev_type = DB8500_DMA_DEV29_SD_MM0, 38 .dev_type = DB8500_DMA_DEV29_SD_MM0,
39}; 39};
40 40
41static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = { 41static struct stedma40_chan_cfg mop500_sdi0_dma_cfg_tx = {
42 .mode = STEDMA40_MODE_LOGICAL, 42 .mode = STEDMA40_MODE_LOGICAL,
43 .dir = STEDMA40_MEM_TO_PERIPH, 43 .dir = DMA_MEM_TO_DEV,
44 .dev_type = DB8500_DMA_DEV29_SD_MM0, 44 .dev_type = DB8500_DMA_DEV29_SD_MM0,
45}; 45};
46#endif 46#endif
@@ -81,13 +81,13 @@ void mop500_sdi_tc35892_init(struct device *parent)
81#ifdef CONFIG_STE_DMA40 81#ifdef CONFIG_STE_DMA40
82static struct stedma40_chan_cfg sdi1_dma_cfg_rx = { 82static struct stedma40_chan_cfg sdi1_dma_cfg_rx = {
83 .mode = STEDMA40_MODE_LOGICAL, 83 .mode = STEDMA40_MODE_LOGICAL,
84 .dir = STEDMA40_PERIPH_TO_MEM, 84 .dir = DMA_DEV_TO_MEM,
85 .dev_type = DB8500_DMA_DEV32_SD_MM1, 85 .dev_type = DB8500_DMA_DEV32_SD_MM1,
86}; 86};
87 87
88static struct stedma40_chan_cfg sdi1_dma_cfg_tx = { 88static struct stedma40_chan_cfg sdi1_dma_cfg_tx = {
89 .mode = STEDMA40_MODE_LOGICAL, 89 .mode = STEDMA40_MODE_LOGICAL,
90 .dir = STEDMA40_MEM_TO_PERIPH, 90 .dir = DMA_MEM_TO_DEV,
91 .dev_type = DB8500_DMA_DEV32_SD_MM1, 91 .dev_type = DB8500_DMA_DEV32_SD_MM1,
92}; 92};
93#endif 93#endif
@@ -112,13 +112,13 @@ struct mmci_platform_data mop500_sdi1_data = {
112#ifdef CONFIG_STE_DMA40 112#ifdef CONFIG_STE_DMA40
113struct stedma40_chan_cfg mop500_sdi2_dma_cfg_rx = { 113struct stedma40_chan_cfg mop500_sdi2_dma_cfg_rx = {
114 .mode = STEDMA40_MODE_LOGICAL, 114 .mode = STEDMA40_MODE_LOGICAL,
115 .dir = STEDMA40_PERIPH_TO_MEM, 115 .dir = DMA_DEV_TO_MEM,
116 .dev_type = DB8500_DMA_DEV28_SD_MM2, 116 .dev_type = DB8500_DMA_DEV28_SD_MM2,
117}; 117};
118 118
119static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = { 119static struct stedma40_chan_cfg mop500_sdi2_dma_cfg_tx = {
120 .mode = STEDMA40_MODE_LOGICAL, 120 .mode = STEDMA40_MODE_LOGICAL,
121 .dir = STEDMA40_MEM_TO_PERIPH, 121 .dir = DMA_MEM_TO_DEV,
122 .dev_type = DB8500_DMA_DEV28_SD_MM2, 122 .dev_type = DB8500_DMA_DEV28_SD_MM2,
123}; 123};
124#endif 124#endif
@@ -144,13 +144,13 @@ struct mmci_platform_data mop500_sdi2_data = {
144#ifdef CONFIG_STE_DMA40 144#ifdef CONFIG_STE_DMA40
145struct stedma40_chan_cfg mop500_sdi4_dma_cfg_rx = { 145struct stedma40_chan_cfg mop500_sdi4_dma_cfg_rx = {
146 .mode = STEDMA40_MODE_LOGICAL, 146 .mode = STEDMA40_MODE_LOGICAL,
147 .dir = STEDMA40_PERIPH_TO_MEM, 147 .dir = DMA_DEV_TO_MEM,
148 .dev_type = DB8500_DMA_DEV42_SD_MM4, 148 .dev_type = DB8500_DMA_DEV42_SD_MM4,
149}; 149};
150 150
151static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = { 151static struct stedma40_chan_cfg mop500_sdi4_dma_cfg_tx = {
152 .mode = STEDMA40_MODE_LOGICAL, 152 .mode = STEDMA40_MODE_LOGICAL,
153 .dir = STEDMA40_MEM_TO_PERIPH, 153 .dir = DMA_MEM_TO_DEV,
154 .dev_type = DB8500_DMA_DEV42_SD_MM4, 154 .dev_type = DB8500_DMA_DEV42_SD_MM4,
155}; 155};
156#endif 156#endif
diff --git a/arch/arm/mach-ux500/board-mop500.c b/arch/arm/mach-ux500/board-mop500.c
index f59d52806afe..2d70e2b45660 100644
--- a/arch/arm/mach-ux500/board-mop500.c
+++ b/arch/arm/mach-ux500/board-mop500.c
@@ -424,19 +424,19 @@ void mop500_snowball_ethernet_clock_enable(void)
424 424
425static struct cryp_platform_data u8500_cryp1_platform_data = { 425static struct cryp_platform_data u8500_cryp1_platform_data = {
426 .mem_to_engine = { 426 .mem_to_engine = {
427 .dir = STEDMA40_MEM_TO_PERIPH, 427 .dir = DMA_MEM_TO_DEV,
428 .dev_type = DB8500_DMA_DEV48_CAC1, 428 .dev_type = DB8500_DMA_DEV48_CAC1,
429 .mode = STEDMA40_MODE_LOGICAL, 429 .mode = STEDMA40_MODE_LOGICAL,
430 }, 430 },
431 .engine_to_mem = { 431 .engine_to_mem = {
432 .dir = STEDMA40_PERIPH_TO_MEM, 432 .dir = DMA_DEV_TO_MEM,
433 .dev_type = DB8500_DMA_DEV48_CAC1, 433 .dev_type = DB8500_DMA_DEV48_CAC1,
434 .mode = STEDMA40_MODE_LOGICAL, 434 .mode = STEDMA40_MODE_LOGICAL,
435 } 435 }
436}; 436};
437 437
438static struct stedma40_chan_cfg u8500_hash_dma_cfg_tx = { 438static struct stedma40_chan_cfg u8500_hash_dma_cfg_tx = {
439 .dir = STEDMA40_MEM_TO_PERIPH, 439 .dir = DMA_MEM_TO_DEV,
440 .dev_type = DB8500_DMA_DEV50_HAC1_TX, 440 .dev_type = DB8500_DMA_DEV50_HAC1_TX,
441 .mode = STEDMA40_MODE_LOGICAL, 441 .mode = STEDMA40_MODE_LOGICAL,
442}; 442};
@@ -455,13 +455,13 @@ static struct platform_device *mop500_platform_devs[] __initdata = {
455#ifdef CONFIG_STE_DMA40 455#ifdef CONFIG_STE_DMA40
456static struct stedma40_chan_cfg ssp0_dma_cfg_rx = { 456static struct stedma40_chan_cfg ssp0_dma_cfg_rx = {
457 .mode = STEDMA40_MODE_LOGICAL, 457 .mode = STEDMA40_MODE_LOGICAL,
458 .dir = STEDMA40_PERIPH_TO_MEM, 458 .dir = DMA_DEV_TO_MEM,
459 .dev_type = DB8500_DMA_DEV8_SSP0, 459 .dev_type = DB8500_DMA_DEV8_SSP0,
460}; 460};
461 461
462static struct stedma40_chan_cfg ssp0_dma_cfg_tx = { 462static struct stedma40_chan_cfg ssp0_dma_cfg_tx = {
463 .mode = STEDMA40_MODE_LOGICAL, 463 .mode = STEDMA40_MODE_LOGICAL,
464 .dir = STEDMA40_MEM_TO_PERIPH, 464 .dir = DMA_MEM_TO_DEV,
465 .dev_type = DB8500_DMA_DEV8_SSP0, 465 .dev_type = DB8500_DMA_DEV8_SSP0,
466}; 466};
467#endif 467#endif
@@ -490,37 +490,37 @@ static void __init mop500_spi_init(struct device *parent)
490#ifdef CONFIG_STE_DMA40 490#ifdef CONFIG_STE_DMA40
491static struct stedma40_chan_cfg uart0_dma_cfg_rx = { 491static struct stedma40_chan_cfg uart0_dma_cfg_rx = {
492 .mode = STEDMA40_MODE_LOGICAL, 492 .mode = STEDMA40_MODE_LOGICAL,
493 .dir = STEDMA40_PERIPH_TO_MEM, 493 .dir = DMA_DEV_TO_MEM,
494 .dev_type = DB8500_DMA_DEV13_UART0, 494 .dev_type = DB8500_DMA_DEV13_UART0,
495}; 495};
496 496
497static struct stedma40_chan_cfg uart0_dma_cfg_tx = { 497static struct stedma40_chan_cfg uart0_dma_cfg_tx = {
498 .mode = STEDMA40_MODE_LOGICAL, 498 .mode = STEDMA40_MODE_LOGICAL,
499 .dir = STEDMA40_MEM_TO_PERIPH, 499 .dir = DMA_MEM_TO_DEV,
500 .dev_type = DB8500_DMA_DEV13_UART0, 500 .dev_type = DB8500_DMA_DEV13_UART0,
501}; 501};
502 502
503static struct stedma40_chan_cfg uart1_dma_cfg_rx = { 503static struct stedma40_chan_cfg uart1_dma_cfg_rx = {
504 .mode = STEDMA40_MODE_LOGICAL, 504 .mode = STEDMA40_MODE_LOGICAL,
505 .dir = STEDMA40_PERIPH_TO_MEM, 505 .dir = DMA_DEV_TO_MEM,
506 .dev_type = DB8500_DMA_DEV12_UART1, 506 .dev_type = DB8500_DMA_DEV12_UART1,
507}; 507};
508 508
509static struct stedma40_chan_cfg uart1_dma_cfg_tx = { 509static struct stedma40_chan_cfg uart1_dma_cfg_tx = {
510 .mode = STEDMA40_MODE_LOGICAL, 510 .mode = STEDMA40_MODE_LOGICAL,
511 .dir = STEDMA40_MEM_TO_PERIPH, 511 .dir = DMA_MEM_TO_DEV,
512 .dev_type = DB8500_DMA_DEV12_UART1, 512 .dev_type = DB8500_DMA_DEV12_UART1,
513}; 513};
514 514
515static struct stedma40_chan_cfg uart2_dma_cfg_rx = { 515static struct stedma40_chan_cfg uart2_dma_cfg_rx = {
516 .mode = STEDMA40_MODE_LOGICAL, 516 .mode = STEDMA40_MODE_LOGICAL,
517 .dir = STEDMA40_PERIPH_TO_MEM, 517 .dir = DMA_DEV_TO_MEM,
518 .dev_type = DB8500_DMA_DEV11_UART2, 518 .dev_type = DB8500_DMA_DEV11_UART2,
519}; 519};
520 520
521static struct stedma40_chan_cfg uart2_dma_cfg_tx = { 521static struct stedma40_chan_cfg uart2_dma_cfg_tx = {
522 .mode = STEDMA40_MODE_LOGICAL, 522 .mode = STEDMA40_MODE_LOGICAL,
523 .dir = STEDMA40_MEM_TO_PERIPH, 523 .dir = DMA_MEM_TO_DEV,
524 .dev_type = DB8500_DMA_DEV11_UART2, 524 .dev_type = DB8500_DMA_DEV11_UART2,
525}; 525};
526#endif 526#endif
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 243b91b66ae0..f63847dabe7d 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -215,17 +215,6 @@ struct device * __init u8500_init_devices(void)
215} 215}
216 216
217#ifdef CONFIG_MACH_UX500_DT 217#ifdef CONFIG_MACH_UX500_DT
218
219/* TODO: Once all pieces are DT:ed, remove completely. */
220static struct device * __init u8500_of_init_devices(void)
221{
222 struct device *parent = db8500_soc_device_init();
223
224 db8500_add_usb(parent, usb_db8500_dma_cfg, usb_db8500_dma_cfg);
225
226 return parent;
227}
228
229static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { 218static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
230 /* Requires call-back bindings. */ 219 /* Requires call-back bindings. */
231 OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata), 220 OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
@@ -269,8 +258,7 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
269 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000, 258 OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
270 "ux500-msp-i2s.3", &msp3_platform_data), 259 "ux500-msp-i2s.3", &msp3_platform_data),
271 /* Requires clock name bindings and channel address lookup table. */ 260 /* Requires clock name bindings and channel address lookup table. */
272 OF_DEV_AUXDATA("stericsson,db8500-dma40", 0x801C0000, 261 OF_DEV_AUXDATA("stericsson,db8500-dma40", 0x801C0000, "dma40.0", NULL),
273 "dma40.0", &dma40_plat_data),
274 {}, 262 {},
275}; 263};
276 264
@@ -284,7 +272,7 @@ static const struct of_device_id u8500_local_bus_nodes[] = {
284 272
285static void __init u8500_init_machine(void) 273static void __init u8500_init_machine(void)
286{ 274{
287 struct device *parent = NULL; 275 struct device *parent = db8500_soc_device_init();
288 276
289 /* Pinmaps must be in place before devices register */ 277 /* Pinmaps must be in place before devices register */
290 if (of_machine_is_compatible("st-ericsson,mop500")) 278 if (of_machine_is_compatible("st-ericsson,mop500"))
@@ -297,9 +285,6 @@ static void __init u8500_init_machine(void)
297 else if (of_machine_is_compatible("st-ericsson,ccu9540")) {} 285 else if (of_machine_is_compatible("st-ericsson,ccu9540")) {}
298 /* TODO: Add pinmaps for ccu9540 board. */ 286 /* TODO: Add pinmaps for ccu9540 board. */
299 287
300 /* TODO: Export SoC, USB, cpu-freq and DMA40 */
301 parent = u8500_of_init_devices();
302
303 /* automatically probe child nodes of db8500 device */ 288 /* automatically probe child nodes of db8500 device */
304 of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent); 289 of_platform_populate(NULL, u8500_local_bus_nodes, u8500_auxdata_lookup, parent);
305} 290}
diff --git a/arch/arm/mach-ux500/usb.c b/arch/arm/mach-ux500/usb.c
index 72754e369417..b7bd8d3a5507 100644
--- a/arch/arm/mach-ux500/usb.c
+++ b/arch/arm/mach-ux500/usb.c
@@ -14,15 +14,15 @@
14 14
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 = DMA_DEV_TO_MEM, \
18 } 18 }
19 19
20#define MUSB_DMA40_TX_CH { \ 20#define MUSB_DMA40_TX_CH { \
21 .mode = STEDMA40_MODE_LOGICAL, \ 21 .mode = STEDMA40_MODE_LOGICAL, \
22 .dir = STEDMA40_MEM_TO_PERIPH, \ 22 .dir = DMA_MEM_TO_DEV, \
23 } 23 }
24 24
25static struct stedma40_chan_cfg musb_dma_rx_ch[UX500_MUSB_DMA_NUM_RX_CHANNELS] 25static struct stedma40_chan_cfg musb_dma_rx_ch[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS]
26 = { 26 = {
27 MUSB_DMA40_RX_CH, 27 MUSB_DMA40_RX_CH,
28 MUSB_DMA40_RX_CH, 28 MUSB_DMA40_RX_CH,
@@ -34,7 +34,7 @@ static struct stedma40_chan_cfg musb_dma_rx_ch[UX500_MUSB_DMA_NUM_RX_CHANNELS]
34 MUSB_DMA40_RX_CH 34 MUSB_DMA40_RX_CH
35}; 35};
36 36
37static struct stedma40_chan_cfg musb_dma_tx_ch[UX500_MUSB_DMA_NUM_TX_CHANNELS] 37static struct stedma40_chan_cfg musb_dma_tx_ch[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS]
38 = { 38 = {
39 MUSB_DMA40_TX_CH, 39 MUSB_DMA40_TX_CH,
40 MUSB_DMA40_TX_CH, 40 MUSB_DMA40_TX_CH,
@@ -46,7 +46,7 @@ static struct stedma40_chan_cfg musb_dma_tx_ch[UX500_MUSB_DMA_NUM_TX_CHANNELS]
46 MUSB_DMA40_TX_CH, 46 MUSB_DMA40_TX_CH,
47}; 47};
48 48
49static void *ux500_dma_rx_param_array[UX500_MUSB_DMA_NUM_RX_CHANNELS] = { 49static void *ux500_dma_rx_param_array[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS] = {
50 &musb_dma_rx_ch[0], 50 &musb_dma_rx_ch[0],
51 &musb_dma_rx_ch[1], 51 &musb_dma_rx_ch[1],
52 &musb_dma_rx_ch[2], 52 &musb_dma_rx_ch[2],
@@ -57,7 +57,7 @@ static void *ux500_dma_rx_param_array[UX500_MUSB_DMA_NUM_RX_CHANNELS] = {
57 &musb_dma_rx_ch[7] 57 &musb_dma_rx_ch[7]
58}; 58};
59 59
60static void *ux500_dma_tx_param_array[UX500_MUSB_DMA_NUM_TX_CHANNELS] = { 60static void *ux500_dma_tx_param_array[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS] = {
61 &musb_dma_tx_ch[0], 61 &musb_dma_tx_ch[0],
62 &musb_dma_tx_ch[1], 62 &musb_dma_tx_ch[1],
63 &musb_dma_tx_ch[2], 63 &musb_dma_tx_ch[2],
@@ -71,23 +71,11 @@ static void *ux500_dma_tx_param_array[UX500_MUSB_DMA_NUM_TX_CHANNELS] = {
71static struct ux500_musb_board_data musb_board_data = { 71static struct ux500_musb_board_data musb_board_data = {
72 .dma_rx_param_array = ux500_dma_rx_param_array, 72 .dma_rx_param_array = ux500_dma_rx_param_array,
73 .dma_tx_param_array = ux500_dma_tx_param_array, 73 .dma_tx_param_array = ux500_dma_tx_param_array,
74 .num_rx_channels = UX500_MUSB_DMA_NUM_RX_CHANNELS,
75 .num_tx_channels = UX500_MUSB_DMA_NUM_TX_CHANNELS,
76 .dma_filter = stedma40_filter, 74 .dma_filter = stedma40_filter,
77}; 75};
78 76
79static u64 ux500_musb_dmamask = DMA_BIT_MASK(32);
80
81static struct musb_hdrc_config musb_hdrc_config = {
82 .multipoint = true,
83 .dyn_fifo = true,
84 .num_eps = 16,
85 .ram_bits = 16,
86};
87
88static struct musb_hdrc_platform_data musb_platform_data = { 77static struct musb_hdrc_platform_data musb_platform_data = {
89 .mode = MUSB_OTG, 78 .mode = MUSB_OTG,
90 .config = &musb_hdrc_config,
91 .board_data = &musb_board_data, 79 .board_data = &musb_board_data,
92}; 80};
93 81
@@ -108,7 +96,6 @@ struct platform_device ux500_musb_device = {
108 .id = 0, 96 .id = 0,
109 .dev = { 97 .dev = {
110 .platform_data = &musb_platform_data, 98 .platform_data = &musb_platform_data,
111 .dma_mask = &ux500_musb_dmamask,
112 .coherent_dma_mask = DMA_BIT_MASK(32), 99 .coherent_dma_mask = DMA_BIT_MASK(32),
113 }, 100 },
114 .num_resources = ARRAY_SIZE(usb_resources), 101 .num_resources = ARRAY_SIZE(usb_resources),
@@ -119,7 +106,7 @@ static inline void ux500_usb_dma_update_rx_ch_config(int *dev_type)
119{ 106{
120 u32 idx; 107 u32 idx;
121 108
122 for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_CHANNELS; idx++) 109 for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_TX_CHANNELS; idx++)
123 musb_dma_rx_ch[idx].dev_type = dev_type[idx]; 110 musb_dma_rx_ch[idx].dev_type = dev_type[idx];
124} 111}
125 112
@@ -127,7 +114,7 @@ static inline void ux500_usb_dma_update_tx_ch_config(int *dev_type)
127{ 114{
128 u32 idx; 115 u32 idx;
129 116
130 for (idx = 0; idx < UX500_MUSB_DMA_NUM_TX_CHANNELS; idx++) 117 for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_TX_CHANNELS; idx++)
131 musb_dma_tx_ch[idx].dev_type = dev_type[idx]; 118 musb_dma_tx_ch[idx].dev_type = dev_type[idx];
132} 119}
133 120