xref: /OK3568_Linux_fs/u-boot/drivers/rng/rockchip_rand.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2021 Rockchip Electronics Co., Ltd
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * SPDX-License-Identifier:     GPL-2.0+
5*4882a593Smuzhiyun  */
6*4882a593Smuzhiyun #include <common.h>
7*4882a593Smuzhiyun #include <dm.h>
8*4882a593Smuzhiyun #include <rng.h>
9*4882a593Smuzhiyun 
rand_r(unsigned int * seedp)10*4882a593Smuzhiyun unsigned int rand_r(unsigned int *seedp)
11*4882a593Smuzhiyun {
12*4882a593Smuzhiyun 	struct udevice *dev;
13*4882a593Smuzhiyun 	unsigned int rand;
14*4882a593Smuzhiyun 	int ret;
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun 	ret = uclass_get_device(UCLASS_RNG, 0, &dev);
17*4882a593Smuzhiyun 	if (ret) {
18*4882a593Smuzhiyun 		printf("No RNG device, ret=%d\n", ret);
19*4882a593Smuzhiyun 		return ret;
20*4882a593Smuzhiyun 	}
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun 	ret = dm_rng_read(dev, &rand, sizeof(unsigned int));
23*4882a593Smuzhiyun 	if (ret) {
24*4882a593Smuzhiyun 		printf("Reading RNG failed, ret=%d\n", ret);
25*4882a593Smuzhiyun 		return ret;
26*4882a593Smuzhiyun 	}
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun 	return rand;
29*4882a593Smuzhiyun }
30*4882a593Smuzhiyun 
rand(void)31*4882a593Smuzhiyun unsigned int rand(void)
32*4882a593Smuzhiyun {
33*4882a593Smuzhiyun 	return rand_r(0);
34*4882a593Smuzhiyun }
35*4882a593Smuzhiyun 
srand(unsigned int seed)36*4882a593Smuzhiyun void srand(unsigned int seed)
37*4882a593Smuzhiyun {
38*4882a593Smuzhiyun 	/* nothing to do */
39*4882a593Smuzhiyun }
40*4882a593Smuzhiyun 
41