Skip to contentSkip to conversation

usb: dwc2: Prevent core suspend when port connection flag is 0

PATCH In review Artur Petrosyan 2 participants 2 messages Mar 26, 2021

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 3/3 usb: dwc2: Prevent core suspend when port connection flag is 0

In host mode port connection status flag is "0" when loading the driver. After loading the driver system asserts suspend which is handled by "_dwc2_hcd_suspend()" function. Before the system suspend the port connection status is "0". As result need to check the "port_connect_status" if it is "0", then skipping entering to suspend.

Fixes 6f6d70597c15 ("usb: dwc2: bus suspend/resume for hosts with

DWC2_POWER_DOWN_PARAM_NONE")

---
 drivers/usb/dwc2/hcd.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/usb/dwc2/hcd.c +2 -1
index 40e5655921bf..1a9789ec5847 100644
@@ -4322,7 +4322,8 @@ static int _dwc2_hcd_suspend(struct usb_hcd *hcd)
 	if (hsotg->op_state == OTG_STATE_B_PERIPHERAL)
 		goto unlock;
 
-	if (hsotg->params.power_down > DWC2_POWER_DOWN_PARAM_PARTIAL)
+	if (hsotg->params.power_down != DWC2_POWER_DOWN_PARAM_PARTIAL ||
+	    hsotg->flags.b.port_connect_status == 0)
 		goto skip_power_saving;
 
 	/*
Signature · 1 line
2.25.1
#1 lore raw
Quoted 10 lines · Artur Petrosyan

In host mode port connection status flag is "0" when loading the driver. After loading the driver system asserts suspend which is handled by "_dwc2_hcd_suspend()" function. Before the system suspend the port connection status is "0". As result need to check the "port_connect_status" if it is "0", then skipping entering to suspend.

Fixes 6f6d70597c15 ("usb: dwc2: bus suspend/resume for hosts with

DWC2_POWER_DOWN_PARAM_NONE")

In the future, do not line-wrap the fixes line.

thanks,

greg k-h