openwrt/target/linux/bcm27xx/patches-6.6/950-1110-ARM-dts-Move-rpi-otp-nodes-onto-a-dedicated-bus.patch
Álvaro Fernández Rojas 8c405cdccc bcm27xx: add 6.6 kernel patches
The patches were generated from the RPi repo with the following command:
git format-patch v6.6.34..rpi-6.1.y

Some patches needed rebasing and, as usual, the applied and reverted, wireless
drivers, Github workflows, READMEs and defconfigs patches were removed.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
2024-06-18 18:52:49 +02:00

176 lines
4.3 KiB
Diff

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. */