/*
 * Copyright (c) 2021 Telink Semiconductor
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#define DT_DRV_COMPAT telink_b91_trng

#include <trng.h>
#include <drivers/entropy.h>
#include <string.h>


/* API implementation: driver initialization */
static int entropy_b91_trng_init(const struct device *dev)
{
	ARG_UNUSED(dev);

	trng_init();

	return 0;
}

/* API implementation: get_entropy */
static int entropy_b91_trng_get_entropy(const struct device *dev,
					uint8_t *buffer, uint16_t length)
{
	ARG_UNUSED(dev);

	uint32_t value = 0;

	while (length) {
		value = trng_rand();

		if (length >= sizeof(value)) {
			memcpy(buffer, &value, sizeof(value));
			buffer += sizeof(value);
			length -= sizeof(value);
		} else {
			memcpy(buffer, &value, length);
			break;
		}
	}

	return 0;
}

/* API implementation: get_entropy_isr */
static int entropy_b91_trng_get_entropy_isr(const struct device *dev,
					    uint8_t *buffer, uint16_t length,
					    uint32_t flags)
{
	ARG_UNUSED(flags);

	/* No specific handling in case of running from ISR, just call standard API */
	entropy_b91_trng_get_entropy(dev, buffer, length);

	return 0;
}

/* Entropy driver APIs structure */
static const struct entropy_driver_api entropy_b91_trng_api = {
	.get_entropy = entropy_b91_trng_get_entropy,
	.get_entropy_isr = entropy_b91_trng_get_entropy_isr
};

/* Entropy driver registration */
DEVICE_DT_INST_DEFINE(0, entropy_b91_trng_init,
		      NULL, NULL, NULL,
		      PRE_KERNEL_1, CONFIG_ENTROPY_INIT_PRIORITY,
		      &entropy_b91_trng_api);
