mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 11:24:42 +00:00
rockchip: board: Add board_rng_seed() for all Rockchip devices
Allow all rockchip devices to use the hardware RNG to seed Linux RNG. Signed-off-by: Chris Morgan <macromorgan@hotmail.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
This commit is contained in:
parent
4913ce37c4
commit
d2048bafae
2 changed files with 32 additions and 29 deletions
|
@ -320,3 +320,35 @@ __weak int misc_init_r(void)
|
|||
return ret;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if IS_ENABLED(CONFIG_BOARD_RNG_SEED) && IS_ENABLED(CONFIG_RNG_ROCKCHIP)
|
||||
#include <rng.h>
|
||||
|
||||
/* Use hardware rng to seed Linux random. */
|
||||
__weak int board_rng_seed(struct abuf *buf)
|
||||
{
|
||||
struct udevice *dev;
|
||||
size_t len = 0x8;
|
||||
u64 *data;
|
||||
|
||||
data = malloc(len);
|
||||
if (!data) {
|
||||
printf("Out of memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
|
||||
printf("No RNG device\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (dm_rng_read(dev, data, len)) {
|
||||
printf("Reading RNG failed\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
abuf_init_set(buf, data, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -16,7 +16,6 @@
|
|||
#include <mmc.h>
|
||||
#include <panel.h>
|
||||
#include <pwm.h>
|
||||
#include <rng.h>
|
||||
#include <stdlib.h>
|
||||
#include <video_bridge.h>
|
||||
|
||||
|
@ -133,34 +132,6 @@ void spl_board_init(void)
|
|||
(GPIO0_BASE + GPIO_SWPORT_DR_H));
|
||||
}
|
||||
|
||||
/* Use hardware rng to seed Linux random. */
|
||||
int board_rng_seed(struct abuf *buf)
|
||||
{
|
||||
struct udevice *dev;
|
||||
size_t len = 0x8;
|
||||
u64 *data;
|
||||
|
||||
data = malloc(len);
|
||||
if (!data) {
|
||||
printf("Out of memory\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) {
|
||||
printf("No RNG device\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (dm_rng_read(dev, data, len)) {
|
||||
printf("Reading RNG failed\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
abuf_init_set(buf, data, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Buzz the buzzer so the user knows something is going on. Make it
|
||||
* optional in case PWM is disabled.
|
||||
|
|
Loading…
Add table
Reference in a new issue