Lines Matching full:rng
6 #define pr_fmt(fmt) "powernv-rng: " fmt
32 static unsigned long rng_whiten(struct pnv_rng *rng, unsigned long val) in rng_whiten() argument
44 val ^= rng->mask; in rng_whiten()
47 rng->mask = (rng->mask << 1) | (parity & 1); in rng_whiten()
86 struct pnv_rng *rng; in pnv_get_random_long() local
89 rng = get_cpu_var(pnv_rng); in pnv_get_random_long()
90 *v = rng_whiten(rng, in_be64(rng->regs)); in pnv_get_random_long()
91 put_cpu_var(rng); in pnv_get_random_long()
93 rng = raw_cpu_read(pnv_rng); in pnv_get_random_long()
94 *v = rng_whiten(rng, __raw_rm_readq(rng->regs_real)); in pnv_get_random_long()
100 static __init void rng_init_per_cpu(struct pnv_rng *rng, in rng_init_per_cpu() argument
112 per_cpu(pnv_rng, cpu) = rng; in rng_init_per_cpu()
119 struct pnv_rng *rng; in rng_create() local
123 rng = kzalloc(sizeof(*rng), GFP_KERNEL); in rng_create()
124 if (!rng) in rng_create()
128 kfree(rng); in rng_create()
132 rng->regs_real = (void __iomem *)res.start; in rng_create()
134 rng->regs = of_iomap(dn, 0); in rng_create()
135 if (!rng->regs) { in rng_create()
136 kfree(rng); in rng_create()
140 val = in_be64(rng->regs); in rng_create()
141 rng->mask = val; in rng_create()
143 rng_init_per_cpu(rng, dn); in rng_create()
161 for_each_compatible_node(dn, NULL, "ibm,power-rng") in pnv_get_random_long_early()
177 dn = of_find_compatible_node(NULL, NULL, "ibm,power-rng"); in pnv_rng_init()
194 for_each_compatible_node(dn, NULL, "ibm,power-rng") in pnv_rng_late_init()