2019-11-19 06:16:01

by Stephen Brennan

[permalink] [raw]
Subject: [PATCH v2 0/3] Raspberry Pi 4 HWRNG Support

This patch series enables support for the HWRNG included on the Raspberry
Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
tested this out on a Pi 4. Prior to this patch series, attempting to use
the hwrng gives:

$ head -c 2 /dev/hwrng
head: /dev/hwrng: Input/output error

After this series, the same command gives two random bytes.

Changes in v2:
- specify the correct size for the region in the dts, refactor bcm283x rng

---

Stefan Wahren (2):
dt-bindings: rng: add BCM2711 RNG compatible
hwrng: iproc-rng200: Add support for BCM2711

Stephen Brennan (1):
ARM: dts: bcm2711: Enable HWRNG support

.../devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
arch/arm/boot/dts/bcm2835.dtsi | 1 +
arch/arm/boot/dts/bcm2836.dtsi | 1 +
arch/arm/boot/dts/bcm2837.dtsi | 1 +
arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
arch/arm/boot/dts/bcm283x.dtsi | 6 ------
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/iproc-rng200.c | 1 +
9 files changed, 20 insertions(+), 10 deletions(-)
create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi

--
2.24.0




2019-11-19 06:16:43

by Stephen Brennan

[permalink] [raw]
Subject: [PATCH v2 2/3] hwrng: iproc-rng200: Add support for BCM2711

From: Stefan Wahren <[email protected]>

BCM2711 features a RNG200 hardware random number generator block.
So make the driver available.

Signed-off-by: Stefan Wahren <[email protected]>
Signed-off-by: Stephen Brennan <[email protected]>
---
drivers/char/hw_random/Kconfig | 2 +-
drivers/char/hw_random/iproc-rng200.c | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
index 7c7fecfa2fb2..77e848fca531 100644
--- a/drivers/char/hw_random/Kconfig
+++ b/drivers/char/hw_random/Kconfig
@@ -90,7 +90,7 @@ config HW_RANDOM_BCM2835

config HW_RANDOM_IPROC_RNG200
tristate "Broadcom iProc/STB RNG200 support"
- depends on ARCH_BCM_IPROC || ARCH_BRCMSTB
+ depends on ARCH_BCM_IPROC || ARCH_BCM2835 || ARCH_BRCMSTB
default HW_RANDOM
---help---
This driver provides kernel-side support for the RNG200
diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
index 899ff25f4f28..32d9fe61a225 100644
--- a/drivers/char/hw_random/iproc-rng200.c
+++ b/drivers/char/hw_random/iproc-rng200.c
@@ -213,6 +213,7 @@ static int iproc_rng200_probe(struct platform_device *pdev)
}

static const struct of_device_id iproc_rng200_of_match[] = {
+ { .compatible = "brcm,bcm2711-rng200", },
{ .compatible = "brcm,bcm7211-rng200", },
{ .compatible = "brcm,bcm7278-rng200", },
{ .compatible = "brcm,iproc-rng200", },
--
2.24.0



2019-11-19 06:17:04

by Stephen Brennan

[permalink] [raw]
Subject: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support

BCM2711 features a RNG200 hardware random number generator block, which is
different from the BCM283x from which it inherits. Move the rng block from
BCM283x into a separate common file, and update the rng declaration of
BCM2711.

Signed-off-by: Stephen Brennan <[email protected]>
---
arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
arch/arm/boot/dts/bcm2835.dtsi | 1 +
arch/arm/boot/dts/bcm2836.dtsi | 1 +
arch/arm/boot/dts/bcm2837.dtsi | 1 +
arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
arch/arm/boot/dts/bcm283x.dtsi | 6 ------
6 files changed, 17 insertions(+), 9 deletions(-)
create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi

diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
index ac83dac2e6ba..4975567e948e 100644
--- a/arch/arm/boot/dts/bcm2711.dtsi
+++ b/arch/arm/boot/dts/bcm2711.dtsi
@@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
};

rng@7e104000 {
+ compatible = "brcm,bcm2711-rng200";
+ reg = <0x7e104000 0x28>;
interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
-
- /* RNG is incompatible with brcm,bcm2835-rng */
- status = "disabled";
+ status = "okay";
};

