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
11struct 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 */
23int 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 */
31struct 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