mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 18:14:07 +08:00
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: Kishon Vijay Abraham I <kishon@ti.com> Tested-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
9166902c43
commit
817e5f33d0
@ -510,8 +510,9 @@ static irqreturn_t twl4030_usb_irq(int irq, void *_twl)
|
||||
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;
|
||||
|
||||
status = twl4030_usb_linkstat(twl);
|
||||
@ -528,6 +529,7 @@ static void twl4030_usb_phy_init(struct twl4030_usb *twl)
|
||||
omap_musb_mailbox(twl->linkstat);
|
||||
}
|
||||
sysfs_notify(&twl->dev->kobj, NULL, "vbus");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int twl4030_set_suspend(struct usb_phy *x, int suspend)
|
||||
@ -604,6 +606,7 @@ static int twl4030_usb_probe(struct platform_device *pdev)
|
||||
twl->phy.otg = otg;
|
||||
twl->phy.type = USB_PHY_TYPE_USB2;
|
||||
twl->phy.set_suspend = twl4030_set_suspend;
|
||||
twl->phy.init = twl4030_usb_phy_init;
|
||||
|
||||
otg->phy = &twl->phy;
|
||||
otg->set_host = twl4030_set_host;
|
||||
@ -641,11 +644,6 @@ static int twl4030_usb_probe(struct platform_device *pdev)
|
||||
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");
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user