mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
usb: chipidea: fix nobody cared IRQ when booting with host role
If we connect Male-A-To-Male-A cable between otg-host and host pc, the ci->vbus_active is set wrongly, and cause the controller run at peripheral mode when we load gadget module (ci_udc_start will be run), but the software runs at host mode due to id = 0. The ehci_irq can't handle suspend (USBi_SLI) interrupt which is enabled for peripheral mode, it causes no one will handle irq error. This patch is needed for 3.12 stable Cc: stable <[email protected]> Acked-by: Michael Grzeschik <[email protected]> Reported-by: Marc Kleine-Budde <[email protected]> Tested-by: Marc Kleine-Budde <[email protected]> Signed-off-by: Marc Kleine-Budde <[email protected]> Signed-off-by: Peter Chen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
cc5c9eb67f
commit
5a1e1456fc
2 changed files with 4 additions and 3 deletions
|
|
@ -642,6 +642,10 @@ static int ci_hdrc_probe(struct platform_device *pdev)
|
|||
: CI_ROLE_GADGET;
|
||||
}
|
||||
|
||||
/* only update vbus status for peripheral */
|
||||
if (ci->role == CI_ROLE_GADGET)
|
||||
ci_handle_vbus_change(ci);
|
||||
|
||||
ret = ci_role_start(ci, ci->role);
|
||||
if (ret) {
|
||||
dev_err(dev, "can't start %s role\n", ci_role(ci)->name);
|
||||
|
|
|
|||
|
|
@ -1795,9 +1795,6 @@ static int udc_start(struct ci_hdrc *ci)
|
|||
pm_runtime_no_callbacks(&ci->gadget.dev);
|
||||
pm_runtime_enable(&ci->gadget.dev);
|
||||
|
||||
/* Update ci->vbus_active */
|
||||
ci_handle_vbus_change(ci);
|
||||
|
||||
return retval;
|
||||
|
||||
destroy_eps:
|
||||
|
|
|
|||
Loading…
Reference in a new issue