Lines Matching full:rng

3  * rockchip-rng.c True Random Number Generator driver for Rockchip SoCs
98 "You raised RK_RNG_MAX_BYTE and broke rk3588-rng, congrats.");
101 struct hwrng rng; member
110 int (*rk_rng_init)(struct hwrng *rng);
111 int (*rk_rng_read)(struct hwrng *rng, void *buf, size_t max, bool wait);
112 void (*rk_rng_cleanup)(struct hwrng *rng);
118 static void rk_rng_write_ctl(struct rk_rng *rng, u32 val, u32 mask) in rk_rng_write_ctl() argument
120 writel((mask << 16) | val, rng->base + TRNG_RNG_CTL); in rk_rng_write_ctl()
123 static inline void rk_rng_writel(struct rk_rng *rng, u32 val, u32 offset) in rk_rng_writel() argument
125 writel(val, rng->base + offset); in rk_rng_writel()
128 static inline u32 rk_rng_readl(struct rk_rng *rng, u32 offset) in rk_rng_readl() argument
130 return readl(rng->base + offset); in rk_rng_readl()
146 static int rk3568_rng_init(struct hwrng *rng) in rk3568_rng_init() argument
148 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk3568_rng_init()
167 static void rk3568_rng_cleanup(struct hwrng *rng) in rk3568_rng_cleanup() argument
169 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk3568_rng_cleanup()
178 static int rk3568_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in rk3568_rng_read() argument
180 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk3568_rng_read()
208 static int rk3588_rng_init(struct hwrng *rng) in rk3588_rng_init() argument
210 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk3588_rng_init()
253 static void rk3588_rng_cleanup(struct hwrng *rng) in rk3588_rng_cleanup() argument
255 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk3588_rng_cleanup()
260 static int rk3588_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in rk3588_rng_read() argument
262 struct rk_rng *rk_rng = container_of(rng, struct rk_rng, rng); in rk3588_rng_read()
353 rk_rng->rng.name = dev_driver_string(dev); in rk_rng_probe()
355 rk_rng->rng.init = rk_rng->soc_data->rk_rng_init; in rk_rng_probe()
356 rk_rng->rng.cleanup = rk_rng->soc_data->rk_rng_cleanup; in rk_rng_probe()
358 rk_rng->rng.read = rk_rng->soc_data->rk_rng_read; in rk_rng_probe()
360 rk_rng->rng.quality = rk_rng->soc_data->quality; in rk_rng_probe()
368 ret = devm_hwrng_register(dev, &rk_rng->rng); in rk_rng_probe()
379 rk_rng->soc_data->rk_rng_cleanup(&rk_rng->rng); in rk_rng_runtime_suspend()
388 return rk_rng->soc_data->rk_rng_init(&rk_rng->rng); in rk_rng_runtime_resume()
399 { .compatible = "rockchip,rk3568-rng", .data = (void *)&rk3568_soc_data },
400 { .compatible = "rockchip,rk3588-rng", .data = (void *)&rk3588_soc_data },
408 .name = "rockchip-rng",