Lines Matching full:trng

42 	struct atmel_trng *trng = container_of(rng, struct atmel_trng, rng);  in atmel_trng_read()  local
46 if (readl(trng->base + TRNG_ISR) & 1) { in atmel_trng_read()
47 *data = readl(trng->base + TRNG_ODATA); in atmel_trng_read()
54 readl(trng->base + TRNG_ISR); in atmel_trng_read()
60 static void atmel_trng_enable(struct atmel_trng *trng) in atmel_trng_enable() argument
62 writel(TRNG_KEY | 1, trng->base + TRNG_CR); in atmel_trng_enable()
65 static void atmel_trng_disable(struct atmel_trng *trng) in atmel_trng_disable() argument
67 writel(TRNG_KEY, trng->base + TRNG_CR); in atmel_trng_disable()
72 struct atmel_trng *trng; in atmel_trng_probe() local
76 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL); in atmel_trng_probe()
77 if (!trng) in atmel_trng_probe()
80 trng->base = devm_platform_ioremap_resource(pdev, 0); in atmel_trng_probe()
81 if (IS_ERR(trng->base)) in atmel_trng_probe()
82 return PTR_ERR(trng->base); in atmel_trng_probe()
84 trng->clk = devm_clk_get(&pdev->dev, NULL); in atmel_trng_probe()
85 if (IS_ERR(trng->clk)) in atmel_trng_probe()
86 return PTR_ERR(trng->clk); in atmel_trng_probe()
92 unsigned long rate = clk_get_rate(trng->clk); in atmel_trng_probe()
96 writel(TRNG_HALFR, trng->base + TRNG_MR); in atmel_trng_probe()
99 ret = clk_prepare_enable(trng->clk); in atmel_trng_probe()
103 atmel_trng_enable(trng); in atmel_trng_probe()
104 trng->rng.name = pdev->name; in atmel_trng_probe()
105 trng->rng.read = atmel_trng_read; in atmel_trng_probe()
107 ret = devm_hwrng_register(&pdev->dev, &trng->rng); in atmel_trng_probe()
111 platform_set_drvdata(pdev, trng); in atmel_trng_probe()
116 clk_disable_unprepare(trng->clk); in atmel_trng_probe()
122 struct atmel_trng *trng = platform_get_drvdata(pdev); in atmel_trng_remove() local
125 atmel_trng_disable(trng); in atmel_trng_remove()
126 clk_disable_unprepare(trng->clk); in atmel_trng_remove()
134 struct atmel_trng *trng = dev_get_drvdata(dev); in atmel_trng_suspend() local
136 atmel_trng_disable(trng); in atmel_trng_suspend()
137 clk_disable_unprepare(trng->clk); in atmel_trng_suspend()
144 struct atmel_trng *trng = dev_get_drvdata(dev); in atmel_trng_resume() local
147 ret = clk_prepare_enable(trng->clk); in atmel_trng_resume()
151 atmel_trng_enable(trng); in atmel_trng_resume()
172 .compatible = "atmel,at91sam9g45-trng",
175 .compatible = "microchip,sam9x60-trng",
187 .name = "atmel-trng",