# nRF5 entropy generator driver configuration

# Copyright (c) 2018 Nordic Semiconductor ASA
# Copyright (c) 2017 Exati Tecnologia Ltda.
# SPDX-License-Identifier: Apache-2.0

config ENTROPY_NRF_FORCE_ALT
	bool
	depends on SOC_COMPATIBLE_NRF
	help
	  This option can be enabled to force an alternative implementation
	  of the entropy driver.

if !ENTROPY_NRF_FORCE_ALT

menuconfig ENTROPY_NRF5_RNG
	bool "nRF5 RNG driver"
	depends on HAS_HW_NRF_RNG
	select ENTROPY_HAS_DRIVER
	default y
	help
	  This option enables the RNG peripheral, which is a random number
	  generator, based on internal thermal noise, that provides a
	  random 8-bit value to the host when read.

if ENTROPY_NRF5_RNG

config ENTROPY_NRF5_BIAS_CORRECTION
	bool "Enable bias correction (uniform distribution)"
	help
	  This option enables the RNG bias correction, which guarantees a
	  uniform distribution of 0 and 1. When this option is enabled, the time
	  to generate a byte cannot be guaranteed.

config ENTROPY_NRF5_THR_POOL_SIZE
	int "Thread-mode random number pool size"
	range ENTROPY_NRF5_THR_THRESHOLD 256
	default 8
	help
	  Buffer length in bytes used to store entropy bytes generated by the
	  hardware to make them ready for thread mode consumers.
	  Please note, that size of the pool must be a power of 2.

config ENTROPY_NRF5_THR_THRESHOLD
	int "Thread-mode random number pool low-water threshold"
	range 4 255
	help
	  Low water-mark threshold in bytes to trigger entropy generation for
	  thread mode consumers. As soon as the number of available bytes in the
	  buffer goes below this number hardware entropy generation will be
	  started.

config ENTROPY_NRF5_ISR_POOL_SIZE
	int "ISR-mode random number pool size"
	range ENTROPY_NRF5_ISR_THRESHOLD 256
	default 16
	help
	  Buffer length in bytes used to store entropy bytes generated by the
	  hardware to make them ready for ISR consumers.
	  Please note, that size of the pool must be a power of 2.

config ENTROPY_NRF5_ISR_THRESHOLD
	int "ISR-mode random number pool low-water threshold"
	range 12 255
	help
	  Low water-mark threshold in bytes to trigger entropy generation for
	  ISR consumers. As soon as the number of available bytes in the
	  buffer goes below this number hardware entropy generation will be
	  started.

config ENTROPY_NRF5_PRI
	int "RNG interrupt priority"
	range 0 2 if SOC_SERIES_NRF51X
	range 0 5 if SOC_COMPATIBLE_NRF52X
	default 2 if SOC_SERIES_NRF51X
	default 5 if SOC_COMPATIBLE_NRF52X
	help
	  nRF5X RNG IRQ priority.

endif # ENTROPY_NRF5_RNG

endif # !ENTROPY_NRF_FORCE_ALT
