diff options
author | Mian Yousaf Kaukab <mian-yousaf.kaukab@linaro.org> | 2011-01-21 12:24:19 -0500 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2011-03-14 09:05:12 -0400 |
commit | 741caea4e518f5374cc9ff7cfaabc0e591416420 (patch) | |
tree | a741ff013b24e550c829c15cd7a4a9d499209711 /arch | |
parent | 6f3f3c3f0b5c7b84a99f0aa99658d6c6cee8e700 (diff) |
mach-ux500: add MUSB to db5500 devices
- DMA tx and rx maps for usb channels are set to be configured at
runtime
- MUSB is enabled with soc specific base address, irq and dma
configurations
Signed-off-by: Mian Yousaf Kaukab <mian-yousaf.kaukab@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mach-ux500/cpu-db5500.c | 25 | ||||
-rw-r--r-- | arch/arm/mach-ux500/devices-db5500.h | 3 | ||||
-rw-r--r-- | arch/arm/mach-ux500/dma-db5500.c | 16 |
3 files changed, 44 insertions, 0 deletions
diff --git a/arch/arm/mach-ux500/cpu-db5500.c b/arch/arm/mach-ux500/cpu-db5500.c index 38a01c361263..c9dc2eff3cb2 100644 --- a/arch/arm/mach-ux500/cpu-db5500.c +++ b/arch/arm/mach-ux500/cpu-db5500.c | |||
@@ -19,8 +19,10 @@ | |||
19 | #include <mach/devices.h> | 19 | #include <mach/devices.h> |
20 | #include <mach/setup.h> | 20 | #include <mach/setup.h> |
21 | #include <mach/irqs.h> | 21 | #include <mach/irqs.h> |
22 | #include <mach/usb.h> | ||
22 | 23 | ||
23 | #include "devices-db5500.h" | 24 | #include "devices-db5500.h" |
25 | #include "ste-dma40-db5500.h" | ||
24 | 26 | ||
25 | static struct map_desc u5500_uart_io_desc[] __initdata = { | 27 | static struct map_desc u5500_uart_io_desc[] __initdata = { |
26 | __IO_DEV_DESC(U5500_UART0_BASE, SZ_4K), | 28 | __IO_DEV_DESC(U5500_UART0_BASE, SZ_4K), |
@@ -188,11 +190,34 @@ void __init u5500_map_io(void) | |||
188 | iotable_init(u5500_io_desc, ARRAY_SIZE(u5500_io_desc)); | 190 | iotable_init(u5500_io_desc, ARRAY_SIZE(u5500_io_desc)); |
189 | } | 191 | } |
190 | 192 | ||
193 | static int usb_db5500_rx_dma_cfg[] = { | ||
194 | DB5500_DMA_DEV4_USB_OTG_IEP_1_9, | ||
195 | DB5500_DMA_DEV5_USB_OTG_IEP_2_10, | ||
196 | DB5500_DMA_DEV6_USB_OTG_IEP_3_11, | ||
197 | DB5500_DMA_DEV20_USB_OTG_IEP_4_12, | ||
198 | DB5500_DMA_DEV21_USB_OTG_IEP_5_13, | ||
199 | DB5500_DMA_DEV22_USB_OTG_IEP_6_14, | ||
200 | DB5500_DMA_DEV23_USB_OTG_IEP_7_15, | ||
201 | DB5500_DMA_DEV38_USB_OTG_IEP_8 | ||
202 | }; | ||
203 | |||
204 | static int usb_db5500_tx_dma_cfg[] = { | ||
205 | DB5500_DMA_DEV4_USB_OTG_OEP_1_9, | ||
206 | DB5500_DMA_DEV5_USB_OTG_OEP_2_10, | ||
207 | DB5500_DMA_DEV6_USB_OTG_OEP_3_11, | ||
208 | DB5500_DMA_DEV20_USB_OTG_OEP_4_12, | ||
209 | DB5500_DMA_DEV21_USB_OTG_OEP_5_13, | ||
210 | DB5500_DMA_DEV22_USB_OTG_OEP_6_14, | ||
211 | DB5500_DMA_DEV23_USB_OTG_OEP_7_15, | ||
212 | DB5500_DMA_DEV38_USB_OTG_OEP_8 | ||
213 | }; | ||
214 | |||
191 | void __init u5500_init_devices(void) | 215 | void __init u5500_init_devices(void) |
192 | { | 216 | { |
193 | db5500_add_gpios(); | 217 | db5500_add_gpios(); |
194 | db5500_dma_init(); | 218 | db5500_dma_init(); |
195 | db5500_add_rtc(); | 219 | db5500_add_rtc(); |
220 | db5500_add_usb(usb_db5500_rx_dma_cfg, usb_db5500_tx_dma_cfg); | ||
196 | 221 | ||
197 | platform_add_devices(db5500_platform_devs, | 222 | platform_add_devices(db5500_platform_devs, |
198 | ARRAY_SIZE(db5500_platform_devs)); | 223 | ARRAY_SIZE(db5500_platform_devs)); |
diff --git a/arch/arm/mach-ux500/devices-db5500.h b/arch/arm/mach-ux500/devices-db5500.h index c8d7901c1f2d..481ae5c51206 100644 --- a/arch/arm/mach-ux500/devices-db5500.h +++ b/arch/arm/mach-ux500/devices-db5500.h | |||
@@ -34,6 +34,9 @@ | |||
34 | #define db5500_add_rtc() \ | 34 | #define db5500_add_rtc() \ |
35 | dbx500_add_rtc(U5500_RTC_BASE, IRQ_DB5500_RTC); | 35 | dbx500_add_rtc(U5500_RTC_BASE, IRQ_DB5500_RTC); |
36 | 36 | ||
37 | #define db5500_add_usb(rx_cfg, tx_cfg) \ | ||
38 | ux500_add_usb(U5500_USBOTG_BASE, IRQ_DB5500_USBOTG, rx_cfg, tx_cfg) | ||
39 | |||
37 | #define db5500_add_sdi0(pdata) \ | 40 | #define db5500_add_sdi0(pdata) \ |
38 | dbx500_add_sdi("sdi0", U5500_SDI0_BASE, IRQ_DB5500_SDMMC0, pdata) | 41 | dbx500_add_sdi("sdi0", U5500_SDI0_BASE, IRQ_DB5500_SDMMC0, pdata) |
39 | #define db5500_add_sdi1(pdata) \ | 42 | #define db5500_add_sdi1(pdata) \ |
diff --git a/arch/arm/mach-ux500/dma-db5500.c b/arch/arm/mach-ux500/dma-db5500.c index 32a061f8a95b..1cfab68ae417 100644 --- a/arch/arm/mach-ux500/dma-db5500.c +++ b/arch/arm/mach-ux500/dma-db5500.c | |||
@@ -73,11 +73,27 @@ static struct stedma40_chan_cfg dma40_memcpy_conf_log = { | |||
73 | */ | 73 | */ |
74 | static const dma_addr_t dma40_rx_map[DB5500_DMA_NR_DEV] = { | 74 | static const dma_addr_t dma40_rx_map[DB5500_DMA_NR_DEV] = { |
75 | [DB5500_DMA_DEV24_SDMMC0_RX] = -1, | 75 | [DB5500_DMA_DEV24_SDMMC0_RX] = -1, |
76 | [DB5500_DMA_DEV38_USB_OTG_IEP_8] = -1, | ||
77 | [DB5500_DMA_DEV23_USB_OTG_IEP_7_15] = -1, | ||
78 | [DB5500_DMA_DEV22_USB_OTG_IEP_6_14] = -1, | ||
79 | [DB5500_DMA_DEV21_USB_OTG_IEP_5_13] = -1, | ||
80 | [DB5500_DMA_DEV20_USB_OTG_IEP_4_12] = -1, | ||
81 | [DB5500_DMA_DEV6_USB_OTG_IEP_3_11] = -1, | ||
82 | [DB5500_DMA_DEV5_USB_OTG_IEP_2_10] = -1, | ||
83 | [DB5500_DMA_DEV4_USB_OTG_IEP_1_9] = -1, | ||
76 | }; | 84 | }; |
77 | 85 | ||
78 | /* Mapping between destination event lines and physical device address */ | 86 | /* Mapping between destination event lines and physical device address */ |
79 | static const dma_addr_t dma40_tx_map[DB5500_DMA_NR_DEV] = { | 87 | static const dma_addr_t dma40_tx_map[DB5500_DMA_NR_DEV] = { |
80 | [DB5500_DMA_DEV24_SDMMC0_TX] = -1, | 88 | [DB5500_DMA_DEV24_SDMMC0_TX] = -1, |
89 | [DB5500_DMA_DEV38_USB_OTG_OEP_8] = -1, | ||
90 | [DB5500_DMA_DEV23_USB_OTG_OEP_7_15] = -1, | ||
91 | [DB5500_DMA_DEV22_USB_OTG_OEP_6_14] = -1, | ||
92 | [DB5500_DMA_DEV21_USB_OTG_OEP_5_13] = -1, | ||
93 | [DB5500_DMA_DEV20_USB_OTG_OEP_4_12] = -1, | ||
94 | [DB5500_DMA_DEV6_USB_OTG_OEP_3_11] = -1, | ||
95 | [DB5500_DMA_DEV5_USB_OTG_OEP_2_10] = -1, | ||
96 | [DB5500_DMA_DEV4_USB_OTG_OEP_1_9] = -1, | ||
81 | }; | 97 | }; |
82 | 98 | ||
83 | static int dma40_memcpy_event[] = { | 99 | static int dma40_memcpy_event[] = { |