diff options
Diffstat (limited to 'drivers/scsi/scsi_pm.c')
-rw-r--r-- | drivers/scsi/scsi_pm.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/drivers/scsi/scsi_pm.c b/drivers/scsi/scsi_pm.c index d4201ded3b22..dc0ad85853e2 100644 --- a/drivers/scsi/scsi_pm.c +++ b/drivers/scsi/scsi_pm.c | |||
@@ -76,23 +76,24 @@ static int scsi_bus_resume_common(struct device *dev) | |||
76 | { | 76 | { |
77 | int err = 0; | 77 | int err = 0; |
78 | 78 | ||
79 | if (scsi_is_sdev_device(dev)) { | 79 | /* |
80 | /* | 80 | * Parent device may have runtime suspended as soon as |
81 | * Parent device may have runtime suspended as soon as | 81 | * it is woken up during the system resume. |
82 | * it is woken up during the system resume. | 82 | * |
83 | * | 83 | * Resume it on behalf of child. |
84 | * Resume it on behalf of child. | 84 | */ |
85 | */ | 85 | pm_runtime_get_sync(dev->parent); |
86 | pm_runtime_get_sync(dev->parent); | ||
87 | err = scsi_dev_type_resume(dev); | ||
88 | pm_runtime_put_sync(dev->parent); | ||
89 | } | ||
90 | 86 | ||
87 | if (scsi_is_sdev_device(dev)) | ||
88 | err = scsi_dev_type_resume(dev); | ||
91 | if (err == 0) { | 89 | if (err == 0) { |
92 | pm_runtime_disable(dev); | 90 | pm_runtime_disable(dev); |
93 | pm_runtime_set_active(dev); | 91 | pm_runtime_set_active(dev); |
94 | pm_runtime_enable(dev); | 92 | pm_runtime_enable(dev); |
95 | } | 93 | } |
94 | |||
95 | pm_runtime_put_sync(dev->parent); | ||
96 | |||
96 | return err; | 97 | return err; |
97 | } | 98 | } |
98 | 99 | ||