aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/core
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/usb/core')
-rw-r--r--drivers/usb/core/driver.c9
-rw-r--r--drivers/usb/core/generic.c5
2 files changed, 6 insertions, 8 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c
index 8da4801bb922..ca43a6f824ab 100644
--- a/drivers/usb/core/driver.c
+++ b/drivers/usb/core/driver.c
@@ -1088,15 +1088,8 @@ static int usb_suspend_both(struct usb_device *udev, pm_message_t msg)
1088 break; 1088 break;
1089 } 1089 }
1090 } 1090 }
1091 if (status == 0) { 1091 if (status == 0)
1092
1093 /* Non-root devices don't need to do anything for FREEZE
1094 * or PRETHAW. */
1095 if (udev->parent && (msg.event == PM_EVENT_FREEZE ||
1096 msg.event == PM_EVENT_PRETHAW))
1097 goto done;
1098 status = usb_suspend_device(udev, msg); 1092 status = usb_suspend_device(udev, msg);
1099 }
1100 1093
1101 /* If the suspend failed, resume interfaces that did get suspended */ 1094 /* If the suspend failed, resume interfaces that did get suspended */
1102 if (status != 0) { 1095 if (status != 0) {
diff --git a/drivers/usb/core/generic.c b/drivers/usb/core/generic.c
index 9148b69785c5..c1cb94e9f242 100644
--- a/drivers/usb/core/generic.c
+++ b/drivers/usb/core/generic.c
@@ -206,8 +206,13 @@ static int generic_suspend(struct usb_device *udev, pm_message_t msg)
206 */ 206 */
207 if (!udev->parent) 207 if (!udev->parent)
208 rc = hcd_bus_suspend(udev); 208 rc = hcd_bus_suspend(udev);
209
210 /* Non-root devices don't need to do anything for FREEZE or PRETHAW */
211 else if (msg.event == PM_EVENT_FREEZE || msg.event == PM_EVENT_PRETHAW)
212 rc = 0;
209 else 213 else
210 rc = usb_port_suspend(udev); 214 rc = usb_port_suspend(udev);
215
211 return rc; 216 return rc;
212} 217}
213 218