/* * Copyright 2022 NXP * * SPDX-License-Identifier: Apache-2.0 */ #define DT_DRV_COMPAT nxp_css_v2 #include "mcuxClCss_Rng.h" #include #include #include #include static int entropy_mcux_css_get_entropy(const struct device *dev, uint8_t *buffer, uint16_t length) { ARG_UNUSED(dev); uint8_t status = 0; MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_Prng_GetRandom(buffer, length)); if ((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_Prng_GetRandom) != token) || (result != MCUXCLCSS_STATUS_OK)) { status = -EAGAIN; } MCUX_CSSL_FP_FUNCTION_CALL_END(); __ASSERT_NO_MSG(!status); return status; } static const struct entropy_driver_api entropy_mcux_css_api_funcs = { .get_entropy = entropy_mcux_css_get_entropy }; static int entropy_mcux_css_init(const struct device *dev) { ARG_UNUSED(dev); uint8_t status = 0; MCUX_CSSL_FP_FUNCTION_CALL_BEGIN(result, token, mcuxClCss_Enable_Async()); if ((MCUX_CSSL_FP_FUNCTION_CALLED(mcuxClCss_Enable_Async) != token) || (result != MCUXCLCSS_STATUS_OK_WAIT)) { status = -ENODEV; } MCUX_CSSL_FP_FUNCTION_CALL_END(); __ASSERT_NO_MSG(!status); return status; } DEVICE_DT_INST_DEFINE(0, entropy_mcux_css_init, NULL, NULL, NULL, PRE_KERNEL_1, CONFIG_ENTROPY_INIT_PRIORITY, &entropy_mcux_css_api_funcs);