usb: dwc2: Fix disable all EP's on disconnect
authorMinas Harutyunyan <minas.harutyunyan@synopsys.com>
Mon, 10 Dec 2018 14:09:32 +0000 (18:09 +0400)
committerpopcornmix <popcornmix@gmail.com>
Mon, 13 May 2019 23:08:17 +0000 (00:08 +0100)
commita5cc06de045d7d4ab719df17536d6bf996a711d7
tree8e23b8e2ae74ef06c067b6f864dcce86604d0898
parent97b900a31693e6aeccc8b5c6bd1665ebed808eb5
usb: dwc2: Fix disable all EP's on disconnect

commit 4fe4f9fecc36956fd53c8edf96dd0c691ef98ff9 upstream.

Disabling all EP's allow to reset EP's to initial state.
Introduced new function dwc2_hsotg_ep_disable_lock() which
before calling dwc2_hsotg_ep_disable() function acquire
hsotg->lock and release on exiting.
From dwc2_hsotg_ep_disable() function removed acquiring
hsotg->lock.
In dwc2_hsotg_core_init_disconnected() function when USB
reset interrupt asserted disabling all ep’s by
dwc2_hsotg_ep_disable() function.
This updates eliminating sparse imbalance warnings.

Reverted changes in dwc2_hostg_disconnect() function.
Introduced new function dwc2_hsotg_ep_disable_lock().
Changed dwc2_hsotg_ep_ops. Now disable point to
dwc2_hsotg_ep_disable_lock() function.
In functions dwc2_hsotg_udc_stop() and dwc2_hsotg_suspend()
dwc2_hsotg_ep_disable() function replaced by
dwc2_hsotg_ep_disable_lock() function.
In dwc2_hsotg_ep_disable() function removed acquiring
of hsotg->lock.

Fixes: dccf1bad4be7 ("usb: dwc2: Disable all EP's on disconnect")
Signed-off-by: Minas Harutyunyan <hminas@synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
drivers/usb/dwc2/gadget.c