diff --git a/plat/arm/board/tc/platform.mk b/plat/arm/board/tc/platform.mk index 8b15a6f23..21d712221 100644 --- a/plat/arm/board/tc/platform.mk +++ b/plat/arm/board/tc/platform.mk @@ -248,7 +248,8 @@ include drivers/arm/rse/rse_comms.mk BL1_SOURCES += ${RSE_COMMS_SOURCES} BL2_SOURCES += ${RSE_COMMS_SOURCES} -BL31_SOURCES += ${RSE_COMMS_SOURCES} +BL31_SOURCES += ${RSE_COMMS_SOURCES} \ + lib/psa/rse_platform.c # Include Measured Boot makefile before any Crypto library makefile. # Crypto library makefile may need default definitions of Measured Boot build diff --git a/plat/arm/board/tc/tc_trng.c b/plat/arm/board/tc/tc_trng.c index e5ec48a1a..793a90fbc 100644 --- a/plat/arm/board/tc/tc_trng.c +++ b/plat/arm/board/tc/tc_trng.c @@ -11,6 +11,7 @@ #include <string.h> #include <lib/mmio.h> +#include <lib/psa/rse_platform_api.h> #include <lib/smccc.h> #include <lib/utils_def.h> #include <plat/common/platform.h> @@ -24,20 +25,33 @@ DEFINE_SVC_UUID2(_plat_trng_uuid, ); uuid_t plat_trng_uuid; -/* Dummy implementation */ bool plat_get_entropy(uint64_t *out) { +#if CRYPTO_SUPPORT + psa_status_t status; + + status = rse_platform_get_entropy((uint8_t *)out, sizeof(*out)); + if (status != PSA_SUCCESS) { + printf("Failed for entropy read, psa_status=%d\n", status); + return false; + } +#else + /* Dummy value */ *out = 0xABBAEDDAACDCDEAD; +#endif return true; } void plat_entropy_setup(void) { - uint64_t dummy; + uint64_t entropy; plat_trng_uuid = _plat_trng_uuid; /* Initialise the entropy source and trigger RNG generation */ - plat_get_entropy(&dummy); + if (!plat_get_entropy(&entropy)) { + ERROR("Failed to setup entropy\n"); + panic(); + } }