1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (c) 2019, Linaro Limited
4  */
5 
6 #if !defined _RNG_H_
7 #define _RNG_H_
8 
9 #include <linux/types.h>
10 
11 struct udevice;
12 
13 /**
14  * dm_rng_read() - read a random number seed from the rng device
15  *
16  * The function blocks until the requested number of bytes is read.
17  *
18  * @dev:	random number generator device
19  * @buffer:	input buffer to put the read random seed into
20  * @size:	number of random bytes to read
21  * Return:	0 if OK, -ve on error
22  */
23 int dm_rng_read(struct udevice *dev, void *buffer, size_t size);
24 
25 /**
26  * struct dm_rng_ops - operations for the hwrng uclass
27  *
28  * This structures contains the function implemented by a hardware random
29  * number generation device.
30  */
31 struct dm_rng_ops {
32 	/**
33 	 * @read:	read a random bytes
34 	 *
35 	 * The function blocks until the requested number of bytes is read.
36 	 *
37 	 * @read.dev:		random number generator device
38 	 * @read.data:		input buffer to read the random seed into
39 	 * @read.max:		number of random bytes to read
40 	 * @read.Return:	0 if OK, -ve on error
41 	 */
42 	int (*read)(struct udevice *dev, void *data, size_t max);
43 };
44 
45 #endif /* _RNG_H_ */
46