Lines Matching refs:rng
34 struct powernv_rng *rng; in powernv_hwrng_present() local
36 rng = get_cpu_var(powernv_rng); in powernv_hwrng_present()
37 put_cpu_var(rng); in powernv_hwrng_present()
38 return rng != NULL; in powernv_hwrng_present()
41 static unsigned long rng_whiten(struct powernv_rng *rng, unsigned long val) in rng_whiten() argument
53 val ^= rng->mask; in rng_whiten()
56 rng->mask = (rng->mask << 1) | (parity & 1); in rng_whiten()
63 struct powernv_rng *rng; in powernv_get_random_real_mode() local
65 rng = raw_cpu_read(powernv_rng); in powernv_get_random_real_mode()
66 if (!rng) in powernv_get_random_real_mode()
69 *v = rng_whiten(rng, __raw_rm_readq(rng->regs_real)); in powernv_get_random_real_mode()
108 struct powernv_rng *rng; in powernv_get_random_long() local
110 rng = get_cpu_var(powernv_rng); in powernv_get_random_long()
112 *v = rng_whiten(rng, in_be64(rng->regs)); in powernv_get_random_long()
114 put_cpu_var(rng); in powernv_get_random_long()
120 static __init void rng_init_per_cpu(struct powernv_rng *rng, in rng_init_per_cpu() argument
132 per_cpu(powernv_rng, cpu) = rng; in rng_init_per_cpu()
139 struct powernv_rng *rng; in rng_create() local
143 rng = kzalloc(sizeof(*rng), GFP_KERNEL); in rng_create()
144 if (!rng) in rng_create()
148 kfree(rng); in rng_create()
152 rng->regs_real = (void __iomem *)res.start; in rng_create()
154 rng->regs = of_iomap(dn, 0); in rng_create()
155 if (!rng->regs) { in rng_create()
156 kfree(rng); in rng_create()
160 val = in_be64(rng->regs); in rng_create()
161 rng->mask = val; in rng_create()
163 rng_init_per_cpu(rng, dn); in rng_create()