usb: phy: ab8500-usb: call phy_dis_work only when necessary
Modify ab8500_usb_set_peripheral() and ab8500_usb_set_host() code to schedule phy_dis_work only when necessary in order to prevent regulator count mismatch during reboot/shutdown. Signed-off-by: Sakethram Bommisetti <sakethram.bommisetti@stericsson.com> Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Fabio Baltieri <fabio.baltieri@linaro.org> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
parent
8db12231bc
commit
5882337338
@ -614,17 +614,16 @@ static int ab8500_usb_set_peripheral(struct usb_otg *otg,
|
||||
|
||||
ab = phy_to_ab(otg->phy);
|
||||
|
||||
ab->phy.otg->gadget = gadget;
|
||||
|
||||
/* Some drivers call this function in atomic context.
|
||||
* Do not update ab8500 registers directly till this
|
||||
* is fixed.
|
||||
*/
|
||||
|
||||
if (!gadget) {
|
||||
otg->gadget = NULL;
|
||||
if ((ab->mode != USB_IDLE) && (!gadget)) {
|
||||
ab->mode = USB_IDLE;
|
||||
schedule_work(&ab->phy_dis_work);
|
||||
} else {
|
||||
otg->gadget = gadget;
|
||||
otg->phy->state = OTG_STATE_B_IDLE;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -639,16 +638,16 @@ static int ab8500_usb_set_host(struct usb_otg *otg, struct usb_bus *host)
|
||||
|
||||
ab = phy_to_ab(otg->phy);
|
||||
|
||||
ab->phy.otg->host = host;
|
||||
|
||||
/* Some drivers call this function in atomic context.
|
||||
* Do not update ab8500 registers directly till this
|
||||
* is fixed.
|
||||
*/
|
||||
|
||||
if (!host) {
|
||||
otg->host = NULL;
|
||||
if ((ab->mode != USB_IDLE) && (!host)) {
|
||||
ab->mode = USB_IDLE;
|
||||
schedule_work(&ab->phy_dis_work);
|
||||
} else {
|
||||
otg->host = host;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user