--- a/arch/arm/mach-gemini/board-wbd111.c +++ b/arch/arm/mach-gemini/board-wbd111.c @@ -145,6 +145,7 @@ static void __init wbd111_init(void) platform_register_watchdog(); platform_device_register(&wbd111_phy_device); platform_register_ethernet(&gmac_data); + platform_register_usb(0); } MACHINE_START(WBD111, "Wiliboard WBD-111") --- a/arch/arm/mach-gemini/board-wbd222.c +++ b/arch/arm/mach-gemini/board-wbd222.c @@ -147,6 +147,7 @@ static void __init wbd222_init(void) platform_register_watchdog(); platform_device_register(&wbd222_phy_device); platform_register_ethernet(&gmac_data); + platform_register_usb(0); } MACHINE_START(WBD222, "Wiliboard WBD-222") --- a/arch/arm/mach-gemini/board-rut1xx.c +++ b/arch/arm/mach-gemini/board-rut1xx.c @@ -105,6 +105,7 @@ static void __init rut1xx_init(void) platform_register_watchdog(); platform_device_register(&rut1xx_phy_device); platform_register_ethernet(&gmac_data); + platform_register_usb(0); } MACHINE_START(RUT100, "Teltonika RUT100") --- a/arch/arm/mach-gemini/board-nas4220b.c +++ b/arch/arm/mach-gemini/board-nas4220b.c @@ -134,10 +134,23 @@ static void __init ib4220b_gmac_init(voi GLOBAL_ARBITRATION1_CTRL)); } +static void __init usb_ib4220b_init(void) +{ + unsigned int val; + + val = readl((void __iomem*)(IO_ADDRESS(GEMINI_GLOBAL_BASE) + + GLOBAL_MISC_CTRL)); + val &= ~(USB0_PLUG_MINIB | USB1_PLUG_MINIB); + val |= USB0_VBUS_ON | USB1_VBUS_ON; + writel(val, (void __iomem*)(IO_ADDRESS(GEMINI_GLOBAL_BASE) + + GLOBAL_MISC_CTRL)); +} + static void __init ib4220b_init(void) { gemini_gpio_init(); ib4220b_gmac_init(); + usb_ib4220b_init(); platform_register_uart(); platform_register_pflash(SZ_16M, NULL, 0); platform_device_register(&ib4220b_led_device); @@ -146,6 +159,8 @@ static void __init ib4220b_init(void) platform_register_watchdog(); platform_device_register(&ib4220b_phy_device); platform_register_ethernet(&ib4220b_gmac_data); + platform_register_usb(0); + platform_register_usb(1); } MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")