usb: dwc2: gadget: exit hibernation before power down
When disconnecting cable, controller will detect a suspend condition and enter partial power down. If vbus_session is called by the phy driver during hibernation, make sure controller exit hibernation before it is accessed. Signed-off-by: Jianqiang Tang <jianqiang.tang@intel.com> Signed-off-by: Gregory Herrero <gregory.herrero@intel.com> Signed-off-by: Mian Yousaf Kaukab <yousaf.kaukab@intel.com> Tested-by: Robert Baldyga <r.baldyga@samsung.com> Tested-by: Dinh Nguyen <dinguyen@opensource.altera.com> Tested-by: John Youn <johnyoun@synopsys.com> Acked-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Felipe Balbi <balbi@ti.com>
This commit is contained in:
Родитель
1ee6903b8f
Коммит
61f7223bf1
|
@ -3285,14 +3285,15 @@ static int dwc2_hsotg_vbus_session(struct usb_gadget *gadget, int is_active)
|
|||
dev_dbg(hsotg->dev, "%s: is_active: %d\n", __func__, is_active);
|
||||
spin_lock_irqsave(&hsotg->lock, flags);
|
||||
|
||||
/*
|
||||
* If controller is hibernated, it must exit from hibernation
|
||||
* before being initialized / de-initialized
|
||||
*/
|
||||
if (hsotg->lx_state == DWC2_L2)
|
||||
dwc2_exit_hibernation(hsotg, false);
|
||||
|
||||
if (is_active) {
|
||||
hsotg->op_state = OTG_STATE_B_PERIPHERAL;
|
||||
/*
|
||||
* If controller is hibernated, it must exit from hibernation
|
||||
* before being initialized
|
||||
*/
|
||||
if (hsotg->lx_state == DWC2_L2)
|
||||
dwc2_exit_hibernation(hsotg, false);
|
||||
|
||||
dwc2_hsotg_core_init_disconnected(hsotg, false);
|
||||
if (hsotg->enabled)
|
||||
|
|
Загрузка…
Ссылка в новой задаче