.. | .. |
---|
195 | 195 | return PTR_ERR(priv->base); |
---|
196 | 196 | } |
---|
197 | 197 | |
---|
| 198 | + dev_set_drvdata(dev, priv); |
---|
| 199 | + |
---|
198 | 200 | priv->rng.name = "iproc-rng200"; |
---|
199 | 201 | priv->rng.read = iproc_rng200_read; |
---|
200 | 202 | priv->rng.init = iproc_rng200_init; |
---|
.. | .. |
---|
212 | 214 | return 0; |
---|
213 | 215 | } |
---|
214 | 216 | |
---|
| 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 | + |
---|
215 | 239 | static const struct of_device_id iproc_rng200_of_match[] = { |
---|
216 | 240 | { .compatible = "brcm,bcm2711-rng200", }, |
---|
217 | 241 | { .compatible = "brcm,bcm7211-rng200", }, |
---|
.. | .. |
---|
225 | 249 | .driver = { |
---|
226 | 250 | .name = "iproc-rng200", |
---|
227 | 251 | .of_match_table = iproc_rng200_of_match, |
---|
| 252 | + .pm = &iproc_rng200_pm_ops, |
---|
228 | 253 | }, |
---|
229 | 254 | .probe = iproc_rng200_probe, |
---|
230 | 255 | }; |
---|