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:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user