# Smartbond TRNG configuration

# Copyright (c) 2023 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0


config ENTROPY_SMARTBOND_TRNG
	bool "Renesas Smartbond MCU Family True Random Number Generator (TRNG) Driver"
	default y
	depends on DT_HAS_RENESAS_SMARTBOND_TRNG_ENABLED
	select ENTROPY_HAS_DRIVER
	help
	  Enable True Random Number Generator (TRNG) driver for Renesas Smartbond MCUs.

if ENTROPY_SMARTBOND_TRNG

config ENTROPY_SMARTBOND_THR_POOL_SIZE
	int "Thread-mode random number pool size"
	range ENTROPY_SMARTBOND_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_SMARTBOND_THR_THRESHOLD
	int "Thread-mode random number pool low-water threshold"
	range 4 $(UINT8_MAX)
	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_SMARTBOND_ISR_POOL_SIZE
	int "ISR-mode random number pool size"
	range ENTROPY_SMARTBOND_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_SMARTBOND_ISR_THRESHOLD
	int "ISR-mode random number pool low-water threshold"
	range 12 $(UINT8_MAX)
	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.

endif # ENTROPY_SMARTBOND_TRNG
