Lines Matching refs:trng
33 struct atmel_trng *trng = container_of(rng, struct atmel_trng, rng); in atmel_trng_read() local
37 if (readl(trng->base + TRNG_ISR) & 1) { in atmel_trng_read()
38 *data = readl(trng->base + TRNG_ODATA); in atmel_trng_read()
45 readl(trng->base + TRNG_ISR); in atmel_trng_read()
53 struct atmel_trng *trng; in atmel_trng_probe() local
57 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL); in atmel_trng_probe()
58 if (!trng) in atmel_trng_probe()
62 trng->base = devm_ioremap_resource(&pdev->dev, res); in atmel_trng_probe()
63 if (IS_ERR(trng->base)) in atmel_trng_probe()
64 return PTR_ERR(trng->base); in atmel_trng_probe()
66 trng->clk = devm_clk_get(&pdev->dev, NULL); in atmel_trng_probe()
67 if (IS_ERR(trng->clk)) in atmel_trng_probe()
68 return PTR_ERR(trng->clk); in atmel_trng_probe()
70 ret = clk_prepare_enable(trng->clk); in atmel_trng_probe()
74 writel(TRNG_KEY | 1, trng->base + TRNG_CR); in atmel_trng_probe()
75 trng->rng.name = pdev->name; in atmel_trng_probe()
76 trng->rng.read = atmel_trng_read; in atmel_trng_probe()
78 ret = hwrng_register(&trng->rng); in atmel_trng_probe()
82 platform_set_drvdata(pdev, trng); in atmel_trng_probe()
87 clk_disable(trng->clk); in atmel_trng_probe()
93 struct atmel_trng *trng = platform_get_drvdata(pdev); in atmel_trng_remove() local
95 hwrng_unregister(&trng->rng); in atmel_trng_remove()
97 writel(TRNG_KEY, trng->base + TRNG_CR); in atmel_trng_remove()
98 clk_disable_unprepare(trng->clk); in atmel_trng_remove()
106 struct atmel_trng *trng = dev_get_drvdata(dev); in atmel_trng_suspend() local
108 clk_disable_unprepare(trng->clk); in atmel_trng_suspend()
115 struct atmel_trng *trng = dev_get_drvdata(dev); in atmel_trng_resume() local
117 return clk_prepare_enable(trng->clk); in atmel_trng_resume()