Lines Matching refs:stm32_rng

100 static struct stm32_rng_instance *stm32_rng;  variable
104 assert(stm32_rng); in get_base()
106 return io_pa_or_va(&stm32_rng->base, 1); in get_base()
129 struct stm32_rng_instance *dev = stm32_rng; in conceal_seed_error_cond_reset()
209 if (stm32_rng->ddata->has_cond_reset) in conceal_seed_error()
217 struct stm32_rng_instance *dev = stm32_rng; in read_available()
266 struct stm32_rng_instance *dev = stm32_rng; in stm32_rng_clock_freq_restrain()
287 TEE_Result res = clk_enable(stm32_rng->clock); in enable_rng_clock()
289 if (!res && stm32_rng->bus_clock) { in enable_rng_clock()
290 res = clk_enable(stm32_rng->bus_clock); in enable_rng_clock()
292 clk_disable(stm32_rng->clock); in enable_rng_clock()
300 clk_disable(stm32_rng->clock); in disable_rng_clock()
301 if (stm32_rng->bus_clock) in disable_rng_clock()
302 clk_disable(stm32_rng->bus_clock); in disable_rng_clock()
316 if (stm32_rng->rstctrl && in stm32_rng_init()
317 rstctrl_assert_to(stm32_rng->rstctrl, RNG_RESET_TIMEOUT_US)) { in stm32_rng_init()
322 if (stm32_rng->rstctrl && in stm32_rng_init()
323 rstctrl_deassert_to(stm32_rng->rstctrl, RNG_RESET_TIMEOUT_US)) { in stm32_rng_init()
328 if (!stm32_rng->clock_error) in stm32_rng_init()
334 if (stm32_rng->ddata->has_cond_reset) { in stm32_rng_init()
341 if (!stm32_rng->rng_config) in stm32_rng_init()
342 stm32_rng->rng_config = io_read32(rng_base + RNG_CR) & in stm32_rng_init()
352 stm32_rng->rng_config | RNG_CR_CONDRST | in stm32_rng_init()
360 if (stm32_rng->noise_ctrl_conf) in stm32_rng_init()
362 stm32_rng->noise_ctrl_conf); in stm32_rng_init()
364 if (stm32_rng->health_test_conf) in stm32_rng_init()
366 stm32_rng->health_test_conf); in stm32_rng_init()
409 if (!stm32_rng) { in stm32_rng_read()
428 exceptions = may_spin_lock(&stm32_rng->lock); in stm32_rng_read()
437 may_spin_unlock(&stm32_rng->lock, exceptions); in stm32_rng_read()
466 if (!stm32_rng) { in plat_rng_init()
498 if (stm32_rng->ddata->has_cond_reset) { in stm32_rng_pm_resume()
507 io_write32(base + RNG_CR, stm32_rng->pm_cr | RNG_CR_CONDRST); in stm32_rng_pm_resume()
510 io_write32(base + RNG_NSCR, stm32_rng->pm_noise_ctrl); in stm32_rng_pm_resume()
511 io_write32(base + RNG_HTCR, stm32_rng->pm_health); in stm32_rng_pm_resume()
522 io_write32(base + RNG_CR, RNG_CR_RNGEN | stm32_rng->pm_cr); in stm32_rng_pm_resume()
532 stm32_rng->pm_cr = io_read32(rng_base + RNG_CR); in stm32_rng_pm_suspend()
534 if (stm32_rng->ddata->has_cond_reset) { in stm32_rng_pm_suspend()
535 stm32_rng->pm_health = io_read32(rng_base + RNG_HTCR); in stm32_rng_pm_suspend()
536 stm32_rng->pm_noise_ctrl = io_read32(rng_base + RNG_NSCR); in stm32_rng_pm_suspend()
539 if (stm32_rng->ddata->has_power_optim) { in stm32_rng_pm_suspend()
569 assert(stm32_rng && (op == PM_OP_SUSPEND || op == PM_OP_RESUME)); in stm32_rng_pm()
595 stm32_rng->base.pa = dt_rng.reg; in stm32_rng_parse_fdt()
596 stm32_rng->base.va = io_pa_or_va_secure(&stm32_rng->base, in stm32_rng_parse_fdt()
598 assert(stm32_rng->base.va); in stm32_rng_parse_fdt()
600 res = rstctrl_dt_get_by_index(fdt, node, 0, &stm32_rng->rstctrl); in stm32_rng_parse_fdt()
604 if (stm32_rng->ddata->nb_clock > 1) { in stm32_rng_parse_fdt()
606 &stm32_rng->clock); in stm32_rng_parse_fdt()
611 &stm32_rng->bus_clock); in stm32_rng_parse_fdt()
615 res = clk_dt_get_by_index(fdt, node, 0, &stm32_rng->clock); in stm32_rng_parse_fdt()
621 stm32_rng->clock_error = true; in stm32_rng_parse_fdt()
623 stm32_rng->rng_config = stm32_rng->ddata->cr; in stm32_rng_parse_fdt()
624 if (stm32_rng->rng_config & ~RNG_CR_ENTROPY_SRC_MASK) in stm32_rng_parse_fdt()
626 stm32_rng->health_test_conf = stm32_rng->ddata->htcr; in stm32_rng_parse_fdt()
627 stm32_rng->noise_ctrl_conf = stm32_rng->ddata->nscr; in stm32_rng_parse_fdt()
628 if (stm32_rng->noise_ctrl_conf & ~RNG_NSCR_MASK) in stm32_rng_parse_fdt()
641 assert(!stm32_rng); in stm32_rng_probe()
643 stm32_rng = calloc(1, sizeof(*stm32_rng)); in stm32_rng_probe()
644 if (!stm32_rng) in stm32_rng_probe()
647 stm32_rng->ddata = compat_data; in stm32_rng_probe()
648 assert(stm32_rng->ddata); in stm32_rng_probe()
670 assert(stm32_rng->ddata->has_power_optim == in stm32_rng_probe()
671 stm32_rng->ddata->has_cond_reset); in stm32_rng_probe()
674 register_pm_core_service_cb(stm32_rng_pm, &stm32_rng, in stm32_rng_probe()
680 free(stm32_rng); in stm32_rng_probe()
681 stm32_rng = NULL; in stm32_rng_probe()
735 if (stm32_rng && IS_ENABLED(CFG_WITH_SOFTWARE_PRNG)) { in stm32_rng_release()
737 free(stm32_rng); in stm32_rng_release()
738 stm32_rng = NULL; in stm32_rng_release()