]> git.dujemihanovic.xyz Git - u-boot.git/commit
rng: Add Exynos TRNG driver
authorSam Protsenko <semen.protsenko@linaro.org>
Tue, 23 Jul 2024 18:14:38 +0000 (13:14 -0500)
committerMinkyu Kang <mk7.kang@samsung.com>
Wed, 24 Jul 2024 07:37:09 +0000 (16:37 +0900)
commit9344efc9bb7a28a1aca395d2762ca2d5dc128405
tree5d8daf925f3b9147b38f2cc300327d8fcbd09c93
parent95d8937d7ceb191b99ed755998c42c9fbd263c82
rng: Add Exynos TRNG driver

Add True Random Number Generator (TRNG) driver for Exynos chips. This
implementation is heavily based on Linux kernel's counterpart [1]. It
also follows upstream dt-bindings [2].

TRNG block is usually a part of SSS (Security Sub System) IP-core on
Exynos chips. Because SSS access on Exynos850 is protected by TZPC
(TrustZone Protection Control), it's not possible to read/write TRNG
registers from U-Boot, as it's running in EL1 mode. Instead, the
corresponding SMC calls should be used to make the secure software
running in EL3 mode access it for us. Those SMC calls are handled by
LDFW (Loadable Firmware), which has to be loaded first. For example, for
E850-96 board it's done in its board_init(), so by the time RNG
capabilities are needed the LDFW should be already loaded and TRNG
should be functional.

[1] drivers/char/hw_random/exynos-trng.c
[2] dts/upstream/Bindings/rng/samsung,exynos5250-trng.yaml

Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
Signed-off-by: Minkyu Kang <mk7.kang@samsung.com>
drivers/rng/Kconfig
drivers/rng/Makefile
drivers/rng/exynos-trng.c [new file with mode: 0644]