Lines Matching refs:priv
121 u32 (*data_present)(struct omap_rng_dev *priv);
122 int (*init)(struct omap_rng_dev *priv);
123 void (*cleanup)(struct omap_rng_dev *priv);
132 static inline u32 omap_rng_read(struct omap_rng_dev *priv, u16 reg) in omap_rng_read() argument
134 return __raw_readl(priv->base + priv->pdata->regs[reg]); in omap_rng_read()
137 static inline void omap_rng_write(struct omap_rng_dev *priv, u16 reg, in omap_rng_write() argument
140 __raw_writel(val, priv->base + priv->pdata->regs[reg]); in omap_rng_write()
145 struct omap_rng_dev *priv; in omap_rng_data_present() local
148 priv = (struct omap_rng_dev *)rng->priv; in omap_rng_data_present()
151 data = priv->pdata->data_present(priv); in omap_rng_data_present()
166 struct omap_rng_dev *priv; in omap_rng_data_read() local
169 priv = (struct omap_rng_dev *)rng->priv; in omap_rng_data_read()
170 data_size = priv->pdata->data_size; in omap_rng_data_read()
173 data[i] = omap_rng_read(priv, RNG_OUTPUT_L_REG + i); in omap_rng_data_read()
175 if (priv->pdata->regs[RNG_INTACK_REG]) in omap_rng_data_read()
176 omap_rng_write(priv, RNG_INTACK_REG, RNG_REG_INTACK_RDY_MASK); in omap_rng_data_read()
182 struct omap_rng_dev *priv; in omap_rng_init() local
184 priv = (struct omap_rng_dev *)rng->priv; in omap_rng_init()
185 return priv->pdata->init(priv); in omap_rng_init()
190 struct omap_rng_dev *priv; in omap_rng_cleanup() local
192 priv = (struct omap_rng_dev *)rng->priv; in omap_rng_cleanup()
193 priv->pdata->cleanup(priv); in omap_rng_cleanup()
204 static inline u32 omap2_rng_data_present(struct omap_rng_dev *priv) in omap2_rng_data_present() argument
206 return omap_rng_read(priv, RNG_STATUS_REG) ? 0 : 1; in omap2_rng_data_present()
209 static int omap2_rng_init(struct omap_rng_dev *priv) in omap2_rng_init() argument
211 omap_rng_write(priv, RNG_SYSCONFIG_REG, 0x1); in omap2_rng_init()
215 static void omap2_rng_cleanup(struct omap_rng_dev *priv) in omap2_rng_cleanup() argument
217 omap_rng_write(priv, RNG_SYSCONFIG_REG, 0x0); in omap2_rng_cleanup()
229 static inline u32 omap4_rng_data_present(struct omap_rng_dev *priv) in omap4_rng_data_present() argument
231 return omap_rng_read(priv, RNG_STATUS_REG) & RNG_REG_STATUS_RDY; in omap4_rng_data_present()
234 static int omap4_rng_init(struct omap_rng_dev *priv) in omap4_rng_init() argument
239 if (omap_rng_read(priv, RNG_CONTROL_REG) & RNG_CONTROL_ENABLE_TRNG_MASK) in omap4_rng_init()
244 omap_rng_write(priv, RNG_CONFIG_REG, val); in omap4_rng_init()
246 omap_rng_write(priv, RNG_FRODETUNE_REG, 0x0); in omap4_rng_init()
247 omap_rng_write(priv, RNG_FROENABLE_REG, RNG_REG_FROENABLE_MASK); in omap4_rng_init()
250 omap_rng_write(priv, RNG_ALARMCNT_REG, val); in omap4_rng_init()
254 omap_rng_write(priv, RNG_CONTROL_REG, val); in omap4_rng_init()
259 static void omap4_rng_cleanup(struct omap_rng_dev *priv) in omap4_rng_cleanup() argument
263 val = omap_rng_read(priv, RNG_CONTROL_REG); in omap4_rng_cleanup()
265 omap_rng_write(priv, RNG_CONTROL_REG, val); in omap4_rng_cleanup()
270 struct omap_rng_dev *priv = dev_id; in omap4_rng_irq() local
279 omap_rng_write(priv, RNG_ALARMMASK_REG, 0x0); in omap4_rng_irq()
280 omap_rng_write(priv, RNG_ALARMSTOP_REG, 0x0); in omap4_rng_irq()
282 fro_enable = omap_rng_read(priv, RNG_FROENABLE_REG); in omap4_rng_irq()
284 fro_detune = fro_detune | omap_rng_read(priv, RNG_FRODETUNE_REG); in omap4_rng_irq()
287 omap_rng_write(priv, RNG_FRODETUNE_REG, fro_detune); in omap4_rng_irq()
288 omap_rng_write(priv, RNG_FROENABLE_REG, fro_enable); in omap4_rng_irq()
290 omap_rng_write(priv, RNG_INTACK_REG, RNG_REG_INTACK_SHUTDOWN_OFLO_MASK); in omap4_rng_irq()
316 static int of_get_omap_rng_device_details(struct omap_rng_dev *priv, in of_get_omap_rng_device_details() argument
328 priv->pdata = match->data; in of_get_omap_rng_device_details()
339 IRQF_TRIGGER_NONE, dev_name(dev), priv); in of_get_omap_rng_device_details()
345 omap_rng_write(priv, RNG_INTMASK_REG, RNG_SHUTDOWN_OFLO_MASK); in of_get_omap_rng_device_details()
366 struct omap_rng_dev *priv; in omap_rng_probe() local
371 priv = devm_kzalloc(dev, sizeof(struct omap_rng_dev), GFP_KERNEL); in omap_rng_probe()
372 if (!priv) in omap_rng_probe()
375 omap_rng_ops.priv = (unsigned long)priv; in omap_rng_probe()
376 platform_set_drvdata(pdev, priv); in omap_rng_probe()
377 priv->dev = dev; in omap_rng_probe()
380 priv->base = devm_ioremap_resource(dev, res); in omap_rng_probe()
381 if (IS_ERR(priv->base)) { in omap_rng_probe()
382 ret = PTR_ERR(priv->base); in omap_rng_probe()
389 ret = (dev->of_node) ? of_get_omap_rng_device_details(priv, pdev) : in omap_rng_probe()
390 get_omap_rng_device_details(priv); in omap_rng_probe()
399 omap_rng_read(priv, RNG_REV_REG)); in omap_rng_probe()
404 priv->base = NULL; in omap_rng_probe()
413 struct omap_rng_dev *priv = platform_get_drvdata(pdev); in omap_rng_remove() local
417 priv->pdata->cleanup(priv); in omap_rng_remove()
427 struct omap_rng_dev *priv = dev_get_drvdata(dev); in omap_rng_suspend() local
429 priv->pdata->cleanup(priv); in omap_rng_suspend()
437 struct omap_rng_dev *priv = dev_get_drvdata(dev); in omap_rng_resume() local
440 priv->pdata->init(priv); in omap_rng_resume()