diff options
Diffstat (limited to 'drivers/usb/core')
-rw-r--r-- | drivers/usb/core/driver.c | 9 | ||||
-rw-r--r-- | drivers/usb/core/generic.c | 5 |
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 | ||