Add a random number generator(rng) uclass to facilitate adding drivers
for rng devices. I plan to add an implementation of the
EFI_RNG_PROTOCOL, which would get the random number from the rng
uclass -- the protocol would be used by the efi stub for getting a
random number for the kaslr feature.

The patch series also adds a driver for the rng device found on the
stm32mp1 and qemu platforms. A dummy rng driver for sandbox has also
been added, along with the unit test for the rng uclass.

Changes since V7:
* Set the length to min(len, sizeof(buf)) to avoid a buffer overrun.

Changes since V6:
* Handle review comments from Heinrich Schuchardt to handle the
  scenario of data buffer being passed to the virtio rng driver not
  being aligned on 4 bytes.
* Handle review comment by Simon Glass to only keep a forward
  declaration of struct udevice in rng.h.

Changes since V5:
* Handle review comments from Heinrich Schuchardt to read all the
  bytes requested in the individual drivers.

Changes since V4:
* Get the read functions of individual drivers to return number of
  bytes read on successful read, and a -ve value on error.
* Handle review comments from Heinrich Schuchardt.

Changes since V3:
* Handle review comments from Patrick Delaunay

Changes since V2:
* Add a driver for the virtio-rng device on qemu platform

Changes since V1:
* Add a SPDX header in rng.h
* Change the UCLASS_DRIVER name from hwrng to rng, consistent with the
  rest of the naming convention
* Handle review comment from Patrice Chotard


Sughosh Ganu (8):
  dm: rng: Add random number generator(rng) uclass
  clk: stm32mp1: Add a clock entry for RNG1 device
  stm32mp1: rng: Add a driver for random number generator(rng) device
  configs: stm32mp15: Enable random number generator(rng) device
  sandbox: rng: Add a random number generator(rng) driver
  configs: sandbox: Enable random number generator(rng) device
  test: rng: Add basic test for random number generator(rng) uclass
  virtio: rng: Add a random number generator(rng) driver

 arch/sandbox/dts/test.dts           |   4 +
 configs/sandbox64_defconfig         |   2 +
 configs/sandbox_defconfig           |   2 +
 configs/stm32mp15_basic_defconfig   |   2 +
 configs/stm32mp15_optee_defconfig   |   2 +
 configs/stm32mp15_trusted_defconfig |   2 +
 drivers/Kconfig                     |   2 +
 drivers/Makefile                    |   1 +
 drivers/clk/clk_stm32mp1.c          |   1 +
 drivers/rng/Kconfig                 |  22 +++++
 drivers/rng/Makefile                |   8 ++
 drivers/rng/rng-uclass.c            |  23 ++++++
 drivers/rng/sandbox_rng.c           |  56 +++++++++++++
 drivers/rng/stm32mp1_rng.c          | 161 ++++++++++++++++++++++++++++++++++++
 drivers/virtio/Kconfig              |   6 ++
 drivers/virtio/Makefile             |   1 +
 drivers/virtio/virtio-uclass.c      |   1 +
 drivers/virtio/virtio_rng.c         |  88 ++++++++++++++++++++
 include/dm/uclass-id.h              |   1 +
 include/rng.h                       |  33 ++++++++
 include/virtio.h                    |   4 +-
 test/dm/Makefile                    |   1 +
 test/dm/rng.c                       |  26 ++++++
 23 files changed, 448 insertions(+), 1 deletion(-)
 create mode 100644 drivers/rng/Kconfig
 create mode 100644 drivers/rng/Makefile
 create mode 100644 drivers/rng/rng-uclass.c
 create mode 100644 drivers/rng/sandbox_rng.c
 create mode 100644 drivers/rng/stm32mp1_rng.c
 create mode 100644 drivers/virtio/virtio_rng.c
 create mode 100644 include/rng.h
 create mode 100644 test/dm/rng.c

-- 
2.7.4

Reply via email to