ARM i.MX ehci: do ehci init in board specific functions
[pandora-kernel.git] / arch / arm / mach-mx3 / mach-mx31lite.c
index 9e64c66..e146f1a 100644 (file)
@@ -27,6 +27,7 @@
 #include <linux/usb/otg.h>
 #include <linux/usb/ulpi.h>
 #include <linux/mtd/physmap.h>
+#include <linux/delay.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -111,9 +112,9 @@ static const struct spi_imx_master spi1_pdata __initconst = {
        .num_chipselect = ARRAY_SIZE(spi_internal_chipselect),
 };
 
-static struct mc13783_platform_data mc13783_pdata __initdata = {
-       .flags  = MC13783_USE_RTC |
-                 MC13783_USE_REGULATOR,
+static struct mc13xxx_platform_data mc13783_pdata __initdata = {
+       .flags  = MC13XXX_USE_RTC |
+                 MC13XXX_USE_REGULATOR,
 };
 
 static struct spi_board_info mc13783_spi_dev __initdata = {
@@ -167,13 +168,14 @@ static int usbh2_init(struct platform_device *pdev)
        gpio_request(IOMUX_TO_GPIO(MX31_PIN_DTR_DCE1), "USBH2 CS");
        gpio_direction_output(IOMUX_TO_GPIO(MX31_PIN_DTR_DCE1), 0);
 
-       return 0;
+       mdelay(10);
+
+       return mx31_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED);
 }
 
 static struct mxc_usbh_platform_data usbh2_pdata __initdata = {
        .init   = usbh2_init,
        .portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
-       .flags  = MXC_EHCI_POWER_PINS_ENABLED,
 };
 #endif
 
@@ -281,9 +283,10 @@ struct sys_timer mx31lite_timer = {
 
 MACHINE_START(MX31LITE, "LogicPD i.MX31 SOM")
        /* Maintainer: Freescale Semiconductor, Inc. */
-       .boot_params    = MX3x_PHYS_OFFSET + 0x100,
-       .map_io         = mx31lite_map_io,
-       .init_irq       = mx31_init_irq,
-       .init_machine   = mxc_board_init,
-       .timer          = &mx31lite_timer,
+       .boot_params = MX3x_PHYS_OFFSET + 0x100,
+       .map_io = mx31lite_map_io,
+       .init_early = imx31_init_early,
+       .init_irq = mx31_init_irq,
+       .timer = &mx31lite_timer,
+       .init_machine = mxc_board_init,
 MACHINE_END