openwrt/target/linux/bcm27xx/patches-6.6/950-1011-nvmem-raspberrypi-Enable-nvmem-otp-driver-through-DT.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

148 lines
3.9 KiB
Diff

From ec2216edd465bcc7bd423ba2cae1058c22a8ef7e Mon Sep 17 00:00:00 2001
From: Dom Cobley <popcornmix@gmail.com>
Date: Fri, 5 Apr 2024 11:58:47 +0100
Subject: [PATCH 1011/1085] nvmem: raspberrypi: Enable nvmem otp driver through
DT
Signed-off-by: Dom Cobley <popcornmix@gmail.com>
---
arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi | 17 ++++++++++
.../arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 23 +++++++++++++
arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi | 32 +++++++++++++++++++
arch/arm/boot/dts/overlays/README | 6 ++++
4 files changed, 78 insertions(+)
--- a/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
@@ -19,11 +19,28 @@
hdmi = <&hdmi>,"status";
i2c2_iknowwhatimdoing = <&i2c2>,"status";
i2c2_baudrate = <&i2c2>,"clock-frequency:0";
+ nvmem_cust_rw = <&nvmem_cust>,"rw?";
sd = <&sdhost>,"status";
sd_poll_once = <&sdhost>,"non-removable?";
};
};
+&soc {
+ 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";
+ };
+};
+
&sdhost {
pinctrl-names = "default";
pinctrl-0 = <&sdhost_gpio48>;
--- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
@@ -10,6 +10,8 @@
eee = <&chosen>,"bootargs{on='',off='genet.eee=N'}";
hdmi = <&hdmi0>,"status",
<&hdmi1>,"status";
+ nvmem_cust_rw = <&nvmem_cust>,"rw?";
+ nvmem_priv_rw = <&nvmem_priv>,"rw?";
pcie = <&pcie0>,"status";
sd = <&emmc2>,"status";
@@ -88,6 +90,27 @@
/* Add the physical <-> DMA mapping for the I/O space */
dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>,
<0x7c000000 0x0 0xfc000000 0x03800000>;
+
+ 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_priv: nvmem_priv {
+ compatible = "raspberrypi,rpi-otp";
+ firmware = <&firmware>;
+ reg = <3 8>;
+ status = "okay";
+ };
};
&scb {
--- a/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi
+++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi
@@ -45,6 +45,34 @@
trickle-charge-microvolt = <0>;
};
+ 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_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";
+ };
+
/* Define these notional regulators for use by overlays, etc. */
vdd_3v3_reg: fixedregulator_3v3 {
compatible = "regulator-fixed";
@@ -67,6 +95,10 @@
__overrides__ {
arm_freq;
axiperf = <&axiperf>,"status";
+
+ nvmem_cust_rw = <&nvmem_cust>,"rw?";
+ nvmem_priv_rw = <&nvmem_priv>,"rw?";
+ nvmem_mac_rw = <&nvmem_mac>,"rw?";
};
};
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -300,6 +300,12 @@ Params:
nvme Alias for "pciex1" (2712 only)
+ nvmem_cust_rw Allow read/write access to customer otp
+
+ nvmem_mac_rw Allow read/write access to mac addresses otp
+
+ nvmem_priv_rw Allow read/write access to customer private otp
+
pcie Set to "off" to disable the PCIe interface
(default "on")
(2711 only, but not applicable on CM4S)