mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
usb: dwc2: Change hub-control to allow hibernation
Affected cases: ClearPortFeature's USB_PORT_FEAT_SUSPEND SetPortFeature's USB_PORT_FEAT_SUSPEND USB_PORT_FEAT_RESET Signed-off-by: Vardan Mikayelyan <mvardan@synopsys.com> Signed-off-by: John Youn <johnyoun@synopsys.com> Signed-off-by: Grigor Tovmasyan <tovmasya@synopsys.com> Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
This commit is contained in:
parent
65c9c4c6b0
commit
f260b25085
@ -3506,8 +3506,12 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
|
||||
dev_dbg(hsotg->dev,
|
||||
"ClearPortFeature USB_PORT_FEAT_SUSPEND\n");
|
||||
|
||||
if (hsotg->bus_suspended)
|
||||
dwc2_port_resume(hsotg);
|
||||
if (hsotg->bus_suspended) {
|
||||
if (hsotg->hibernated)
|
||||
dwc2_exit_hibernation(hsotg, 0, 0, 1);
|
||||
else
|
||||
dwc2_port_resume(hsotg);
|
||||
}
|
||||
break;
|
||||
|
||||
case USB_PORT_FEAT_POWER:
|
||||
@ -3715,7 +3719,10 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
|
||||
"SetPortFeature - USB_PORT_FEAT_SUSPEND\n");
|
||||
if (windex != hsotg->otg_port)
|
||||
goto error;
|
||||
dwc2_port_suspend(hsotg, windex);
|
||||
if (hsotg->params.power_down == 2)
|
||||
dwc2_enter_hibernation(hsotg, 1);
|
||||
else
|
||||
dwc2_port_suspend(hsotg, windex);
|
||||
break;
|
||||
|
||||
case USB_PORT_FEAT_POWER:
|
||||
@ -3727,6 +3734,9 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
|
||||
break;
|
||||
|
||||
case USB_PORT_FEAT_RESET:
|
||||
if (hsotg->params.power_down == 2 &&
|
||||
hsotg->hibernated)
|
||||
dwc2_exit_hibernation(hsotg, 0, 1, 1);
|
||||
hprt0 = dwc2_read_hprt0(hsotg);
|
||||
dev_dbg(hsotg->dev,
|
||||
"SetPortFeature - USB_PORT_FEAT_RESET\n");
|
||||
|
Loading…
Reference in New Issue
Block a user