hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/char/hw_random/iproc-rng200.c
....@@ -195,6 +195,8 @@
195195 return PTR_ERR(priv->base);
196196 }
197197
198
+ dev_set_drvdata(dev, priv);
199
+
198200 priv->rng.name = "iproc-rng200";
199201 priv->rng.read = iproc_rng200_read;
200202 priv->rng.init = iproc_rng200_init;
....@@ -212,6 +214,28 @@
212214 return 0;
213215 }
214216
217
+static int __maybe_unused iproc_rng200_suspend(struct device *dev)
218
+{
219
+ struct iproc_rng200_dev *priv = dev_get_drvdata(dev);
220
+
221
+ iproc_rng200_cleanup(&priv->rng);
222
+
223
+ return 0;
224
+}
225
+
226
+static int __maybe_unused iproc_rng200_resume(struct device *dev)
227
+{
228
+ struct iproc_rng200_dev *priv = dev_get_drvdata(dev);
229
+
230
+ iproc_rng200_init(&priv->rng);
231
+
232
+ return 0;
233
+}
234
+
235
+static const struct dev_pm_ops iproc_rng200_pm_ops = {
236
+ SET_SYSTEM_SLEEP_PM_OPS(iproc_rng200_suspend, iproc_rng200_resume)
237
+};
238
+
215239 static const struct of_device_id iproc_rng200_of_match[] = {
216240 { .compatible = "brcm,bcm2711-rng200", },
217241 { .compatible = "brcm,bcm7211-rng200", },
....@@ -225,6 +249,7 @@
225249 .driver = {
226250 .name = "iproc-rng200",
227251 .of_match_table = iproc_rng200_of_match,
252
+ .pm = &iproc_rng200_pm_ops,
228253 },
229254 .probe = iproc_rng200_probe,
230255 };