Commit 817e5f33 authored by Kishon Vijay Abraham I's avatar Kishon Vijay Abraham I Committed by Felipe Balbi

usb: phy: twl4030: fix cold plug on OMAP3

Having twl4030_usb_phy_init() (detects if a cable is connected before
twl4030 is probed) in twl4030 probe makes cable connect events to be
missed by musb glue, since it gets loaded after twl4030. Having
twl4030_usb_phy_init as a usb_phy ops lets twl4030_usb_phy_init to be
called when glue is ready.
Signed-off-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
Tested-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 9166902c
...@@ -510,8 +510,9 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl) ...@@ -510,8 +510,9 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static void twl4030_usb_phy_init(struct twl4030_usb *twl) static int twl4030_usb_phy_init(struct usb_phy *phy)
{ {
struct twl4030_usb *twl = phy_to_twl(phy);
enum omap_musb_vbus_id_status status; enum omap_musb_vbus_id_status status;
status = twl4030_usb_linkstat(twl); status = twl4030_usb_linkstat(twl);
...@@ -528,6 +529,7 @@ static void twl4030_usb_phy_init(struct twl4030_usb *twl) ...@@ -528,6 +529,7 @@ static void twl4030_usb_phy_init(struct twl4030_usb *twl)
omap_musb_mailbox(twl->linkstat); omap_musb_mailbox(twl->linkstat);
} }
sysfs_notify(&twl->dev->kobj, NULL, "vbus"); sysfs_notify(&twl->dev->kobj, NULL, "vbus");
return 0;
} }
static int twl4030_set_suspend(struct usb_phy *x, int suspend) static int twl4030_set_suspend(struct usb_phy *x, int suspend)
...@@ -604,6 +606,7 @@ static int twl4030_usb_probe(struct platform_device *pdev) ...@@ -604,6 +606,7 @@ static int twl4030_usb_probe(struct platform_device *pdev)
twl->phy.otg = otg; twl->phy.otg = otg;
twl->phy.type = USB_PHY_TYPE_USB2; twl->phy.type = USB_PHY_TYPE_USB2;
twl->phy.set_suspend = twl4030_set_suspend; twl->phy.set_suspend = twl4030_set_suspend;
twl->phy.init = twl4030_usb_phy_init;
otg->phy = &twl->phy; otg->phy = &twl->phy;
otg->set_host = twl4030_set_host; otg->set_host = twl4030_set_host;
...@@ -641,11 +644,6 @@ static int twl4030_usb_probe(struct platform_device *pdev) ...@@ -641,11 +644,6 @@ static int twl4030_usb_probe(struct platform_device *pdev)
return status; return status;
} }
/* Power down phy or make it work according to
* current link state.
*/
twl4030_usb_phy_init(twl);
dev_info(&pdev->dev, "Initialized TWL4030 USB module\n"); dev_info(&pdev->dev, "Initialized TWL4030 USB module\n");
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment