Lines Matching defs:trng

43 static bool atmel_trng_wait_ready(struct atmel_trng *trng, bool wait)
47 ready = readl(trng->base + TRNG_ISR) & TRNG_ISR_DATRDY;
49 readl_poll_timeout(trng->base + TRNG_ISR, ready,
58 struct atmel_trng *trng = container_of(rng, struct atmel_trng, rng);
62 ret = pm_runtime_get_sync((struct device *)trng->rng.priv);
64 pm_runtime_put_sync((struct device *)trng->rng.priv);
68 ret = atmel_trng_wait_ready(trng, wait);
72 *data = readl(trng->base + TRNG_ODATA);
78 readl(trng->base + TRNG_ISR);
82 pm_runtime_mark_last_busy((struct device *)trng->rng.priv);
83 pm_runtime_put_sync_autosuspend((struct device *)trng->rng.priv);
87 static int atmel_trng_init(struct atmel_trng *trng)
92 ret = clk_prepare_enable(trng->clk);
96 if (trng->has_half_rate) {
97 rate = clk_get_rate(trng->clk);
101 writel(TRNG_HALFR, trng->base + TRNG_MR);
104 writel(TRNG_KEY | 1, trng->base + TRNG_CR);
109 static void atmel_trng_cleanup(struct atmel_trng *trng)
111 writel(TRNG_KEY, trng->base + TRNG_CR);
112 clk_disable_unprepare(trng->clk);
117 struct atmel_trng *trng;
121 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL);
122 if (!trng)
125 trng->base = devm_platform_ioremap_resource(pdev, 0);
126 if (IS_ERR(trng->base))
127 return PTR_ERR(trng->base);
129 trng->clk = devm_clk_get(&pdev->dev, NULL);
130 if (IS_ERR(trng->clk))
131 return PTR_ERR(trng->clk);
136 trng->has_half_rate = data->has_half_rate;
137 trng->rng.name = pdev->name;
138 trng->rng.read = atmel_trng_read;
139 trng->rng.priv = (unsigned long)&pdev->dev;
140 platform_set_drvdata(pdev, trng);
143 ret = atmel_trng_init(trng);
152 ret = devm_hwrng_register(&pdev->dev, &trng->rng);
157 atmel_trng_cleanup(trng);
166 struct atmel_trng *trng = platform_get_drvdata(pdev);
168 atmel_trng_cleanup(trng);
177 struct atmel_trng *trng = dev_get_drvdata(dev);
179 atmel_trng_cleanup(trng);
186 struct atmel_trng *trng = dev_get_drvdata(dev);
188 return atmel_trng_init(trng);
208 .compatible = "atmel,at91sam9g45-trng",
211 .compatible = "microchip,sam9x60-trng",
223 .name = "atmel-trng",