Lines Matching defs:trng

42 	struct atmel_trng *trng = container_of(rng, struct atmel_trng, rng);
46 if (readl(trng->base + TRNG_ISR) & 1) {
47 *data = readl(trng->base + TRNG_ODATA);
54 readl(trng->base + TRNG_ISR);
60 static void atmel_trng_enable(struct atmel_trng *trng)
62 writel(TRNG_KEY | 1, trng->base + TRNG_CR);
65 static void atmel_trng_disable(struct atmel_trng *trng)
67 writel(TRNG_KEY, trng->base + TRNG_CR);
72 struct atmel_trng *trng;
76 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL);
77 if (!trng)
80 trng->base = devm_platform_ioremap_resource(pdev, 0);
81 if (IS_ERR(trng->base))
82 return PTR_ERR(trng->base);
84 trng->clk = devm_clk_get(&pdev->dev, NULL);
85 if (IS_ERR(trng->clk))
86 return PTR_ERR(trng->clk);
92 unsigned long rate = clk_get_rate(trng->clk);
96 writel(TRNG_HALFR, trng->base + TRNG_MR);
99 ret = clk_prepare_enable(trng->clk);
103 atmel_trng_enable(trng);
104 trng->rng.name = pdev->name;
105 trng->rng.read = atmel_trng_read;
107 ret = devm_hwrng_register(&pdev->dev, &trng->rng);
111 platform_set_drvdata(pdev, trng);
116 clk_disable_unprepare(trng->clk);
117 atmel_trng_disable(trng);
123 struct atmel_trng *trng = platform_get_drvdata(pdev);
126 atmel_trng_disable(trng);
127 clk_disable_unprepare(trng->clk);
135 struct atmel_trng *trng = dev_get_drvdata(dev);
137 atmel_trng_disable(trng);
138 clk_disable_unprepare(trng->clk);
145 struct atmel_trng *trng = dev_get_drvdata(dev);
148 ret = clk_prepare_enable(trng->clk);
152 atmel_trng_enable(trng);
173 .compatible = "atmel,at91sam9g45-trng",
176 .compatible = "microchip,sam9x60-trng",
188 .name = "atmel-trng",