[PATCH 1/1] rng: fix ARMv8.5 RNDR driver
Andre Przywara
andre.przywara at arm.com
Sat Nov 4 18:13:16 CET 2023
On Sat, 4 Nov 2023 09:00:07 +0200
Heinrich Schuchardt <heinrich.schuchardt at canonical.com> wrote:
Hi Heinrich,
many thanks for finding and fixing this!
> In different parts of our code we assume that the first RNG device is the
> one to be used. Therefore it is preferable to detect the availability of
> the RNDR register already in the bind method.
>
> For signaling the non-existence of a device the driver model requires using
> ENOENT (and not ENODEV).
Doh, now I feel silly! I thought I checked the call path, and looked at
initcall_run_list(), which prints the error message, and suggests that
only 0 would be acceptable.
But indeed -ENOENT works, with the slight caveat of printing:
================
No match for driver 'arm-rndr'
Some drivers were not found
================
But it's definitely an improvement over the current situation, and I
don't feel like boiling the DM ocean for this stupid little driver.
> Fixes: 31565bb0aa2d ("driver: rng: Add DM_RNG interface for ARMv8.5 RNDR registers")
> Signed-off-by: Heinrich Schuchardt> <heinrich.schuchardt at canonical.com>
Reviewed-by: Andre Przywara <andre.przywara at arm.com>
Tested-by: Andre Przywara <andre.przywara at arm.com>
Many thanks!
Andre
---
> drivers/rng/arm_rndr.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/rng/arm_rndr.c b/drivers/rng/arm_rndr.c
> index 55989743ea..4512330e68 100644
> --- a/drivers/rng/arm_rndr.c
> +++ b/drivers/rng/arm_rndr.c
> @@ -62,10 +62,10 @@ static const struct dm_rng_ops arm_rndr_ops = {
> .read = arm_rndr_read,
> };
>
> -static int arm_rndr_probe(struct udevice *dev)
> +static int arm_rndr_bind(struct udevice *dev)
> {
> if (!cpu_has_rndr())
> - return -ENODEV;
> + return -ENOENT;
>
> return 0;
> }
> @@ -74,7 +74,7 @@ U_BOOT_DRIVER(arm_rndr) = {
> .name = DRIVER_NAME,
> .id = UCLASS_RNG,
> .ops = &arm_rndr_ops,
> - .probe = arm_rndr_probe,
> + .bind = arm_rndr_bind,
> };
>
> U_BOOT_DRVINFO(cpu_arm_rndr) = {
More information about the U-Boot
mailing list