uart2: serial@7e201400 {
diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
index 53bf4579cc22..f7b2f46e307d 100644
--- a/arch/arm/boot/dts/bcm2835.dtsi
+++ b/arch/arm/boot/dts/bcm2835.dtsi
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "bcm283x.dtsi"
+#include "bcm283x-common.dtsi"
#include "bcm2835-common.dtsi"

/ {
diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
index 82d6c4662ae4..a85374195796 100644
--- a/arch/arm/boot/dts/bcm2836.dtsi
+++ b/arch/arm/boot/dts/bcm2836.dtsi
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: GPL-2.0
#include "bcm283x.dtsi"
+#include "bcm283x-common.dtsi"
#include "bcm2835-common.dtsi"

/ {
diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
index 9e95fee78e19..045d78ffea08 100644
--- a/arch/arm/boot/dts/bcm2837.dtsi
+++ b/arch/arm/boot/dts/bcm2837.dtsi
@@ -1,4 +1,5 @@
#include "bcm283x.dtsi"
+#include "bcm283x-common.dtsi"
#include "bcm2835-common.dtsi"

/ {
diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi b/arch/arm/boot/dts/bcm283x-common.dtsi
new file mode 100644
index 000000000000..3c8834bee390
--- /dev/null
+++ b/arch/arm/boot/dts/bcm283x-common.dtsi
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0
+
+/ {
+ soc {
+ rng@7e104000 {
+ compatible = "brcm,bcm2835-rng";
+ reg = <0x7e104000 0x10>;
+ interrupts = <2 29>;
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 3caaa57eb6c8..5219339fc27c 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -84,12 +84,6 @@ clocks: cprman@7e101000 {
<&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
};

- rng@7e104000 {
- compatible = "brcm,bcm2835-rng";
- reg = <0x7e104000 0x10>;
- interrupts = <2 29>;
- };
-
mailbox: mailbox@7e00b880 {
compatible = "brcm,bcm2835-mbox";
reg = <0x7e00b880 0x40>;
--
2.24.0



2019-11-19 10:09:45

by Nicolas Saenz Julienne

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support

Hi Stephen, thanks for the follow-up.

On Mon, 2019-11-18 at 22:14 -0800, Stephen Brennan wrote:
> BCM2711 features a RNG200 hardware random number generator block, which is
> different from the BCM283x from which it inherits. Move the rng block from
> BCM283x into a separate common file, and update the rng declaration of
> BCM2711.
>
> Signed-off-by: Stephen Brennan <[email protected]>
> ---

It's petty in this case but you should add a list of changes here too.

> arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
> arch/arm/boot/dts/bcm2835.dtsi | 1 +
> arch/arm/boot/dts/bcm2836.dtsi | 1 +
> arch/arm/boot/dts/bcm2837.dtsi | 1 +
> arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
> arch/arm/boot/dts/bcm283x.dtsi | 6 ------
> 6 files changed, 17 insertions(+), 9 deletions(-)
> create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi
>
> diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
> index ac83dac2e6ba..4975567e948e 100644
> --- a/arch/arm/boot/dts/bcm2711.dtsi
> +++ b/arch/arm/boot/dts/bcm2711.dtsi
> @@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
> };
>
> rng@7e104000 {
> + compatible = "brcm,bcm2711-rng200";
> + reg = <0x7e104000 0x28>;
> interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> -
> - /* RNG is incompatible with brcm,bcm2835-rng */
> - status = "disabled";
> + status = "okay";
> };
>
> uart2: serial@7e201400 {
> diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
> index 53bf4579cc22..f7b2f46e307d 100644
> --- a/arch/arm/boot/dts/bcm2835.dtsi
> +++ b/arch/arm/boot/dts/bcm2835.dtsi
> @@ -1,5 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> #include "bcm283x.dtsi"
> +#include "bcm283x-common.dtsi"
> #include "bcm2835-common.dtsi"
>
> / {
> diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
> index 82d6c4662ae4..a85374195796 100644
> --- a/arch/arm/boot/dts/bcm2836.dtsi
> +++ b/arch/arm/boot/dts/bcm2836.dtsi
> @@ -1,5 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> #include "bcm283x.dtsi"
> +#include "bcm283x-common.dtsi"
> #include "bcm2835-common.dtsi"
>
> / {
> diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
> index 9e95fee78e19..045d78ffea08 100644
> --- a/arch/arm/boot/dts/bcm2837.dtsi
> +++ b/arch/arm/boot/dts/bcm2837.dtsi
> @@ -1,4 +1,5 @@
> #include "bcm283x.dtsi"
> +#include "bcm283x-common.dtsi"
> #include "bcm2835-common.dtsi"
>
> / {
> diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi
> b/arch/arm/boot/dts/bcm283x-common.dtsi
> new file mode 100644
> index 000000000000..3c8834bee390
> --- /dev/null
> +++ b/arch/arm/boot/dts/bcm283x-common.dtsi
> @@ -0,0 +1,11 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +/ {
> + soc {
> + rng@7e104000 {
> + compatible = "brcm,bcm2835-rng";
> + reg = <0x7e104000 0x10>;
> + interrupts = <2 29>;
> + };
> + };
> +};

I think Stefan wrote bcm283x-common.dtsi by mistake, he really meant
bcm2835-common.dtsi.

See bcm2835-common.dtsi's header comment:

/* This include file covers the common peripherals and configuration between
* bcm2835, bcm2836 and bcm2837 implementations.
*/

Regards,
Nicolas


Attachments:
signature.asc (499.00 B)
This is a digitally signed message part

2019-11-19 11:16:00

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support



On 19/11/2019 07:14, Stephen Brennan wrote:
> BCM2711 features a RNG200 hardware random number generator block, which is
> different from the BCM283x from which it inherits. Move the rng block from
> BCM283x into a separate common file, and update the rng declaration of
> BCM2711.
>

I'd prefer to split this in two patches. One moving the node and another one
adding the new node for bcm2711.

Regards,
Matthias

> Signed-off-by: Stephen Brennan <[email protected]>
> ---
> arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
> arch/arm/boot/dts/bcm2835.dtsi | 1 +
> arch/arm/boot/dts/bcm2836.dtsi | 1 +
> arch/arm/boot/dts/bcm2837.dtsi | 1 +
> arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
> arch/arm/boot/dts/bcm283x.dtsi | 6 ------
> 6 files changed, 17 insertions(+), 9 deletions(-)
> create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi
>
> diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
> index ac83dac2e6ba..4975567e948e 100644
> --- a/arch/arm/boot/dts/bcm2711.dtsi
> +++ b/arch/arm/boot/dts/bcm2711.dtsi
> @@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
> };
>
> rng@7e104000 {
> + compatible = "brcm,bcm2711-rng200";
> + reg = <0x7e104000 0x28>;
> interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> -
> - /* RNG is incompatible with brcm,bcm2835-rng */
> - status = "disabled";
> + status = "okay";
> };
>
> uart2: serial@7e201400 {
> diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
> index 53bf4579cc22..f7b2f46e307d 100644
> --- a/arch/arm/boot/dts/bcm2835.dtsi
> +++ b/arch/arm/boot/dts/bcm2835.dtsi
> @@ -1,5 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> #include "bcm283x.dtsi"
> +#include "bcm283x-common.dtsi"
> #include "bcm2835-common.dtsi"
>
> / {
> diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
> index 82d6c4662ae4..a85374195796 100644
> --- a/arch/arm/boot/dts/bcm2836.dtsi
> +++ b/arch/arm/boot/dts/bcm2836.dtsi
> @@ -1,5 +1,6 @@
> // SPDX-License-Identifier: GPL-2.0
> #include "bcm283x.dtsi"
> +#include "bcm283x-common.dtsi"
> #include "bcm2835-common.dtsi"
>
> / {
> diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
> index 9e95fee78e19..045d78ffea08 100644
> --- a/arch/arm/boot/dts/bcm2837.dtsi
> +++ b/arch/arm/boot/dts/bcm2837.dtsi
> @@ -1,4 +1,5 @@
> #include "bcm283x.dtsi"
> +#include "bcm283x-common.dtsi"
> #include "bcm2835-common.dtsi"
>
> / {
> diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi b/arch/arm/boot/dts/bcm283x-common.dtsi
> new file mode 100644
> index 000000000000..3c8834bee390
> --- /dev/null
> +++ b/arch/arm/boot/dts/bcm283x-common.dtsi
> @@ -0,0 +1,11 @@
> +// SPDX-License-Identifier: GPL-2.0
> +
> +/ {
> + soc {
> + rng@7e104000 {
> + compatible = "brcm,bcm2835-rng";
> + reg = <0x7e104000 0x10>;
> + interrupts = <2 29>;
> + };
> + };
> +};
> diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
> index 3caaa57eb6c8..5219339fc27c 100644
> --- a/arch/arm/boot/dts/bcm283x.dtsi
> +++ b/arch/arm/boot/dts/bcm283x.dtsi
> @@ -84,12 +84,6 @@ clocks: cprman@7e101000 {
> <&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
> };
>
> - rng@7e104000 {
> - compatible = "brcm,bcm2835-rng";
> - reg = <0x7e104000 0x10>;
> - interrupts = <2 29>;
> - };
> -
> mailbox: mailbox@7e00b880 {
> compatible = "brcm,bcm2835-mbox";
> reg = <0x7e00b880 0x40>;
>

2019-11-19 11:17:59

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support



On 19/11/2019 11:07, Nicolas Saenz Julienne wrote:
> Hi Stephen, thanks for the follow-up.
>
> On Mon, 2019-11-18 at 22:14 -0800, Stephen Brennan wrote:
>> BCM2711 features a RNG200 hardware random number generator block, which is
>> different from the BCM283x from which it inherits. Move the rng block from
>> BCM283x into a separate common file, and update the rng declaration of
>> BCM2711.
>>
>> Signed-off-by: Stephen Brennan <[email protected]>
>> ---
>
> It's petty in this case but you should add a list of changes here too.
>
>> arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
>> arch/arm/boot/dts/bcm2835.dtsi | 1 +
>> arch/arm/boot/dts/bcm2836.dtsi | 1 +
>> arch/arm/boot/dts/bcm2837.dtsi | 1 +
>> arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
>> arch/arm/boot/dts/bcm283x.dtsi | 6 ------
>> 6 files changed, 17 insertions(+), 9 deletions(-)
>> create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi
>>
>> diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
>> index ac83dac2e6ba..4975567e948e 100644
>> --- a/arch/arm/boot/dts/bcm2711.dtsi
>> +++ b/arch/arm/boot/dts/bcm2711.dtsi
>> @@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
>> };
>>
>> rng@7e104000 {
>> + compatible = "brcm,bcm2711-rng200";
>> + reg = <0x7e104000 0x28>;
>> interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
>> -
>> - /* RNG is incompatible with brcm,bcm2835-rng */
>> - status = "disabled";
>> + status = "okay";
>> };
>>
>> uart2: serial@7e201400 {
>> diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
>> index 53bf4579cc22..f7b2f46e307d 100644
>> --- a/arch/arm/boot/dts/bcm2835.dtsi
>> +++ b/arch/arm/boot/dts/bcm2835.dtsi
>> @@ -1,5 +1,6 @@
>> // SPDX-License-Identifier: GPL-2.0
>> #include "bcm283x.dtsi"
>> +#include "bcm283x-common.dtsi"
>> #include "bcm2835-common.dtsi"
>>
>> / {
>> diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
>> index 82d6c4662ae4..a85374195796 100644
>> --- a/arch/arm/boot/dts/bcm2836.dtsi
>> +++ b/arch/arm/boot/dts/bcm2836.dtsi
>> @@ -1,5 +1,6 @@
>> // SPDX-License-Identifier: GPL-2.0
>> #include "bcm283x.dtsi"
>> +#include "bcm283x-common.dtsi"
>> #include "bcm2835-common.dtsi"
>>
>> / {
>> diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
>> index 9e95fee78e19..045d78ffea08 100644
>> --- a/arch/arm/boot/dts/bcm2837.dtsi
>> +++ b/arch/arm/boot/dts/bcm2837.dtsi
>> @@ -1,4 +1,5 @@
>> #include "bcm283x.dtsi"
>> +#include "bcm283x-common.dtsi"
>> #include "bcm2835-common.dtsi"
>>
>> / {
>> diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi
>> b/arch/arm/boot/dts/bcm283x-common.dtsi
>> new file mode 100644
>> index 000000000000..3c8834bee390
>> --- /dev/null
>> +++ b/arch/arm/boot/dts/bcm283x-common.dtsi
>> @@ -0,0 +1,11 @@
>> +// SPDX-License-Identifier: GPL-2.0
>> +
>> +/ {
>> + soc {
>> + rng@7e104000 {
>> + compatible = "brcm,bcm2835-rng";
>> + reg = <0x7e104000 0x10>;
>> + interrupts = <2 29>;
>> + };
>> + };
>> +};
>
> I think Stefan wrote bcm283x-common.dtsi by mistake, he really meant
> bcm2835-common.dtsi.
>

Thanks I was just wondering on which tree/patch-set this was based.

Regards,
Matthias

> See bcm2835-common.dtsi's header comment:
>
> /* This include file covers the common peripherals and configuration between
> * bcm2835, bcm2836 and bcm2837 implementations.
> */
>
> Regards,
> Nicolas
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>

2019-11-19 11:18:48

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v2 2/3] hwrng: iproc-rng200: Add support for BCM2711



On 19/11/2019 07:14, Stephen Brennan wrote:
> From: Stefan Wahren <[email protected]>
>
> BCM2711 features a RNG200 hardware random number generator block.
> So make the driver available.
>
> Signed-off-by: Stefan Wahren <[email protected]>
> Signed-off-by: Stephen Brennan <[email protected]>

Reviewed-by: Matthias Brugger <[email protected]>

> ---
> drivers/char/hw_random/Kconfig | 2 +-
> drivers/char/hw_random/iproc-rng200.c | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/char/hw_random/Kconfig b/drivers/char/hw_random/Kconfig
> index 7c7fecfa2fb2..77e848fca531 100644
> --- a/drivers/char/hw_random/Kconfig
> +++ b/drivers/char/hw_random/Kconfig
> @@ -90,7 +90,7 @@ config HW_RANDOM_BCM2835
>
> config HW_RANDOM_IPROC_RNG200
> tristate "Broadcom iProc/STB RNG200 support"
> - depends on ARCH_BCM_IPROC || ARCH_BRCMSTB
> + depends on ARCH_BCM_IPROC || ARCH_BCM2835 || ARCH_BRCMSTB
> default HW_RANDOM
> ---help---
> This driver provides kernel-side support for the RNG200
> diff --git a/drivers/char/hw_random/iproc-rng200.c b/drivers/char/hw_random/iproc-rng200.c
> index 899ff25f4f28..32d9fe61a225 100644
> --- a/drivers/char/hw_random/iproc-rng200.c
> +++ b/drivers/char/hw_random/iproc-rng200.c
> @@ -213,6 +213,7 @@ static int iproc_rng200_probe(struct platform_device *pdev)
> }
>
> static const struct of_device_id iproc_rng200_of_match[] = {
> + { .compatible = "brcm,bcm2711-rng200", },
> { .compatible = "brcm,bcm7211-rng200", },
> { .compatible = "brcm,bcm7278-rng200", },
> { .compatible = "brcm,iproc-rng200", },
>

2019-11-19 17:01:31

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support

Hi Stephen,

Am 19.11.19 um 12:15 schrieb Matthias Brugger:
>
> On 19/11/2019 11:07, Nicolas Saenz Julienne wrote:
>> Hi Stephen, thanks for the follow-up.
>>
>> On Mon, 2019-11-18 at 22:14 -0800, Stephen Brennan wrote:
>>> BCM2711 features a RNG200 hardware random number generator block, which is
>>> different from the BCM283x from which it inherits. Move the rng block from
>>> BCM283x into a separate common file, and update the rng declaration of
>>> BCM2711.
>>>
>>> Signed-off-by: Stephen Brennan <[email protected]>
>>> ---
>> It's petty in this case but you should add a list of changes here too.
>>
>>> arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
>>> arch/arm/boot/dts/bcm2835.dtsi | 1 +
>>> arch/arm/boot/dts/bcm2836.dtsi | 1 +
>>> arch/arm/boot/dts/bcm2837.dtsi | 1 +
>>> arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
>>> arch/arm/boot/dts/bcm283x.dtsi | 6 ------
>>> 6 files changed, 17 insertions(+), 9 deletions(-)
>>> create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi
>>>
>>> diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
>>> index ac83dac2e6ba..4975567e948e 100644
>>> --- a/arch/arm/boot/dts/bcm2711.dtsi
>>> +++ b/arch/arm/boot/dts/bcm2711.dtsi
>>> @@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
>>> };
>>>
>>> rng@7e104000 {
>>> + compatible = "brcm,bcm2711-rng200";
>>> + reg = <0x7e104000 0x28>;
>>> interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
please take into account that according to the rng200 binding document
there is no interrupt or clock. So drop it.
>>> -
>>> - /* RNG is incompatible with brcm,bcm2835-rng */
>>> - status = "disabled";
>>> + status = "okay";
>>> };
>>>
>>> uart2: serial@7e201400 {
>>> diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
>>> index 53bf4579cc22..f7b2f46e307d 100644
>>> --- a/arch/arm/boot/dts/bcm2835.dtsi
>>> +++ b/arch/arm/boot/dts/bcm2835.dtsi
>>> @@ -1,5 +1,6 @@
>>> // SPDX-License-Identifier: GPL-2.0
>>> #include "bcm283x.dtsi"
>>> +#include "bcm283x-common.dtsi"
>>> #include "bcm2835-common.dtsi"
>>>
>>> / {
>>> diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
>>> index 82d6c4662ae4..a85374195796 100644
>>> --- a/arch/arm/boot/dts/bcm2836.dtsi
>>> +++ b/arch/arm/boot/dts/bcm2836.dtsi
>>> @@ -1,5 +1,6 @@
>>> // SPDX-License-Identifier: GPL-2.0
>>> #include "bcm283x.dtsi"
>>> +#include "bcm283x-common.dtsi"
>>> #include "bcm2835-common.dtsi"
>>>
>>> / {
>>> diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
>>> index 9e95fee78e19..045d78ffea08 100644
>>> --- a/arch/arm/boot/dts/bcm2837.dtsi
>>> +++ b/arch/arm/boot/dts/bcm2837.dtsi
>>> @@ -1,4 +1,5 @@
>>> #include "bcm283x.dtsi"
>>> +#include "bcm283x-common.dtsi"
>>> #include "bcm2835-common.dtsi"
>>>
>>> / {
>>> diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi
>>> b/arch/arm/boot/dts/bcm283x-common.dtsi
>>> new file mode 100644
>>> index 000000000000..3c8834bee390
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/bcm283x-common.dtsi
>>> @@ -0,0 +1,11 @@
>>> +// SPDX-License-Identifier: GPL-2.0
>>> +
>>> +/ {
>>> + soc {
>>> + rng@7e104000 {
>>> + compatible = "brcm,bcm2835-rng";
>>> + reg = <0x7e104000 0x10>;
>>> + interrupts = <2 29>;
>>> + };
>>> + };
>>> +};
>> I think Stefan wrote bcm283x-common.dtsi by mistake, he really meant
>> bcm2835-common.dtsi.

Correct. Sorry for the confusion.

Regards
Stefan

>>
> Thanks I was just wondering on which tree/patch-set this was based.
>
> Regards,
> Matthias
>
>> See bcm2835-common.dtsi's header comment:
>>
>> /* This include file covers the common peripherals and configuration between
>> * bcm2835, bcm2836 and bcm2837 implementations.
>> */
>>
>> Regards,
>> Nicolas
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> [email protected]
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2019-11-19 17:11:46

by Stephen Brennan

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support

Hi Nicolas,

On Tue Nov 19, 2019 at 11:07 AM, Nicolas Saenz Julienne wrote:
> Hi Stephen, thanks for the follow-up.
>
>
> On Mon, 2019-11-18 at 22:14 -0800, Stephen Brennan wrote:
> > BCM2711 features a RNG200 hardware random number generator block, which i=
> s
> > different from the BCM283x from which it inherits. Move the rng block fro=
> m
> > BCM283x into a separate common file, and update the rng declaration of
> > BCM2711.
> >=20
> > Signed-off-by: Stephen Brennan <[email protected]>
> > ---
>
>
> It's petty in this case but you should add a list of changes here too.

To make sure I understand, you mean listing out the changes in each
revision of the patch series?

>
>
> > arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
> > arch/arm/boot/dts/bcm2835.dtsi | 1 +
> > arch/arm/boot/dts/bcm2836.dtsi | 1 +
> > arch/arm/boot/dts/bcm2837.dtsi | 1 +
> > arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
> > arch/arm/boot/dts/bcm283x.dtsi | 6 ------
> > 6 files changed, 17 insertions(+), 9 deletions(-)
> > create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi
> >=20
> > diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.d=
> tsi
> > index ac83dac2e6ba..4975567e948e 100644
> > --- a/arch/arm/boot/dts/bcm2711.dtsi
> > +++ b/arch/arm/boot/dts/bcm2711.dtsi
> > @@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
> > };
> > =20
> > rng@7e104000 {
> > + compatible =3D "brcm,bcm2711-rng200";
> > + reg =3D <0x7e104000 0x28>;
> > interrupts =3D <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> > -
> > - /* RNG is incompatible with brcm,bcm2835-rng */
> > - status =3D "disabled";
> > + status =3D "okay";
> > };
> > =20
> > uart2: serial@7e201400 {
> > diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.d=
> tsi
> > index 53bf4579cc22..f7b2f46e307d 100644
> > --- a/arch/arm/boot/dts/bcm2835.dtsi
> > +++ b/arch/arm/boot/dts/bcm2835.dtsi
> > @@ -1,5 +1,6 @@
> > // SPDX-License-Identifier: GPL-2.0
> > #include "bcm283x.dtsi"
> > +#include "bcm283x-common.dtsi"
> > #include "bcm2835-common.dtsi"
> > =20
> > / {
> > diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.d=
> tsi
> > index 82d6c4662ae4..a85374195796 100644
> > --- a/arch/arm/boot/dts/bcm2836.dtsi
> > +++ b/arch/arm/boot/dts/bcm2836.dtsi
> > @@ -1,5 +1,6 @@
> > // SPDX-License-Identifier: GPL-2.0
> > #include "bcm283x.dtsi"
> > +#include "bcm283x-common.dtsi"
> > #include "bcm2835-common.dtsi"
> > =20
> > / {
> > diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.d=
> tsi
> > index 9e95fee78e19..045d78ffea08 100644
> > --- a/arch/arm/boot/dts/bcm2837.dtsi
> > +++ b/arch/arm/boot/dts/bcm2837.dtsi
> > @@ -1,4 +1,5 @@
> > #include "bcm283x.dtsi"
> > +#include "bcm283x-common.dtsi"
> > #include "bcm2835-common.dtsi"
> > =20
> > / {
> > diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi
> > b/arch/arm/boot/dts/bcm283x-common.dtsi
> > new file mode 100644
> > index 000000000000..3c8834bee390
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/bcm283x-common.dtsi
> > @@ -0,0 +1,11 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +/ {
> > + soc {
> > + rng@7e104000 {
> > + compatible =3D "brcm,bcm2835-rng";
> > + reg =3D <0x7e104000 0x10>;
> > + interrupts =3D <2 29>;
> > + };
> > + };
> > +};
>
>
> I think Stefan wrote bcm283x-common.dtsi by mistake, he really meant
> bcm2835-common.dtsi.
>
>
> See bcm2835-common.dtsi's header comment:
>
>
> /* This include file covers the common peripherals and configuration
> betwee=
> n
> * bcm2835, bcm2836 and bcm2837 implementations.
> */
>

Wow, thank you, that makes a lot more sense!

Best,
Stephen

>
> Regards,
> Nicolas
>
>
>
>
>
>



2019-11-19 17:14:43

by Stephen Brennan

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support

Hi Matthias,

On Tue Nov 19, 2019 at 12:14 PM, Matthias Brugger wrote:
>
>
>
>
> On 19/11/2019 07:14, Stephen Brennan wrote:
> > BCM2711 features a RNG200 hardware random number generator block, which is
> > different from the BCM283x from which it inherits. Move the rng block from
> > BCM283x into a separate common file, and update the rng declaration of
> > BCM2711.
> >
>
>
> I'd prefer to split this in two patches. One moving the node and another
> one
> adding the new node for bcm2711.
>

Makes sense, I thought about doing it initially but didn't do it. In the
patch moving the node, should the bcm2711 continue to inherit the moved rng
node from its new location?

Thanks,
Stephen

>
> Regards,
> Matthias
>
>
> > Signed-off-by: Stephen Brennan <[email protected]>
> > ---
> > arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
> > arch/arm/boot/dts/bcm2835.dtsi | 1 +
> > arch/arm/boot/dts/bcm2836.dtsi | 1 +
> > arch/arm/boot/dts/bcm2837.dtsi | 1 +
> > arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
> > arch/arm/boot/dts/bcm283x.dtsi | 6 ------
> > 6 files changed, 17 insertions(+), 9 deletions(-)
> > create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi
> >
> > diff --git a/arch/arm/boot/dts/bcm2711.dtsi b/arch/arm/boot/dts/bcm2711.dtsi
> > index ac83dac2e6ba..4975567e948e 100644
> > --- a/arch/arm/boot/dts/bcm2711.dtsi
> > +++ b/arch/arm/boot/dts/bcm2711.dtsi
> > @@ -92,10 +92,10 @@ pm: watchdog@7e100000 {
> > };
> >
> > rng@7e104000 {
> > + compatible = "brcm,bcm2711-rng200";
> > + reg = <0x7e104000 0x28>;
> > interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
> > -
> > - /* RNG is incompatible with brcm,bcm2835-rng */
> > - status = "disabled";
> > + status = "okay";
> > };
> >
> > uart2: serial@7e201400 {
> > diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
> > index 53bf4579cc22..f7b2f46e307d 100644
> > --- a/arch/arm/boot/dts/bcm2835.dtsi
> > +++ b/arch/arm/boot/dts/bcm2835.dtsi
> > @@ -1,5 +1,6 @@
> > // SPDX-License-Identifier: GPL-2.0
> > #include "bcm283x.dtsi"
> > +#include "bcm283x-common.dtsi"
> > #include "bcm2835-common.dtsi"
> >
> > / {
> > diff --git a/arch/arm/boot/dts/bcm2836.dtsi b/arch/arm/boot/dts/bcm2836.dtsi
> > index 82d6c4662ae4..a85374195796 100644
> > --- a/arch/arm/boot/dts/bcm2836.dtsi
> > +++ b/arch/arm/boot/dts/bcm2836.dtsi
> > @@ -1,5 +1,6 @@
> > // SPDX-License-Identifier: GPL-2.0
> > #include "bcm283x.dtsi"
> > +#include "bcm283x-common.dtsi"
> > #include "bcm2835-common.dtsi"
> >
> > / {
> > diff --git a/arch/arm/boot/dts/bcm2837.dtsi b/arch/arm/boot/dts/bcm2837.dtsi
> > index 9e95fee78e19..045d78ffea08 100644
> > --- a/arch/arm/boot/dts/bcm2837.dtsi
> > +++ b/arch/arm/boot/dts/bcm2837.dtsi
> > @@ -1,4 +1,5 @@
> > #include "bcm283x.dtsi"
> > +#include "bcm283x-common.dtsi"
> > #include "bcm2835-common.dtsi"
> >
> > / {
> > diff --git a/arch/arm/boot/dts/bcm283x-common.dtsi b/arch/arm/boot/dts/bcm283x-common.dtsi
> > new file mode 100644
> > index 000000000000..3c8834bee390
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/bcm283x-common.dtsi
> > @@ -0,0 +1,11 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +
> > +/ {
> > + soc {
> > + rng@7e104000 {
> > + compatible = "brcm,bcm2835-rng";
> > + reg = <0x7e104000 0x10>;
> > + interrupts = <2 29>;
> > + };
> > + };
> > +};
> > diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
> > index 3caaa57eb6c8..5219339fc27c 100644
> > --- a/arch/arm/boot/dts/bcm283x.dtsi
> > +++ b/arch/arm/boot/dts/bcm283x.dtsi
> > @@ -84,12 +84,6 @@ clocks: cprman@7e101000 {
> > <&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
> > };
> >
> > - rng@7e104000 {
> > - compatible = "brcm,bcm2835-rng";
> > - reg = <0x7e104000 0x10>;
> > - interrupts = <2 29>;
> > - };
> > -
> > mailbox: mailbox@7e00b880 {
> > compatible = "brcm,bcm2835-mbox";
> > reg = <0x7e00b880 0x40>;
> >
>
>
>
>



2019-11-19 17:26:11

by Nicolas Saenz Julienne

[permalink] [raw]
Subject: Re: [PATCH v2 3/3] ARM: dts: bcm2711: Enable HWRNG support

On Tue, 2019-11-19 at 09:09 -0800, Stephen Brennan wrote:
> Hi Nicolas,
>
> On Tue Nov 19, 2019 at 11:07 AM, Nicolas Saenz Julienne wrote:
> > Hi Stephen, thanks for the follow-up.
> >
> >
> > On Mon, 2019-11-18 at 22:14 -0800, Stephen Brennan wrote:
> > > BCM2711 features a RNG200 hardware random number generator block, which i=
> > s
> > > different from the BCM283x from which it inherits. Move the rng block fro=
> > m
> > > BCM283x into a separate common file, and update the rng declaration of
> > > BCM2711.
> > > =20
> > > Signed-off-by: Stephen Brennan <[email protected]>
> > > ---
> >
> > It's petty in this case but you should add a list of changes here too.
>
> To make sure I understand, you mean listing out the changes in each
> revision of the patch series?

What's generally expected is for the cover letter to contain an overview of the
series changes. No need to go into specific detail. Then, every patch should
list its local modifications.

Also remember to add the list of changes after the '---' line in your patch,
this way they won't show up in the final commit log.

If in doubt have a look at the kernel mailing lists, there are plenty of
examples.

Regards,
Nicolas


Attachments:
signature.asc (499.00 B)
This is a digitally signed message part

2019-12-11 09:34:26

by Herbert Xu

[permalink] [raw]
Subject: Re: [PATCH v2 0/3] Raspberry Pi 4 HWRNG Support

On Mon, Nov 18, 2019 at 10:14:04PM -0800, Stephen Brennan wrote:
> This patch series enables support for the HWRNG included on the Raspberry
> Pi 4. It is simply a rebase of Stefan's branch [1]. I went ahead and
> tested this out on a Pi 4. Prior to this patch series, attempting to use
> the hwrng gives:
>
> $ head -c 2 /dev/hwrng
> head: /dev/hwrng: Input/output error
>
> After this series, the same command gives two random bytes.
>
> Changes in v2:
> - specify the correct size for the region in the dts, refactor bcm283x rng
>
> ---
>
> Stefan Wahren (2):
> dt-bindings: rng: add BCM2711 RNG compatible
> hwrng: iproc-rng200: Add support for BCM2711
>
> Stephen Brennan (1):
> ARM: dts: bcm2711: Enable HWRNG support
>
> .../devicetree/bindings/rng/brcm,iproc-rng200.txt | 1 +
> arch/arm/boot/dts/bcm2711.dtsi | 6 +++---
> arch/arm/boot/dts/bcm2835.dtsi | 1 +
> arch/arm/boot/dts/bcm2836.dtsi | 1 +
> arch/arm/boot/dts/bcm2837.dtsi | 1 +
> arch/arm/boot/dts/bcm283x-common.dtsi | 11 +++++++++++
> arch/arm/boot/dts/bcm283x.dtsi | 6 ------
> drivers/char/hw_random/Kconfig | 2 +-
> drivers/char/hw_random/iproc-rng200.c | 1 +
> 9 files changed, 20 insertions(+), 10 deletions(-)
> create mode 100644 arch/arm/boot/dts/bcm283x-common.dtsi

Patches 1-2 applied. Thanks.
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt