Lines Matching defs:trng
40 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng);
43 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET);
45 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET);
52 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng);
55 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET);
57 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET);
62 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng);
67 ret = readl_poll_timeout(trng->base + TRNG_REG_STATUS_OFFSET, status,
74 *data = readl(trng->base + TRNG_REG_RANDOMNUM_OFFSET);
81 struct ingenic_trng *trng;
84 trng = devm_kzalloc(&pdev->dev, sizeof(*trng), GFP_KERNEL);
85 if (!trng)
88 trng->base = devm_platform_ioremap_resource(pdev, 0);
89 if (IS_ERR(trng->base)) {
91 ret = PTR_ERR(trng->base);
92 return PTR_ERR(trng->base);
95 trng->clk = devm_clk_get(&pdev->dev, NULL);
96 if (IS_ERR(trng->clk)) {
97 ret = PTR_ERR(trng->clk);
99 return PTR_ERR(trng->clk);
102 ret = clk_prepare_enable(trng->clk);
108 trng->rng.name = pdev->name;
109 trng->rng.init = ingenic_trng_init;
110 trng->rng.cleanup = ingenic_trng_cleanup;
111 trng->rng.read = ingenic_trng_read;
113 ret = hwrng_register(&trng->rng);
119 platform_set_drvdata(pdev, trng);
125 clk_disable_unprepare(trng->clk);
131 struct ingenic_trng *trng = platform_get_drvdata(pdev);
134 hwrng_unregister(&trng->rng);
136 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET);
138 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET);
140 clk_disable_unprepare(trng->clk);
155 .name = "ingenic-trng",