]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
usb: dwc2: host: update hcd and lx_state during start/stop callbacks
authorGregory Herrero <gregory.herrero@intel.com>
Tue, 22 Sep 2015 13:16:41 +0000 (15:16 +0200)
committerFelipe Balbi <balbi@ti.com>
Thu, 1 Oct 2015 17:40:15 +0000 (12:40 -0500)
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>
drivers/usb/dwc2/hcd.c

index 459b441e4838a27eae176a2aabbb9a97cd431ccb..65ae0a3906002eda5678023cfc853ab2c5730f24 100644 (file)
@@ -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);