|
@@ -5298,7 +5298,7 @@ static int ata_port_suspend(struct device *dev)
|
|
|
return ata_port_suspend_common(dev);
|
|
|
}
|
|
|
|
|
|
-static int ata_port_resume(struct device *dev)
|
|
|
+static int ata_port_resume_common(struct device *dev)
|
|
|
{
|
|
|
struct ata_port *ap = to_ata_port(dev);
|
|
|
int rc;
|
|
@@ -5308,6 +5308,20 @@ static int ata_port_resume(struct device *dev)
|
|
|
return rc;
|
|
|
}
|
|
|
|
|
|
+static int ata_port_resume(struct device *dev)
|
|
|
+{
|
|
|
+ int rc;
|
|
|
+
|
|
|
+ rc = ata_port_resume_common(dev);
|
|
|
+ if (!rc) {
|
|
|
+ pm_runtime_disable(dev);
|
|
|
+ pm_runtime_set_active(dev);
|
|
|
+ pm_runtime_enable(dev);
|
|
|
+ }
|
|
|
+
|
|
|
+ return rc;
|
|
|
+}
|
|
|
+
|
|
|
static int ata_port_runtime_idle(struct device *dev)
|
|
|
{
|
|
|
return pm_runtime_suspend(dev);
|
|
@@ -5318,7 +5332,7 @@ static const struct dev_pm_ops ata_port_pm_ops = {
|
|
|
.resume = ata_port_resume,
|
|
|
|
|
|
.runtime_suspend = ata_port_suspend_common,
|
|
|
- .runtime_resume = ata_port_resume,
|
|
|
+ .runtime_resume = ata_port_resume_common,
|
|
|
.runtime_idle = ata_port_runtime_idle,
|
|
|
};
|
|
|
|