summaryrefslogtreecommitdiffstats
path: root/drivers/ata/ahci_platform.c
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>2014-03-25 19:51:38 +0100
committerTejun Heo <tj@kernel.org>2014-03-25 20:17:13 +0100
commit83b03fd67b9b3fa3795871169f3c08c35b3d6ea8 (patch)
treeed86820db1b58c6e4503e08ec072770acf6000cb /drivers/ata/ahci_platform.c
parentlibata: remove unused ata_sas_port_async_resume() stub (diff)
downloadlinux-83b03fd67b9b3fa3795871169f3c08c35b3d6ea8.tar.xz
linux-83b03fd67b9b3fa3795871169f3c08c35b3d6ea8.zip
ata: ahci_platform: fix ahci_platform_data->suspend method handling
Looking at ST SPEAr1340 AHCI code (the only user of the deprecated pdata->suspend and pdata->resume) it is obvious the we should return after calling pdata->suspend() only if the function have returned non-zero return value. The code has been broken since commit 1e70c2 ("ata/ahci_platform: Add clock framework support"). Fix it. Cc: Viresh Kumar <viresh.linux@gmail.com> Cc: Shiraz Hashim <shiraz.hashim@st.com> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ata/ahci_platform.c')
-rw-r--r--drivers/ata/ahci_platform.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index 70fbf664a73c..7bd6adf54b3e 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -521,12 +521,19 @@ int ahci_platform_suspend(struct device *dev)
if (rc)
return rc;
- if (pdata && pdata->suspend)
- return pdata->suspend(dev);
+ if (pdata && pdata->suspend) {
+ rc = pdata->suspend(dev);
+ if (rc)
+ goto resume_host;
+ }
ahci_platform_disable_resources(hpriv);
return 0;
+
+resume_host:
+ ahci_platform_resume_host(dev);
+ return rc;
}
EXPORT_SYMBOL_GPL(ahci_platform_suspend);