diff options
-rw-r--r-- | arch/arm/mach-omap1/board-ams-delta.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-generic.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h2.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-h3.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-innovator.c | 5 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-nokia770.c | 9 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-osk.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmte.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmtt.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-palmz71.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-sx1.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap1/board-voiceblue.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-apollon.c | 2 | ||||
-rw-r--r-- | arch/arm/mach-omap2/board-h4.c | 34 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/board.h | 1 | ||||
-rw-r--r-- | arch/arm/plat-omap/include/mach/usb.h | 2 | ||||
-rw-r--r-- | arch/arm/plat-omap/usb.c | 25 |
17 files changed, 56 insertions, 46 deletions
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c index 2e618391cc51..8b40aace9db4 100644 --- a/arch/arm/mach-omap1/board-ams-delta.c +++ b/arch/arm/mach-omap1/board-ams-delta.c | |||
@@ -175,7 +175,6 @@ static struct omap_usb_config ams_delta_usb_config __initdata = { | |||
175 | static struct omap_board_config_kernel ams_delta_config[] = { | 175 | static struct omap_board_config_kernel ams_delta_config[] = { |
176 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, | 176 | { OMAP_TAG_LCD, &ams_delta_lcd_config }, |
177 | { OMAP_TAG_UART, &ams_delta_uart_config }, | 177 | { OMAP_TAG_UART, &ams_delta_uart_config }, |
178 | { OMAP_TAG_USB, &ams_delta_usb_config }, | ||
179 | }; | 178 | }; |
180 | 179 | ||
181 | static struct resource ams_delta_kp_resources[] = { | 180 | static struct resource ams_delta_kp_resources[] = { |
@@ -232,6 +231,7 @@ static void __init ams_delta_init(void) | |||
232 | /* Clear latch2 (NAND, LCD, modem enable) */ | 231 | /* Clear latch2 (NAND, LCD, modem enable) */ |
233 | ams_delta_latch2_write(~0, 0); | 232 | ams_delta_latch2_write(~0, 0); |
234 | 233 | ||
234 | omap_usb_init(&ams_delta_usb_config); | ||
235 | platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); | 235 | platform_add_devices(ams_delta_devices, ARRAY_SIZE(ams_delta_devices)); |
236 | } | 236 | } |
237 | 237 | ||
diff --git a/arch/arm/mach-omap1/board-generic.c b/arch/arm/mach-omap1/board-generic.c index 7d2670205373..e724940e86f2 100644 --- a/arch/arm/mach-omap1/board-generic.c +++ b/arch/arm/mach-omap1/board-generic.c | |||
@@ -62,7 +62,6 @@ static struct omap_uart_config generic_uart_config __initdata = { | |||
62 | }; | 62 | }; |
63 | 63 | ||
64 | static struct omap_board_config_kernel generic_config[] __initdata = { | 64 | static struct omap_board_config_kernel generic_config[] __initdata = { |
65 | { OMAP_TAG_USB, NULL }, | ||
66 | { OMAP_TAG_UART, &generic_uart_config }, | 65 | { OMAP_TAG_UART, &generic_uart_config }, |
67 | }; | 66 | }; |
68 | 67 | ||
@@ -70,12 +69,12 @@ static void __init omap_generic_init(void) | |||
70 | { | 69 | { |
71 | #ifdef CONFIG_ARCH_OMAP15XX | 70 | #ifdef CONFIG_ARCH_OMAP15XX |
72 | if (cpu_is_omap15xx()) { | 71 | if (cpu_is_omap15xx()) { |
73 | generic_config[0].data = &generic1510_usb_config; | 72 | omap_usb_init(&generic1510_usb_config); |
74 | } | 73 | } |
75 | #endif | 74 | #endif |
76 | #if defined(CONFIG_ARCH_OMAP16XX) | 75 | #if defined(CONFIG_ARCH_OMAP16XX) |
77 | if (!cpu_is_omap1510()) { | 76 | if (!cpu_is_omap1510()) { |
78 | generic_config[0].data = &generic1610_usb_config; | 77 | omap_usb_init(&generic1610_usb_config); |
79 | } | 78 | } |
80 | #endif | 79 | #endif |
81 | 80 | ||
diff --git a/arch/arm/mach-omap1/board-h2.c b/arch/arm/mach-omap1/board-h2.c index b31b6d9b2e3f..f695aa053ac8 100644 --- a/arch/arm/mach-omap1/board-h2.c +++ b/arch/arm/mach-omap1/board-h2.c | |||
@@ -369,7 +369,6 @@ static struct omap_lcd_config h2_lcd_config __initdata = { | |||
369 | }; | 369 | }; |
370 | 370 | ||
371 | static struct omap_board_config_kernel h2_config[] __initdata = { | 371 | static struct omap_board_config_kernel h2_config[] __initdata = { |
372 | { OMAP_TAG_USB, &h2_usb_config }, | ||
373 | { OMAP_TAG_UART, &h2_uart_config }, | 372 | { OMAP_TAG_UART, &h2_uart_config }, |
374 | { OMAP_TAG_LCD, &h2_lcd_config }, | 373 | { OMAP_TAG_LCD, &h2_lcd_config }, |
375 | }; | 374 | }; |
@@ -418,6 +417,7 @@ static void __init h2_init(void) | |||
418 | omap_serial_init(); | 417 | omap_serial_init(); |
419 | omap_register_i2c_bus(1, 100, h2_i2c_board_info, | 418 | omap_register_i2c_bus(1, 100, h2_i2c_board_info, |
420 | ARRAY_SIZE(h2_i2c_board_info)); | 419 | ARRAY_SIZE(h2_i2c_board_info)); |
420 | omap_usb_init(&h2_usb_config); | ||
421 | h2_mmc_init(); | 421 | h2_mmc_init(); |
422 | } | 422 | } |
423 | 423 | ||
diff --git a/arch/arm/mach-omap1/board-h3.c b/arch/arm/mach-omap1/board-h3.c index 4b872f3822b5..4695965114c4 100644 --- a/arch/arm/mach-omap1/board-h3.c +++ b/arch/arm/mach-omap1/board-h3.c | |||
@@ -423,7 +423,6 @@ static struct omap_lcd_config h3_lcd_config __initdata = { | |||
423 | }; | 423 | }; |
424 | 424 | ||
425 | static struct omap_board_config_kernel h3_config[] __initdata = { | 425 | static struct omap_board_config_kernel h3_config[] __initdata = { |
426 | { OMAP_TAG_USB, &h3_usb_config }, | ||
427 | { OMAP_TAG_UART, &h3_uart_config }, | 426 | { OMAP_TAG_UART, &h3_uart_config }, |
428 | { OMAP_TAG_LCD, &h3_lcd_config }, | 427 | { OMAP_TAG_LCD, &h3_lcd_config }, |
429 | }; | 428 | }; |
@@ -477,6 +476,7 @@ static void __init h3_init(void) | |||
477 | omap_serial_init(); | 476 | omap_serial_init(); |
478 | omap_register_i2c_bus(1, 100, h3_i2c_board_info, | 477 | omap_register_i2c_bus(1, 100, h3_i2c_board_info, |
479 | ARRAY_SIZE(h3_i2c_board_info)); | 478 | ARRAY_SIZE(h3_i2c_board_info)); |
479 | omap_usb_init(&h3_usb_config); | ||
480 | h3_mmc_init(); | 480 | h3_mmc_init(); |
481 | } | 481 | } |
482 | 482 | ||
diff --git a/arch/arm/mach-omap1/board-innovator.c b/arch/arm/mach-omap1/board-innovator.c index 714a08f79e90..2fd98260ea49 100644 --- a/arch/arm/mach-omap1/board-innovator.c +++ b/arch/arm/mach-omap1/board-innovator.c | |||
@@ -373,7 +373,6 @@ static struct omap_uart_config innovator_uart_config __initdata = { | |||
373 | }; | 373 | }; |
374 | 374 | ||
375 | static struct omap_board_config_kernel innovator_config[] = { | 375 | static struct omap_board_config_kernel innovator_config[] = { |
376 | { OMAP_TAG_USB, NULL }, | ||
377 | { OMAP_TAG_LCD, NULL }, | 376 | { OMAP_TAG_LCD, NULL }, |
378 | { OMAP_TAG_UART, &innovator_uart_config }, | 377 | { OMAP_TAG_UART, &innovator_uart_config }, |
379 | }; | 378 | }; |
@@ -395,13 +394,13 @@ static void __init innovator_init(void) | |||
395 | 394 | ||
396 | #ifdef CONFIG_ARCH_OMAP15XX | 395 | #ifdef CONFIG_ARCH_OMAP15XX |
397 | if (cpu_is_omap1510()) { | 396 | if (cpu_is_omap1510()) { |
398 | innovator_config[0].data = &innovator1510_usb_config; | 397 | omap_usb_init(&innovator1510_usb_config); |
399 | innovator_config[1].data = &innovator1510_lcd_config; | 398 | innovator_config[1].data = &innovator1510_lcd_config; |
400 | } | 399 | } |
401 | #endif | 400 | #endif |
402 | #ifdef CONFIG_ARCH_OMAP16XX | 401 | #ifdef CONFIG_ARCH_OMAP16XX |
403 | if (cpu_is_omap1610()) { | 402 | if (cpu_is_omap1610()) { |
404 | innovator_config[0].data = &h2_usb_config; | 403 | omap_usb_init(&h2_usb_config); |
405 | innovator_config[1].data = &innovator1610_lcd_config; | 404 | innovator_config[1].data = &innovator1610_lcd_config; |
406 | } | 405 | } |
407 | #endif | 406 | #endif |
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c index af51e0b180f2..7bc7a3cb9c51 100644 --- a/arch/arm/mach-omap1/board-nokia770.c +++ b/arch/arm/mach-omap1/board-nokia770.c | |||
@@ -233,10 +233,6 @@ static inline void nokia770_mmc_init(void) | |||
233 | } | 233 | } |
234 | #endif | 234 | #endif |
235 | 235 | ||
236 | static struct omap_board_config_kernel nokia770_config[] __initdata = { | ||
237 | { OMAP_TAG_USB, NULL }, | ||
238 | }; | ||
239 | |||
240 | #if defined(CONFIG_OMAP_DSP) | 236 | #if defined(CONFIG_OMAP_DSP) |
241 | /* | 237 | /* |
242 | * audio power control | 238 | * audio power control |
@@ -371,19 +367,16 @@ static __init int omap_dsp_init(void) | |||
371 | 367 | ||
372 | static void __init omap_nokia770_init(void) | 368 | static void __init omap_nokia770_init(void) |
373 | { | 369 | { |
374 | nokia770_config[0].data = &nokia770_usb_config; | ||
375 | |||
376 | platform_add_devices(nokia770_devices, ARRAY_SIZE(nokia770_devices)); | 370 | platform_add_devices(nokia770_devices, ARRAY_SIZE(nokia770_devices)); |
377 | spi_register_board_info(nokia770_spi_board_info, | 371 | spi_register_board_info(nokia770_spi_board_info, |
378 | ARRAY_SIZE(nokia770_spi_board_info)); | 372 | ARRAY_SIZE(nokia770_spi_board_info)); |
379 | omap_board_config = nokia770_config; | ||
380 | omap_board_config_size = ARRAY_SIZE(nokia770_config); | ||
381 | omap_gpio_init(); | 373 | omap_gpio_init(); |
382 | omap_serial_init(); | 374 | omap_serial_init(); |
383 | omap_register_i2c_bus(1, 100, NULL, 0); | 375 | omap_register_i2c_bus(1, 100, NULL, 0); |
384 | omap_dsp_init(); | 376 | omap_dsp_init(); |
385 | ads7846_dev_init(); | 377 | ads7846_dev_init(); |
386 | mipid_dev_init(); | 378 | mipid_dev_init(); |
379 | omap_usb_init(&nokia770_usb_config); | ||
387 | nokia770_mmc_init(); | 380 | nokia770_mmc_init(); |
388 | } | 381 | } |
389 | 382 | ||
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c index 9c4cac274cc0..cf3247b15f87 100644 --- a/arch/arm/mach-omap1/board-osk.c +++ b/arch/arm/mach-omap1/board-osk.c | |||
@@ -304,7 +304,6 @@ static struct omap_lcd_config osk_lcd_config __initdata = { | |||
304 | #endif | 304 | #endif |
305 | 305 | ||
306 | static struct omap_board_config_kernel osk_config[] __initdata = { | 306 | static struct omap_board_config_kernel osk_config[] __initdata = { |
307 | { OMAP_TAG_USB, &osk_usb_config }, | ||
308 | { OMAP_TAG_UART, &osk_uart_config }, | 307 | { OMAP_TAG_UART, &osk_uart_config }, |
309 | #ifdef CONFIG_OMAP_OSK_MISTRAL | 308 | #ifdef CONFIG_OMAP_OSK_MISTRAL |
310 | { OMAP_TAG_LCD, &osk_lcd_config }, | 309 | { OMAP_TAG_LCD, &osk_lcd_config }, |
@@ -555,6 +554,8 @@ static void __init osk_init(void) | |||
555 | l |= (3 << 1); | 554 | l |= (3 << 1); |
556 | omap_writel(l, USB_TRANSCEIVER_CTRL); | 555 | omap_writel(l, USB_TRANSCEIVER_CTRL); |
557 | 556 | ||
557 | omap_usb_init(&osk_usb_config); | ||
558 | |||
558 | /* irq for tps65010 chip */ | 559 | /* irq for tps65010 chip */ |
559 | /* bootloader effectively does: omap_cfg_reg(U19_1610_MPUIO1); */ | 560 | /* bootloader effectively does: omap_cfg_reg(U19_1610_MPUIO1); */ |
560 | if (gpio_request(OMAP_MPUIO(1), "tps65010") == 0) | 561 | if (gpio_request(OMAP_MPUIO(1), "tps65010") == 0) |
diff --git a/arch/arm/mach-omap1/board-palmte.c b/arch/arm/mach-omap1/board-palmte.c index 55d524b78e2a..886b4c0569bd 100644 --- a/arch/arm/mach-omap1/board-palmte.c +++ b/arch/arm/mach-omap1/board-palmte.c | |||
@@ -301,7 +301,6 @@ static void palmte_get_power_status(struct apm_power_info *info, int *battery) | |||
301 | #endif | 301 | #endif |
302 | 302 | ||
303 | static struct omap_board_config_kernel palmte_config[] __initdata = { | 303 | static struct omap_board_config_kernel palmte_config[] __initdata = { |
304 | { OMAP_TAG_USB, &palmte_usb_config }, | ||
305 | { OMAP_TAG_LCD, &palmte_lcd_config }, | 304 | { OMAP_TAG_LCD, &palmte_lcd_config }, |
306 | { OMAP_TAG_UART, &palmte_uart_config }, | 305 | { OMAP_TAG_UART, &palmte_uart_config }, |
307 | }; | 306 | }; |
@@ -356,6 +355,7 @@ static void __init omap_palmte_init(void) | |||
356 | spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); | 355 | spi_register_board_info(palmte_spi_info, ARRAY_SIZE(palmte_spi_info)); |
357 | palmte_misc_gpio_setup(); | 356 | palmte_misc_gpio_setup(); |
358 | omap_serial_init(); | 357 | omap_serial_init(); |
358 | omap_usb_init(&palmte_usb_config); | ||
359 | omap_register_i2c_bus(1, 100, NULL, 0); | 359 | omap_register_i2c_bus(1, 100, NULL, 0); |
360 | } | 360 | } |
361 | 361 | ||
diff --git a/arch/arm/mach-omap1/board-palmtt.c b/arch/arm/mach-omap1/board-palmtt.c index 9dc9d7931b55..4f1b44831d37 100644 --- a/arch/arm/mach-omap1/board-palmtt.c +++ b/arch/arm/mach-omap1/board-palmtt.c | |||
@@ -279,7 +279,6 @@ static struct omap_uart_config palmtt_uart_config __initdata = { | |||
279 | }; | 279 | }; |
280 | 280 | ||
281 | static struct omap_board_config_kernel palmtt_config[] __initdata = { | 281 | static struct omap_board_config_kernel palmtt_config[] __initdata = { |
282 | { OMAP_TAG_USB, &palmtt_usb_config }, | ||
283 | { OMAP_TAG_LCD, &palmtt_lcd_config }, | 282 | { OMAP_TAG_LCD, &palmtt_lcd_config }, |
284 | { OMAP_TAG_UART, &palmtt_uart_config }, | 283 | { OMAP_TAG_UART, &palmtt_uart_config }, |
285 | }; | 284 | }; |
@@ -304,6 +303,7 @@ static void __init omap_palmtt_init(void) | |||
304 | 303 | ||
305 | spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo)); | 304 | spi_register_board_info(palmtt_boardinfo,ARRAY_SIZE(palmtt_boardinfo)); |
306 | omap_serial_init(); | 305 | omap_serial_init(); |
306 | omap_usb_init(&palmtt_usb_config); | ||
307 | omap_register_i2c_bus(1, 100, NULL, 0); | 307 | omap_register_i2c_bus(1, 100, NULL, 0); |
308 | } | 308 | } |
309 | 309 | ||
diff --git a/arch/arm/mach-omap1/board-palmz71.c b/arch/arm/mach-omap1/board-palmz71.c index a2f99a46e7b4..9a55c3c58218 100644 --- a/arch/arm/mach-omap1/board-palmz71.c +++ b/arch/arm/mach-omap1/board-palmz71.c | |||
@@ -249,7 +249,6 @@ static struct omap_uart_config palmz71_uart_config __initdata = { | |||
249 | }; | 249 | }; |
250 | 250 | ||
251 | static struct omap_board_config_kernel palmz71_config[] __initdata = { | 251 | static struct omap_board_config_kernel palmz71_config[] __initdata = { |
252 | {OMAP_TAG_USB, &palmz71_usb_config}, | ||
253 | {OMAP_TAG_LCD, &palmz71_lcd_config}, | 252 | {OMAP_TAG_LCD, &palmz71_lcd_config}, |
254 | {OMAP_TAG_UART, &palmz71_uart_config}, | 253 | {OMAP_TAG_UART, &palmz71_uart_config}, |
255 | }; | 254 | }; |
@@ -323,6 +322,7 @@ omap_palmz71_init(void) | |||
323 | 322 | ||
324 | spi_register_board_info(palmz71_boardinfo, | 323 | spi_register_board_info(palmz71_boardinfo, |
325 | ARRAY_SIZE(palmz71_boardinfo)); | 324 | ARRAY_SIZE(palmz71_boardinfo)); |
325 | omap_usb_init(&palmz71_usb_config); | ||
326 | omap_serial_init(); | 326 | omap_serial_init(); |
327 | omap_register_i2c_bus(1, 100, NULL, 0); | 327 | omap_register_i2c_bus(1, 100, NULL, 0); |
328 | palmz71_gpio_setup(0); | 328 | palmz71_gpio_setup(0); |
diff --git a/arch/arm/mach-omap1/board-sx1.c b/arch/arm/mach-omap1/board-sx1.c index ab277d42f302..c096577695fe 100644 --- a/arch/arm/mach-omap1/board-sx1.c +++ b/arch/arm/mach-omap1/board-sx1.c | |||
@@ -374,7 +374,6 @@ static struct omap_uart_config sx1_uart_config __initdata = { | |||
374 | }; | 374 | }; |
375 | 375 | ||
376 | static struct omap_board_config_kernel sx1_config[] __initdata = { | 376 | static struct omap_board_config_kernel sx1_config[] __initdata = { |
377 | { OMAP_TAG_USB, &sx1_usb_config }, | ||
378 | { OMAP_TAG_LCD, &sx1_lcd_config }, | 377 | { OMAP_TAG_LCD, &sx1_lcd_config }, |
379 | { OMAP_TAG_UART, &sx1_uart_config }, | 378 | { OMAP_TAG_UART, &sx1_uart_config }, |
380 | }; | 379 | }; |
@@ -389,6 +388,7 @@ static void __init omap_sx1_init(void) | |||
389 | omap_board_config_size = ARRAY_SIZE(sx1_config); | 388 | omap_board_config_size = ARRAY_SIZE(sx1_config); |
390 | omap_serial_init(); | 389 | omap_serial_init(); |
391 | omap_register_i2c_bus(1, 100, NULL, 0); | 390 | omap_register_i2c_bus(1, 100, NULL, 0); |
391 | omap_usb_init(&sx1_usb_config); | ||
392 | sx1_mmc_init(); | 392 | sx1_mmc_init(); |
393 | 393 | ||
394 | /* turn on USB power */ | 394 | /* turn on USB power */ |
diff --git a/arch/arm/mach-omap1/board-voiceblue.c b/arch/arm/mach-omap1/board-voiceblue.c index a7653542a2b0..98275e03dad1 100644 --- a/arch/arm/mach-omap1/board-voiceblue.c +++ b/arch/arm/mach-omap1/board-voiceblue.c | |||
@@ -145,7 +145,6 @@ static struct omap_uart_config voiceblue_uart_config __initdata = { | |||
145 | }; | 145 | }; |
146 | 146 | ||
147 | static struct omap_board_config_kernel voiceblue_config[] = { | 147 | static struct omap_board_config_kernel voiceblue_config[] = { |
148 | { OMAP_TAG_USB, &voiceblue_usb_config }, | ||
149 | { OMAP_TAG_UART, &voiceblue_uart_config }, | 148 | { OMAP_TAG_UART, &voiceblue_uart_config }, |
150 | }; | 149 | }; |
151 | 150 | ||
@@ -185,6 +184,7 @@ static void __init voiceblue_init(void) | |||
185 | omap_board_config = voiceblue_config; | 184 | omap_board_config = voiceblue_config; |
186 | omap_board_config_size = ARRAY_SIZE(voiceblue_config); | 185 | omap_board_config_size = ARRAY_SIZE(voiceblue_config); |
187 | omap_serial_init(); | 186 | omap_serial_init(); |
187 | omap_usb_init(&voiceblue_usb_config); | ||
188 | omap_register_i2c_bus(1, 100, NULL, 0); | 188 | omap_register_i2c_bus(1, 100, NULL, 0); |
189 | 189 | ||
190 | /* There is a good chance board is going up, so enable power LED | 190 | /* There is a good chance board is going up, so enable power LED |
diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c index 64561247d93a..41823538d36a 100644 --- a/arch/arm/mach-omap2/board-apollon.c +++ b/arch/arm/mach-omap2/board-apollon.c | |||
@@ -273,7 +273,6 @@ static struct omap_lcd_config apollon_lcd_config __initdata = { | |||
273 | 273 | ||
274 | static struct omap_board_config_kernel apollon_config[] = { | 274 | static struct omap_board_config_kernel apollon_config[] = { |
275 | { OMAP_TAG_UART, &apollon_uart_config }, | 275 | { OMAP_TAG_UART, &apollon_uart_config }, |
276 | { OMAP_TAG_USB, &apollon_usb_config }, | ||
277 | { OMAP_TAG_LCD, &apollon_lcd_config }, | 276 | { OMAP_TAG_LCD, &apollon_lcd_config }, |
278 | }; | 277 | }; |
279 | 278 | ||
@@ -300,6 +299,7 @@ static void __init apollon_usb_init(void) | |||
300 | omap_cfg_reg(P21_242X_GPIO12); | 299 | omap_cfg_reg(P21_242X_GPIO12); |
301 | gpio_request(12, "USB suspend"); | 300 | gpio_request(12, "USB suspend"); |
302 | gpio_direction_output(12, 0); | 301 | gpio_direction_output(12, 0); |
302 | omap_usb_init(&apollon_usb_config); | ||
303 | } | 303 | } |
304 | 304 | ||
305 | static void __init omap_apollon_init(void) | 305 | static void __init omap_apollon_init(void) |
diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c index 71226973eee7..1343cebd19a1 100644 --- a/arch/arm/mach-omap2/board-h4.c +++ b/arch/arm/mach-omap2/board-h4.c | |||
@@ -379,6 +379,39 @@ static struct omap_lcd_config h4_lcd_config __initdata = { | |||
379 | .ctrl_name = "internal", | 379 | .ctrl_name = "internal", |
380 | }; | 380 | }; |
381 | 381 | ||
382 | static struct omap_usb_config h4_usb_config __initdata = { | ||
383 | #ifdef CONFIG_MACH_OMAP2_H4_USB1 | ||
384 | /* NOTE: usb1 could also be used with 3 wire signaling */ | ||
385 | .pins[1] = 4, | ||
386 | #endif | ||
387 | |||
388 | #ifdef CONFIG_MACH_OMAP_H4_OTG | ||
389 | /* S1.10 ON -- USB OTG port | ||
390 | * usb0 switched to Mini-AB port and isp1301 transceiver; | ||
391 | * S2.POS3 = OFF, S2.POS4 = ON ... to allow battery charging | ||
392 | */ | ||
393 | .otg = 1, | ||
394 | .pins[0] = 4, | ||
395 | #ifdef CONFIG_USB_GADGET_OMAP | ||
396 | /* use OTG cable, or standard A-to-MiniB */ | ||
397 | .hmc_mode = 0x14, /* 0:dev/otg 1:host 2:disable */ | ||
398 | #elif defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE) | ||
399 | /* use OTG cable, or NONSTANDARD (B-to-MiniB) */ | ||
400 | .hmc_mode = 0x11, /* 0:host 1:host 2:disable */ | ||
401 | #endif /* XX */ | ||
402 | |||
403 | #else | ||
404 | /* S1.10 OFF -- usb "download port" | ||
405 | * usb0 switched to Mini-B port and isp1105 transceiver; | ||
406 | * S2.POS3 = ON, S2.POS4 = OFF ... to enable battery charging | ||
407 | */ | ||
408 | .register_dev = 1, | ||
409 | .pins[0] = 3, | ||
410 | /* .hmc_mode = 0x14,*/ /* 0:dev 1:host 2:disable */ | ||
411 | .hmc_mode = 0x00, /* 0:dev|otg 1:disable 2:disable */ | ||
412 | #endif | ||
413 | }; | ||
414 | |||
382 | static struct omap_board_config_kernel h4_config[] = { | 415 | static struct omap_board_config_kernel h4_config[] = { |
383 | { OMAP_TAG_UART, &h4_uart_config }, | 416 | { OMAP_TAG_UART, &h4_uart_config }, |
384 | { OMAP_TAG_LCD, &h4_lcd_config }, | 417 | { OMAP_TAG_LCD, &h4_lcd_config }, |
@@ -430,6 +463,7 @@ static void __init omap_h4_init(void) | |||
430 | platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices)); | 463 | platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices)); |
431 | omap_board_config = h4_config; | 464 | omap_board_config = h4_config; |
432 | omap_board_config_size = ARRAY_SIZE(h4_config); | 465 | omap_board_config_size = ARRAY_SIZE(h4_config); |
466 | omap_usb_init(&h4_usb_config); | ||
433 | omap_serial_init(); | 467 | omap_serial_init(); |
434 | } | 468 | } |
435 | 469 | ||
diff --git a/arch/arm/plat-omap/include/mach/board.h b/arch/arm/plat-omap/include/mach/board.h index 4a0afd2366e8..50ea79a0efa2 100644 --- a/arch/arm/plat-omap/include/mach/board.h +++ b/arch/arm/plat-omap/include/mach/board.h | |||
@@ -17,7 +17,6 @@ | |||
17 | /* Different peripheral ids */ | 17 | /* Different peripheral ids */ |
18 | #define OMAP_TAG_CLOCK 0x4f01 | 18 | #define OMAP_TAG_CLOCK 0x4f01 |
19 | #define OMAP_TAG_SERIAL_CONSOLE 0x4f03 | 19 | #define OMAP_TAG_SERIAL_CONSOLE 0x4f03 |
20 | #define OMAP_TAG_USB 0x4f04 | ||
21 | #define OMAP_TAG_LCD 0x4f05 | 20 | #define OMAP_TAG_LCD 0x4f05 |
22 | #define OMAP_TAG_GPIO_SWITCH 0x4f06 | 21 | #define OMAP_TAG_GPIO_SWITCH 0x4f06 |
23 | #define OMAP_TAG_UART 0x4f07 | 22 | #define OMAP_TAG_UART 0x4f07 |
diff --git a/arch/arm/plat-omap/include/mach/usb.h b/arch/arm/plat-omap/include/mach/usb.h index a56a610950c2..e033e51d4bad 100644 --- a/arch/arm/plat-omap/include/mach/usb.h +++ b/arch/arm/plat-omap/include/mach/usb.h | |||
@@ -29,6 +29,8 @@ | |||
29 | 29 | ||
30 | #endif | 30 | #endif |
31 | 31 | ||
32 | void omap_usb_init(struct omap_usb_config *pdata); | ||
33 | |||
32 | /*-------------------------------------------------------------------------*/ | 34 | /*-------------------------------------------------------------------------*/ |
33 | 35 | ||
34 | /* | 36 | /* |
diff --git a/arch/arm/plat-omap/usb.c b/arch/arm/plat-omap/usb.c index e278de6862ae..509f2ed99e21 100644 --- a/arch/arm/plat-omap/usb.c +++ b/arch/arm/plat-omap/usb.c | |||
@@ -729,30 +729,13 @@ static inline void omap_1510_usb_init(struct omap_usb_config *config) {} | |||
729 | 729 | ||
730 | /*-------------------------------------------------------------------------*/ | 730 | /*-------------------------------------------------------------------------*/ |
731 | 731 | ||
732 | static struct omap_usb_config platform_data; | 732 | void __init omap_usb_init(struct omap_usb_config *pdata) |
733 | |||
734 | static int __init | ||
735 | omap_usb_init(void) | ||
736 | { | 733 | { |
737 | const struct omap_usb_config *config; | ||
738 | |||
739 | config = omap_get_config(OMAP_TAG_USB, struct omap_usb_config); | ||
740 | if (config == NULL) { | ||
741 | printk(KERN_ERR "USB: No board-specific " | ||
742 | "platform config found\n"); | ||
743 | return -ENODEV; | ||
744 | } | ||
745 | platform_data = *config; | ||
746 | |||
747 | if (cpu_is_omap730() || cpu_is_omap16xx() || cpu_is_omap24xx()) | 734 | if (cpu_is_omap730() || cpu_is_omap16xx() || cpu_is_omap24xx()) |
748 | omap_otg_init(&platform_data); | 735 | omap_otg_init(pdata); |
749 | else if (cpu_is_omap15xx()) | 736 | else if (cpu_is_omap15xx()) |
750 | omap_1510_usb_init(&platform_data); | 737 | omap_1510_usb_init(pdata); |
751 | else { | 738 | else |
752 | printk(KERN_ERR "USB: No init for your chip yet\n"); | 739 | printk(KERN_ERR "USB: No init for your chip yet\n"); |
753 | return -ENODEV; | ||
754 | } | ||
755 | return 0; | ||
756 | } | 740 | } |
757 | 741 | ||
758 | subsys_initcall(omap_usb_init); | ||