arm64: zynqmp: Enable rng-seed generation

SOM has TPM with RNG in it that's why enable rng-seed generation.

Acked-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/0e55eb3eade94e9cd0ffe04da0618aa6b1589f01.1751442246.git.michal.simek@amd.com
This commit is contained in:
Michal Simek
2025-07-02 09:44:08 +02:00
parent cd91235070
commit 229ec06353
2 changed files with 33 additions and 1 deletions

View File

@@ -1,7 +1,7 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2014 - 2022, Xilinx, Inc.
* (C) Copyright 2022 - 2023, Advanced Micro Devices, Inc.
* (C) Copyright 2022 - 2025, Advanced Micro Devices, Inc.
*
* Michal Simek <michal.simek@amd.com>
*/
@@ -712,3 +712,34 @@ phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
}
#endif
#if IS_ENABLED(CONFIG_BOARD_RNG_SEED)
/* Use hardware rng to seed Linux random. */
__weak int board_rng_seed(struct abuf *buf)
{
struct udevice *dev;
ulong len = 64;
u64 *data;
if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
printf("No RNG device\n");
return -ENODEV;
}
data = malloc(len);
if (!data) {
printf("Out of memory\n");
return -ENOMEM;
}
if (dm_rng_read(dev, data, len)) {
printf("Reading RNG failed\n");
free(data);
return -EIO;
}
abuf_init_set(buf, data, len);
return 0;
}
#endif

View File

@@ -46,6 +46,7 @@ CONFIG_USE_PREBOOT=y
CONFIG_SYS_PBSIZE=2073
CONFIG_BOARD_EARLY_INIT_R=y
CONFIG_CLOCKS=y
CONFIG_BOARD_RNG_SEED=y
CONFIG_SPL_MAX_SIZE=0x40000
# CONFIG_SPL_BINMAN_SYMBOLS is not set
# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set