diff options
| -rw-r--r-- | drivers/usb/core/driver.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/usb/core/driver.c b/drivers/usb/core/driver.c index 654857493a82..a1ad11d0c47c 100644 --- a/drivers/usb/core/driver.c +++ b/drivers/usb/core/driver.c | |||
| @@ -1224,6 +1224,8 @@ static int usb_autopm_do_device(struct usb_device *udev, int inc_usage_cnt) | |||
| 1224 | udev->auto_pm = 1; | 1224 | udev->auto_pm = 1; |
| 1225 | udev->pm_usage_cnt += inc_usage_cnt; | 1225 | udev->pm_usage_cnt += inc_usage_cnt; |
| 1226 | WARN_ON(udev->pm_usage_cnt < 0); | 1226 | WARN_ON(udev->pm_usage_cnt < 0); |
| 1227 | if (inc_usage_cnt) | ||
| 1228 | udev->last_busy = jiffies; | ||
| 1227 | if (inc_usage_cnt >= 0 && udev->pm_usage_cnt > 0) { | 1229 | if (inc_usage_cnt >= 0 && udev->pm_usage_cnt > 0) { |
| 1228 | if (udev->state == USB_STATE_SUSPENDED) | 1230 | if (udev->state == USB_STATE_SUSPENDED) |
| 1229 | status = usb_resume_both(udev); | 1231 | status = usb_resume_both(udev); |
| @@ -1232,8 +1234,6 @@ static int usb_autopm_do_device(struct usb_device *udev, int inc_usage_cnt) | |||
| 1232 | else if (inc_usage_cnt) | 1234 | else if (inc_usage_cnt) |
| 1233 | udev->last_busy = jiffies; | 1235 | udev->last_busy = jiffies; |
| 1234 | } else if (inc_usage_cnt <= 0 && udev->pm_usage_cnt <= 0) { | 1236 | } else if (inc_usage_cnt <= 0 && udev->pm_usage_cnt <= 0) { |
| 1235 | if (inc_usage_cnt) | ||
| 1236 | udev->last_busy = jiffies; | ||
| 1237 | status = usb_suspend_both(udev, PMSG_SUSPEND); | 1237 | status = usb_suspend_both(udev, PMSG_SUSPEND); |
| 1238 | } | 1238 | } |
| 1239 | usb_pm_unlock(udev); | 1239 | usb_pm_unlock(udev); |
| @@ -1342,16 +1342,15 @@ static int usb_autopm_do_interface(struct usb_interface *intf, | |||
| 1342 | else { | 1342 | else { |
| 1343 | udev->auto_pm = 1; | 1343 | udev->auto_pm = 1; |
| 1344 | intf->pm_usage_cnt += inc_usage_cnt; | 1344 | intf->pm_usage_cnt += inc_usage_cnt; |
| 1345 | udev->last_busy = jiffies; | ||
| 1345 | if (inc_usage_cnt >= 0 && intf->pm_usage_cnt > 0) { | 1346 | if (inc_usage_cnt >= 0 && intf->pm_usage_cnt > 0) { |
| 1346 | if (udev->state == USB_STATE_SUSPENDED) | 1347 | if (udev->state == USB_STATE_SUSPENDED) |
| 1347 | status = usb_resume_both(udev); | 1348 | status = usb_resume_both(udev); |
| 1348 | if (status != 0) | 1349 | if (status != 0) |
| 1349 | intf->pm_usage_cnt -= inc_usage_cnt; | 1350 | intf->pm_usage_cnt -= inc_usage_cnt; |
| 1350 | else if (inc_usage_cnt) | 1351 | else |
| 1351 | udev->last_busy = jiffies; | 1352 | udev->last_busy = jiffies; |
| 1352 | } else if (inc_usage_cnt <= 0 && intf->pm_usage_cnt <= 0) { | 1353 | } else if (inc_usage_cnt <= 0 && intf->pm_usage_cnt <= 0) { |
| 1353 | if (inc_usage_cnt) | ||
| 1354 | udev->last_busy = jiffies; | ||
| 1355 | status = usb_suspend_both(udev, PMSG_SUSPEND); | 1354 | status = usb_suspend_both(udev, PMSG_SUSPEND); |
| 1356 | } | 1355 | } |
| 1357 | } | 1356 | } |
