summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGovindraj Raja <Govindraj.Raja@imgtec.com>2016-08-05 14:00:17 +0100
committerHerbert Xu <herbert@gondor.apana.org.au>2016-08-09 18:47:21 +0800
commitd084e13a1395cf65d105fb79911329750500f8c5 (patch)
tree15ff37fedf80a4b15d5d1fbf6beea4ef9b728056
parent302a1bee8fd71b01bcf4ca8395c115a60cef52bf (diff)
downloadlinux-stable-d084e13a1395cf65d105fb79911329750500f8c5.tar.gz
linux-stable-d084e13a1395cf65d105fb79911329750500f8c5.tar.bz2
linux-stable-d084e13a1395cf65d105fb79911329750500f8c5.zip
crypto: img-hash - Add suspend resume hooks for img hash
Current img hash claims sys and periph gate clocks and this can be gated in system suspend scenarios. Add support for Device pm ops for img hash to gate the clocks claimed by img hash. Signed-off-by: Govindraj Raja <Govindraj.Raja@imgtec.com> Reviewed-by: Will Thomas <will.thomas@imgtec.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--drivers/crypto/img-hash.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/crypto/img-hash.c b/drivers/crypto/img-hash.c
index f8abbe3bc51c..2622c0174232 100644
--- a/drivers/crypto/img-hash.c
+++ b/drivers/crypto/img-hash.c
@@ -1016,11 +1016,38 @@ static int img_hash_remove(struct platform_device *pdev)
return 0;
}
+#ifdef CONFIG_PM_SLEEP
+static int img_hash_suspend(struct device *dev)
+{
+ struct img_hash_dev *hdev = dev_get_drvdata(dev);
+
+ clk_disable_unprepare(hdev->hash_clk);
+ clk_disable_unprepare(hdev->sys_clk);
+
+ return 0;
+}
+
+static int img_hash_resume(struct device *dev)
+{
+ struct img_hash_dev *hdev = dev_get_drvdata(dev);
+
+ clk_prepare_enable(hdev->hash_clk);
+ clk_prepare_enable(hdev->sys_clk);
+
+ return 0;
+}
+#endif /* CONFIG_PM_SLEEP */
+
+static const struct dev_pm_ops img_hash_pm_ops = {
+ SET_SYSTEM_SLEEP_PM_OPS(img_hash_suspend, img_hash_resume)
+};
+
static struct platform_driver img_hash_driver = {
.probe = img_hash_probe,
.remove = img_hash_remove,
.driver = {
.name = "img-hash-accelerator",
+ .pm = &img_hash_pm_ops,
.of_match_table = of_match_ptr(img_hash_match),
}
};