diff options
author | Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com> | 2015-01-17 00:00:36 +0100 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2015-01-19 15:04:37 +0100 |
commit | 5bc27ef72719acb1cf745f16ce5583b57ea660aa (patch) | |
tree | e79a551c7845b8ad8aa7728fdac62e68cf7d5299 /drivers/ata/sata_rcar.c | |
parent | sata_dwc_460ex: disable compilation on ARM and ARM64 (diff) | |
download | linux-5bc27ef72719acb1cf745f16ce5583b57ea660aa.tar.xz linux-5bc27ef72719acb1cf745f16ce5583b57ea660aa.zip |
sata_rcar: extend PM methods
In order to make it possible to restore from hibernation not only in Linux but
also in e.g. U-Boot, we have to extend sata_rcar_{suspend|resume}() to {freeze|
thaw}() PM methods and implement the restore() PM method.
Signed-off-by: Mikhail Ulyanov <mikhail.ulyanov@cogentembedded.com>
[Sergei: killed unused variable, changed the order of initializers, modified
copyrights, renamed, modified changelog.]
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ata/sata_rcar.c')
-rw-r--r-- | drivers/ata/sata_rcar.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c index cb0d2e644af5..d49a5193b7de 100644 --- a/drivers/ata/sata_rcar.c +++ b/drivers/ata/sata_rcar.c @@ -2,8 +2,8 @@ * Renesas R-Car SATA driver * * Author: Vladimir Barinov <source@cogentembedded.com> - * Copyright (C) 2013 Cogent Embedded, Inc. - * Copyright (C) 2013 Renesas Solutions Corp. + * Copyright (C) 2013-2015 Cogent Embedded, Inc. + * Copyright (C) 2013-2015 Renesas Solutions Corp. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the @@ -992,9 +992,30 @@ static int sata_rcar_resume(struct device *dev) return 0; } +static int sata_rcar_restore(struct device *dev) +{ + struct ata_host *host = dev_get_drvdata(dev); + struct sata_rcar_priv *priv = host->private_data; + + clk_prepare_enable(priv->clk); + + sata_rcar_setup_port(host); + + /* initialize host controller */ + sata_rcar_init_controller(host); + + ata_host_resume(host); + + return 0; +} + static const struct dev_pm_ops sata_rcar_pm_ops = { .suspend = sata_rcar_suspend, .resume = sata_rcar_resume, + .freeze = sata_rcar_suspend, + .thaw = sata_rcar_resume, + .poweroff = sata_rcar_suspend, + .restore = sata_rcar_restore, }; #endif |