Lines Matching full:rng
3 * rockchip-rng.c Random Number Generator driver for the Rockchip
114 int (*rk_rng_init)(struct hwrng *rng);
115 int (*rk_rng_read)(struct hwrng *rng, void *buf, size_t max, bool wait);
120 struct hwrng rng; member
127 static void rk_rng_writel(struct rk_rng *rng, u32 val, u32 offset) in rk_rng_writel() argument
129 __raw_writel(val, rng->mem + offset); in rk_rng_writel()
132 static u32 rk_rng_readl(struct rk_rng *rng, u32 offset) in rk_rng_readl() argument
134 return __raw_readl(rng->mem + offset); in rk_rng_readl()
137 static int rk_rng_init(struct hwrng *rng) in rk_rng_init() argument
140 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk_rng_init()
153 static void rk_rng_cleanup(struct hwrng *rng) in rk_rng_cleanup() argument
155 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk_rng_cleanup()
161 static int rk_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in rk_rng_read() argument
165 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk_rng_read()
178 read_len = rk_rng->soc_data->rk_rng_read(rng, buf + ret, in rk_rng_read()
193 static void rk_rng_read_regs(struct rk_rng *rng, u32 offset, void *buf, in rk_rng_read_regs() argument
199 *(u32 *)(buf + i) = be32_to_cpu(rk_rng_readl(rng, offset + i)); in rk_rng_read_regs()
202 static int crypto_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait) in crypto_v1_read() argument
206 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in crypto_v1_read()
237 static int crypto_v2_read(struct hwrng *rng, void *buf, size_t max, bool wait) in crypto_v2_read() argument
241 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in crypto_v2_read()
273 static int trng_v1_init(struct hwrng *rng) in trng_v1_init() argument
278 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in trng_v1_init()
322 static int trng_v1_read(struct hwrng *rng, void *buf, size_t max, bool wait) in trng_v1_read() argument
326 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in trng_v1_read()
338 * Estimated at 150M RNG module frequency, it takes 6.7 microseconds. in trng_v1_read()
366 static int rkrng_init(struct hwrng *rng) in rkrng_init() argument
368 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rkrng_init()
379 static int rkrng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in rkrng_read() argument
381 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rkrng_read()
438 .compatible = "rockchip,cryptov1-rng",
442 .compatible = "rockchip,cryptov2-rng",
475 rk_rng->rng.name = "rockchip"; in rk_rng_probe()
477 rk_rng->rng.init = rk_rng_init; in rk_rng_probe()
478 rk_rng->rng.cleanup = rk_rng_cleanup, in rk_rng_probe()
480 rk_rng->rng.read = rk_rng_read; in rk_rng_probe()
481 rk_rng->rng.quality = 999; in rk_rng_probe()
489 * With old dtsi configurations, the RNG base was equal to the crypto in rk_rng_probe()
491 * RNG base = CRYPTO base + RNG offset in rk_rng_probe()
492 * (Since RK356X, RNG module is no longer belongs to CRYPTO module) in rk_rng_probe()
495 * |---cipher---|---rng---|---pka---|, and RNG base is real RNG base. in rk_rng_probe()
496 * RNG driver and CRYPTO driver could be enabled at the same time. in rk_rng_probe()
514 ret = devm_hwrng_register(&pdev->dev, &rk_rng->rng); in rk_rng_probe()
524 ret = rk_rng->soc_data->rk_rng_init(&rk_rng->rng); in rk_rng_probe()
538 rk_rng_cleanup(&rk_rng->rng); in rk_rng_runtime_suspend()
547 return rk_rng_init(&rk_rng->rng); in rk_rng_runtime_resume()
561 .name = "rockchip-rng",