ARM: OMAP3: cm-t35: Add reset for USB hub
authorIgor Grinberg <grinberg@compulab.co.il>
Tue, 13 Dec 2011 18:48:53 +0000 (10:48 -0800)
committerTony Lindgren <tony@atomide.com>
Tue, 13 Dec 2011 18:48:53 +0000 (10:48 -0800)
USB hub is not functional until is reset.
Reset the USB hub on SB-T35.

Signed-off-by: Igor Grinberg <grinberg@compulab.co.il>
[tony@atomide.com: updated subject]
Signed-off-by: Tony Lindgren <tony@atomide.com>
arch/arm/mach-omap2/board-cm-t35.c

index c417b7d004d1f73cb4c8bc5bcf6a8b34676ddd9a..865f96da771eff474188757c6e502520b5b3dd36 100644 (file)
@@ -53,7 +53,8 @@
 #include "hsmmc.h"
 #include "common-board-devices.h"
 
-#define CM_T35_GPIO_PENDOWN    57
+#define CM_T35_GPIO_PENDOWN            57
+#define SB_T35_USB_HUB_RESET_GPIO      167
 
 #define CM_T35_SMSC911X_CS     5
 #define CM_T35_SMSC911X_GPIO   163
@@ -436,6 +437,23 @@ static struct usbhs_omap_board_data usbhs_bdata __initdata = {
        .reset_gpio_port[2]  = -EINVAL
 };
 
+static void cm_t35_init_usbh(void)
+{
+       int err;
+
+       err = gpio_request_one(SB_T35_USB_HUB_RESET_GPIO,
+                              GPIOF_OUT_INIT_LOW, "usb hub rst");
+       if (err) {
+               pr_err("SB-T35: usb hub rst gpio request failed: %d\n", err);
+       } else {
+               udelay(10);
+               gpio_set_value(SB_T35_USB_HUB_RESET_GPIO, 1);
+               msleep(1);
+       }
+
+       usbhs_init(&usbhs_bdata);
+}
+
 static int cm_t35_twl_gpio_setup(struct device *dev, unsigned gpio,
                                 unsigned ngpio)
 {
@@ -624,7 +642,7 @@ static void __init cm_t3x_common_init(void)
        cm_t35_init_display();
 
        usb_musb_init(NULL);
-       usbhs_init(&usbhs_bdata);
+       cm_t35_init_usbh();
 }
 
 static void __init cm_t35_init(void)