Lines Matching refs:trng

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