[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Y8Bco7lBBj7CO9C5@spud>
Date: Thu, 12 Jan 2023 19:16:51 +0000
From: Conor Dooley <conor@...nel.org>
To: Jia Jie Ho <jiajie.ho@...rfivetech.com>
Cc: Olivia Mackall <olivia@...enic.com>,
Herbert Xu <herbert@...dor.apana.org.au>,
Rob Herring <robh+dt@...nel.org>,
Krzysztof Kozlowski <krzysztof.kozlowski+dt@...aro.org>,
Emil Renner Berthing <kernel@...il.dk>,
Conor Dooley <conor.dooley@...rochip.com>,
linux-crypto@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-riscv@...ts.infradead.org
Subject: Re: [PATCH v4 2/3] hwrng: starfive - Add TRNG driver for StarFive SoC
On Thu, Jan 12, 2023 at 12:38:11PM +0800, Jia Jie Ho wrote:
> This adds driver support for the hardware random number generator in
> Starfive SoCs and adds StarFive TRNG entry to MAINTAINERS.
>
> Co-developed-by: Jenny Zhang <jenny.zhang@...rfivetech.com>
> Signed-off-by: Jenny Zhang <jenny.zhang@...rfivetech.com>
> Signed-off-by: Jia Jie Ho <jiajie.ho@...rfivetech.com>
> ---
> MAINTAINERS | 6 +
> drivers/char/hw_random/Kconfig | 11 +
> drivers/char/hw_random/Makefile | 1 +
> drivers/char/hw_random/starfive-trng.c | 397 +++++++++++++++++++++++++
> 4 files changed, 415 insertions(+)
> create mode 100644 drivers/char/hw_random/starfive-trng.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 65140500d9f8..b91e3fc11fc6 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -19626,6 +19626,12 @@ F: drivers/reset/reset-starfive.c
> F: include/linux/reset/starfive.h
> F: include/dt-bindings/reset/starfive*
>
> +STARFIVE TRNG DRIVER
> +M: Jia Jie Ho <jiajie.ho@...rfivetech.com>
> +S: Maintained
> +F: Documentation/devicetree/bindings/rng/starfive*
> +F: drivers/char/hw_random/starfive-trng.c
minor nit (so don't submit another version just to fix this):
This should be Supported, no?
> diff --git a/drivers/char/hw_random/Makefile b/drivers/char/hw_random/Makefile
> index 3e948cf04476..f68ac370847f 100644
> --- a/drivers/char/hw_random/Makefile
> +++ b/drivers/char/hw_random/Makefile
> @@ -47,3 +47,4 @@ obj-$(CONFIG_HW_RANDOM_XIPHERA) += xiphera-trng.o
> obj-$(CONFIG_HW_RANDOM_ARM_SMCCC_TRNG) += arm_smccc_trng.o
> obj-$(CONFIG_HW_RANDOM_CN10K) += cn10k-rng.o
> obj-$(CONFIG_HW_RANDOM_POLARFIRE_SOC) += mpfs-rng.o
> +obj-$(CONFIG_HW_RANDOM_STARFIVE) += starfive-trng.o
Is "STARFIVE" a bit too general of a name here and in the Kconfig entry?
I don't have a TRM for the JH7100, but this name (and the Kconfig text)
would give me the impression that I can use it there too.
Does this driver support both?
> +static int starfive_trng_probe(struct platform_device *pdev)
> + clk_prepare_enable(trng->hclk);
> + clk_prepare_enable(trng->ahb);
> + reset_control_deassert(trng->rst);
> +
> + trng->rng.name = dev_driver_string(&pdev->dev);
> + trng->rng.init = starfive_trng_init;
> + trng->rng.cleanup = starfive_trng_cleanup;
> + trng->rng.read = starfive_trng_read;
> +
> + trng->mode = PRNG_256BIT;
> + trng->mission = 1;
> + trng->reseed = RANDOM_RESEED;
> +
> + ret = devm_hwrng_register(&pdev->dev, &trng->rng);
> + if (ret) {
> + dev_err_probe(&pdev->dev, ret, "Failed to register hwrng\n");
> + goto err_fail_register;
> + }
> +
> + pm_runtime_use_autosuspend(&pdev->dev);
> + pm_runtime_set_autosuspend_delay(&pdev->dev, 100);
> + pm_runtime_enable(&pdev->dev);
> +
> + return 0;
> +
> +err_fail_register:
> + pm_runtime_disable(&pdev->dev);
This was only enabled after the only goto for this label, does it
serve a purpose?
I know little about runtime PM, it just caught my eye.
I looked at the other rng drivers that had calls to pm_runtime_enable(),
but they all seem to do their pm enablement _before_ calling
hwrng_register().
Again, I am not familiar with runtime PM, but curious why you are doing
things differently, that's all.
> +
> + reset_control_assert(trng->rst);
> + clk_disable_unprepare(trng->ahb);
> + clk_disable_unprepare(trng->hclk);
> +
> + return ret;
> +}
Thanks,
Conor.
Download attachment "signature.asc" of type "application/pgp-signature" (229 bytes)
Powered by blists - more mailing lists