usb: dwc2: host: update hcd and lx_state during start/stop callbacks
During hcd initialization, hardware accessible flag and lx_state must be reset to the working state since controller is powered at this stage. Same logic applied for stop callback. 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:
parent
a2a23d3f9e
commit
31927b6b68
|
@ -2318,8 +2318,9 @@ static int _dwc2_hcd_start(struct usb_hcd *hcd)
|
|||
dev_dbg(hsotg->dev, "DWC OTG HCD START\n");
|
||||
|
||||
spin_lock_irqsave(&hsotg->lock, flags);
|
||||
|
||||
hsotg->lx_state = DWC2_L0;
|
||||
hcd->state = HC_STATE_RUNNING;
|
||||
set_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
||||
|
||||
if (dwc2_is_device_mode(hsotg)) {
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
|
@ -2350,6 +2351,9 @@ static void _dwc2_hcd_stop(struct usb_hcd *hcd)
|
|||
|
||||
spin_lock_irqsave(&hsotg->lock, flags);
|
||||
dwc2_hcd_stop(hsotg);
|
||||
hsotg->lx_state = DWC2_L3;
|
||||
hcd->state = HC_STATE_HALT;
|
||||
clear_bit(HCD_FLAG_HW_ACCESSIBLE, &hcd->flags);
|
||||
spin_unlock_irqrestore(&hsotg->lock, flags);
|
||||
|
||||
usleep_range(1000, 3000);
|
||||
|
|
Loading…
Reference in New Issue