diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-6.6/950-1110-ARM-dts-Move-rpi-otp-nodes-onto-a-dedicated-bus.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-6.6/950-1110-ARM-dts-Move-rpi-otp-nodes-onto-a-dedicated-bus.patch | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-6.6/950-1110-ARM-dts-Move-rpi-otp-nodes-onto-a-dedicated-bus.patch b/target/linux/bcm27xx/patches-6.6/950-1110-ARM-dts-Move-rpi-otp-nodes-onto-a-dedicated-bus.patch new file mode 100644 index 0000000000..a0f36067c5 --- /dev/null +++ b/target/linux/bcm27xx/patches-6.6/950-1110-ARM-dts-Move-rpi-otp-nodes-onto-a-dedicated-bus.patch @@ -0,0 +1,175 @@ +From a2fb37fbc6cc3f92c3ea2e1d8f4e15d924ac860c Mon Sep 17 00:00:00 2001 +From: Phil Elwell <phil@raspberrypi.com> +Date: Thu, 30 May 2024 15:59:52 +0100 +Subject: [PATCH 1110/1135] ARM: dts: Move rpi-otp nodes onto a dedicated bus + +The rpi-otp driver uses a virtualised, OTP-relative addressing scheme. +However, when instance nodes are children of "/soc" they appear to be +addressable directly by the host, which is wrong (but not in a way which +causes an error unless one goes looking for one). + +Add a wrapper (bus) node without a "ranges" property to make the +separation clear. + +See: https://github.com/raspberrypi/linux/issues/6196 + +Signed-off-by: Phil Elwell <phil@raspberrypi.com> +--- + arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi | 30 ++++++----- + .../arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 39 ++++++++------ + arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi | 52 +++++++++++-------- + 3 files changed, 69 insertions(+), 52 deletions(-) + +--- a/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi +@@ -26,18 +26,24 @@ + }; + + &soc { +- nvmem_otp: nvmem_otp { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <0 192>; +- status = "okay"; +- }; ++ nvmem { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ nvmem_otp: nvmem_otp { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <0 192>; ++ status = "okay"; ++ }; + +- nvmem_cust: nvmem_cust { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <1 8>; +- status = "okay"; ++ nvmem_cust: nvmem_cust { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <1 8>; ++ status = "okay"; ++ }; + }; + }; + +--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi +@@ -90,26 +90,31 @@ + /* Add the physical <-> DMA mapping for the I/O space */ + dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>, + <0x7c000000 0x0 0xfc000000 0x03800000>; ++ nvmem { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <1>; + +- nvmem_otp: nvmem_otp { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <0 166>; +- status = "okay"; +- }; ++ nvmem_otp: nvmem_otp { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <0 166>; ++ status = "okay"; ++ }; + +- nvmem_cust: nvmem_cust { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <1 8>; +- status = "okay"; +- }; ++ nvmem_cust: nvmem_cust { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <1 8>; ++ status = "okay"; ++ }; + +- nvmem_priv: nvmem_priv { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <3 8>; +- status = "okay"; ++ nvmem_priv: nvmem_priv { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <3 8>; ++ status = "okay"; ++ }; + }; + }; + +--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi ++++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi +@@ -45,32 +45,38 @@ + trickle-charge-microvolt = <0>; + }; + +- nvmem_otp: nvmem_otp { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <0 192>; +- status = "okay"; +- }; ++ nvmem { ++ compatible = "simple-bus"; ++ #address-cells = <1>; ++ #size-cells = <1>; + +- nvmem_cust: nvmem_cust { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <1 8>; +- status = "okay"; +- }; ++ nvmem_otp: nvmem_otp { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <0 192>; ++ status = "okay"; ++ }; + +- nvmem_mac: nvmem_mac { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <2 6>; +- status = "okay"; +- }; ++ nvmem_cust: nvmem_cust { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <1 8>; ++ status = "okay"; ++ }; ++ ++ nvmem_mac: nvmem_mac { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <2 6>; ++ status = "okay"; ++ }; + +- nvmem_priv: nvmem_priv { +- compatible = "raspberrypi,rpi-otp"; +- firmware = <&firmware>; +- reg = <3 16>; +- status = "okay"; ++ nvmem_priv: nvmem_priv { ++ compatible = "raspberrypi,rpi-otp"; ++ firmware = <&firmware>; ++ reg = <3 16>; ++ status = "okay"; ++ }; + }; + + /* Define these notional regulators for use by overlays, etc. */ |