diff options
author | Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> | 2014-03-25 19:51:38 +0100 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2014-03-25 20:17:13 +0100 |
commit | 83b03fd67b9b3fa3795871169f3c08c35b3d6ea8 (patch) | |
tree | ed86820db1b58c6e4503e08ec072770acf6000cb /drivers/ata/ahci_platform.c | |
parent | libata: remove unused ata_sas_port_async_resume() stub (diff) | |
download | linux-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.c | 11 |
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); |