usb: dwc2: Update dwc2_handle_usb_suspend_intr function.
To avoid working in two modes (partial power down and hibernation) changed conditions for entering partial power down or hibernation. Instead of checking hw_params.power_optimized and hw_params.hibernation now checking power_down param which already set to one of the options (Hibernation or Partial Power Down) based on OTG_EN_PWROPT. Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com> Signed-off-by: Artur Petrosyan <Arthur.Petrosyan@synopsys.com> Signed-off-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com> Link: https://lore.kernel.org/r/20210416124835.9F257A005D@mailhost.synopsys.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
a94f01814b
commit
0112b7ce68
@ -532,7 +532,8 @@ static void dwc2_handle_usb_suspend_intr(struct dwc2_hsotg *hsotg)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (dsts & DSTS_SUSPSTS) {
|
if (dsts & DSTS_SUSPSTS) {
|
||||||
if (hsotg->hw_params.power_optimized) {
|
switch (hsotg->params.power_down) {
|
||||||
|
case DWC2_POWER_DOWN_PARAM_PARTIAL:
|
||||||
ret = dwc2_enter_partial_power_down(hsotg);
|
ret = dwc2_enter_partial_power_down(hsotg);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
if (ret != -ENOTSUPP)
|
if (ret != -ENOTSUPP)
|
||||||
@ -541,21 +542,22 @@ static void dwc2_handle_usb_suspend_intr(struct dwc2_hsotg *hsotg)
|
|||||||
__func__);
|
__func__);
|
||||||
goto skip_power_saving;
|
goto skip_power_saving;
|
||||||
}
|
}
|
||||||
|
|
||||||
udelay(100);
|
udelay(100);
|
||||||
|
|
||||||
/* Ask phy to be suspended */
|
/* Ask phy to be suspended */
|
||||||
if (!IS_ERR_OR_NULL(hsotg->uphy))
|
if (!IS_ERR_OR_NULL(hsotg->uphy))
|
||||||
usb_phy_set_suspend(hsotg->uphy, true);
|
usb_phy_set_suspend(hsotg->uphy, true);
|
||||||
} else if (hsotg->hw_params.hibernation) {
|
break;
|
||||||
|
case DWC2_POWER_DOWN_PARAM_HIBERNATION:
|
||||||
ret = dwc2_enter_hibernation(hsotg, 0);
|
ret = dwc2_enter_hibernation(hsotg, 0);
|
||||||
if (ret && ret != -ENOTSUPP)
|
if (ret && ret != -ENOTSUPP)
|
||||||
dev_err(hsotg->dev,
|
dev_err(hsotg->dev,
|
||||||
"%s: enter hibernation failed\n",
|
"%s: enter hibernation failed\n",
|
||||||
__func__);
|
__func__);
|
||||||
} else {
|
break;
|
||||||
|
case DWC2_POWER_DOWN_PARAM_NONE:
|
||||||
/*
|
/*
|
||||||
* If not hibernation nor partial power down are supported,
|
* If neither hibernation nor partial power down are supported,
|
||||||
* clock gating is used to save power.
|
* clock gating is used to save power.
|
||||||
*/
|
*/
|
||||||
dwc2_gadget_enter_clock_gating(hsotg);
|
dwc2_gadget_enter_clock_gating(hsotg);
|
||||||
|
Loading…
Reference in New Issue
Block a user