From c17f98e380d6d840c7f4aaf730d6abfa8ee54eba Mon Sep 17 00:00:00 2001 From: Hema HK Date: Tue, 22 Mar 2011 16:54:21 +0530 Subject: [PATCH] --- yaml --- r: 248873 b: refs/heads/master c: 603ab524ed95f566b0f25566484d4f449e433d74 h: refs/heads/master i: 248871: 27786dc7066d35805cb5d6550cde0df19684a38f v: v3 --- [refs] | 2 +- trunk/drivers/usb/otg/twl6030-usb.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 1debed52976f..f2f146cd5308 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c51e36dc11e44aa960744ec1c36fb2ab8d68b218 +refs/heads/master: 603ab524ed95f566b0f25566484d4f449e433d74 diff --git a/trunk/drivers/usb/otg/twl6030-usb.c b/trunk/drivers/usb/otg/twl6030-usb.c index 6e920de64ef6..3f2e07011a48 100644 --- a/trunk/drivers/usb/otg/twl6030-usb.c +++ b/trunk/drivers/usb/otg/twl6030-usb.c @@ -31,6 +31,7 @@ #include #include #include +#include /* usb register definitions */ #define USB_VENDOR_ID_LSB 0x00 @@ -188,6 +189,19 @@ static int twl6030_phy_suspend(struct otg_transceiver *x, int suspend) return 0; } +static int twl6030_start_srp(struct otg_transceiver *x) +{ + struct twl6030_usb *twl = xceiv_to_twl(x); + + twl6030_writeb(twl, TWL_MODULE_USB, 0x24, USB_VBUS_CTRL_SET); + twl6030_writeb(twl, TWL_MODULE_USB, 0x84, USB_VBUS_CTRL_SET); + + mdelay(100); + twl6030_writeb(twl, TWL_MODULE_USB, 0xa0, USB_VBUS_CTRL_CLR); + + return 0; +} + static int twl6030_usb_ldo_init(struct twl6030_usb *twl) { @@ -403,6 +417,7 @@ static int __devinit twl6030_usb_probe(struct platform_device *pdev) twl->otg.init = twl6030_phy_init; twl->otg.shutdown = twl6030_phy_shutdown; twl->otg.set_suspend = twl6030_phy_suspend; + twl->otg.start_srp = twl6030_start_srp; /* init spinlock for workqueue */ spin_lock_init(&twl->lock);