aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/hw_random/atmel-rng.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/hw_random/atmel-rng.c')
-rw-r--r--drivers/char/hw_random/atmel-rng.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/drivers/char/hw_random/atmel-rng.c b/drivers/char/hw_random/atmel-rng.c
index 851bc7e20ad2..0bb0b2120a63 100644
--- a/drivers/char/hw_random/atmel-rng.c
+++ b/drivers/char/hw_random/atmel-rng.c
@@ -67,7 +67,7 @@ static int atmel_trng_probe(struct platform_device *pdev)
67 if (IS_ERR(trng->clk)) 67 if (IS_ERR(trng->clk))
68 return PTR_ERR(trng->clk); 68 return PTR_ERR(trng->clk);
69 69
70 ret = clk_enable(trng->clk); 70 ret = clk_prepare_enable(trng->clk);
71 if (ret) 71 if (ret)
72 return ret; 72 return ret;
73 73
@@ -95,7 +95,7 @@ static int atmel_trng_remove(struct platform_device *pdev)
95 hwrng_unregister(&trng->rng); 95 hwrng_unregister(&trng->rng);
96 96
97 writel(TRNG_KEY, trng->base + TRNG_CR); 97 writel(TRNG_KEY, trng->base + TRNG_CR);
98 clk_disable(trng->clk); 98 clk_disable_unprepare(trng->clk);
99 99
100 return 0; 100 return 0;
101} 101}
@@ -105,7 +105,7 @@ static int atmel_trng_suspend(struct device *dev)
105{ 105{
106 struct atmel_trng *trng = dev_get_drvdata(dev); 106 struct atmel_trng *trng = dev_get_drvdata(dev);
107 107
108 clk_disable(trng->clk); 108 clk_disable_unprepare(trng->clk);
109 109
110 return 0; 110 return 0;
111} 111}
@@ -114,7 +114,7 @@ static int atmel_trng_resume(struct device *dev)
114{ 114{
115 struct atmel_trng *trng = dev_get_drvdata(dev); 115 struct atmel_trng *trng = dev_get_drvdata(dev);
116 116
117 return clk_enable(trng->clk); 117 return clk_prepare_enable(trng->clk);
118} 118}
119 119
120static const struct dev_pm_ops atmel_trng_pm_ops = { 120static const struct dev_pm_ops atmel_trng_pm_ops = {
@@ -123,6 +123,12 @@ static const struct dev_pm_ops atmel_trng_pm_ops = {
123}; 123};
124#endif /* CONFIG_PM */ 124#endif /* CONFIG_PM */
125 125
126static const struct of_device_id atmel_trng_dt_ids[] = {
127 { .compatible = "atmel,at91sam9g45-trng" },
128 { /* sentinel */ }
129};
130MODULE_DEVICE_TABLE(of, atmel_trng_dt_ids);
131
126static struct platform_driver atmel_trng_driver = { 132static struct platform_driver atmel_trng_driver = {
127 .probe = atmel_trng_probe, 133 .probe = atmel_trng_probe,
128 .remove = atmel_trng_remove, 134 .remove = atmel_trng_remove,
@@ -132,6 +138,7 @@ static struct platform_driver atmel_trng_driver = {
132#ifdef CONFIG_PM 138#ifdef CONFIG_PM
133 .pm = &atmel_trng_pm_ops, 139 .pm = &atmel_trng_pm_ops,
134#endif /* CONFIG_PM */ 140#endif /* CONFIG_PM */
141 .of_match_table = atmel_trng_dt_ids,
135 }, 142 },
136}; 143};
137 144