7fe67cbc26869d176a2a2a901e38660f9759a664
[openwrt/staging/linusw.git] /
1 From ec2216edd465bcc7bd423ba2cae1058c22a8ef7e Mon Sep 17 00:00:00 2001
2 From: Dom Cobley <popcornmix@gmail.com>
3 Date: Fri, 5 Apr 2024 11:58:47 +0100
4 Subject: [PATCH 1011/1085] nvmem: raspberrypi: Enable nvmem otp driver through
5 DT
6
7 Signed-off-by: Dom Cobley <popcornmix@gmail.com>
8 ---
9 arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi | 17 ++++++++++
10 .../arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi | 23 +++++++++++++
11 arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi | 32 +++++++++++++++++++
12 arch/arm/boot/dts/overlays/README | 6 ++++
13 4 files changed, 78 insertions(+)
14
15 --- a/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
16 +++ b/arch/arm/boot/dts/broadcom/bcm2708-rpi.dtsi
17 @@ -19,11 +19,28 @@
18 hdmi = <&hdmi>,"status";
19 i2c2_iknowwhatimdoing = <&i2c2>,"status";
20 i2c2_baudrate = <&i2c2>,"clock-frequency:0";
21 + nvmem_cust_rw = <&nvmem_cust>,"rw?";
22 sd = <&sdhost>,"status";
23 sd_poll_once = <&sdhost>,"non-removable?";
24 };
25 };
26
27 +&soc {
28 + nvmem_otp: nvmem_otp {
29 + compatible = "raspberrypi,rpi-otp";
30 + firmware = <&firmware>;
31 + reg = <0 192>;
32 + status = "okay";
33 + };
34 +
35 + nvmem_cust: nvmem_cust {
36 + compatible = "raspberrypi,rpi-otp";
37 + firmware = <&firmware>;
38 + reg = <1 8>;
39 + status = "okay";
40 + };
41 +};
42 +
43 &sdhost {
44 pinctrl-names = "default";
45 pinctrl-0 = <&sdhost_gpio48>;
46 --- a/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
47 +++ b/arch/arm/boot/dts/broadcom/bcm2711-rpi-ds.dtsi
48 @@ -10,6 +10,8 @@
49 eee = <&chosen>,"bootargs{on='',off='genet.eee=N'}";
50 hdmi = <&hdmi0>,"status",
51 <&hdmi1>,"status";
52 + nvmem_cust_rw = <&nvmem_cust>,"rw?";
53 + nvmem_priv_rw = <&nvmem_priv>,"rw?";
54 pcie = <&pcie0>,"status";
55 sd = <&emmc2>,"status";
56
57 @@ -88,6 +90,27 @@
58 /* Add the physical <-> DMA mapping for the I/O space */
59 dma-ranges = <0xc0000000 0x0 0x00000000 0x40000000>,
60 <0x7c000000 0x0 0xfc000000 0x03800000>;
61 +
62 + nvmem_otp: nvmem_otp {
63 + compatible = "raspberrypi,rpi-otp";
64 + firmware = <&firmware>;
65 + reg = <0 166>;
66 + status = "okay";
67 + };
68 +
69 + nvmem_cust: nvmem_cust {
70 + compatible = "raspberrypi,rpi-otp";
71 + firmware = <&firmware>;
72 + reg = <1 8>;
73 + status = "okay";
74 + };
75 +
76 + nvmem_priv: nvmem_priv {
77 + compatible = "raspberrypi,rpi-otp";
78 + firmware = <&firmware>;
79 + reg = <3 8>;
80 + status = "okay";
81 + };
82 };
83
84 &scb {
85 --- a/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi
86 +++ b/arch/arm/boot/dts/broadcom/bcm2712-rpi.dtsi
87 @@ -45,6 +45,34 @@
88 trickle-charge-microvolt = <0>;
89 };
90
91 + nvmem_otp: nvmem_otp {
92 + compatible = "raspberrypi,rpi-otp";
93 + firmware = <&firmware>;
94 + reg = <0 192>;
95 + status = "okay";
96 + };
97 +
98 + nvmem_cust: nvmem_cust {
99 + compatible = "raspberrypi,rpi-otp";
100 + firmware = <&firmware>;
101 + reg = <1 8>;
102 + status = "okay";
103 + };
104 +
105 + nvmem_mac: nvmem_mac {
106 + compatible = "raspberrypi,rpi-otp";
107 + firmware = <&firmware>;
108 + reg = <2 6>;
109 + status = "okay";
110 + };
111 +
112 + nvmem_priv: nvmem_priv {
113 + compatible = "raspberrypi,rpi-otp";
114 + firmware = <&firmware>;
115 + reg = <3 16>;
116 + status = "okay";
117 + };
118 +
119 /* Define these notional regulators for use by overlays, etc. */
120 vdd_3v3_reg: fixedregulator_3v3 {
121 compatible = "regulator-fixed";
122 @@ -67,6 +95,10 @@
123 __overrides__ {
124 arm_freq;
125 axiperf = <&axiperf>,"status";
126 +
127 + nvmem_cust_rw = <&nvmem_cust>,"rw?";
128 + nvmem_priv_rw = <&nvmem_priv>,"rw?";
129 + nvmem_mac_rw = <&nvmem_mac>,"rw?";
130 };
131 };
132
133 --- a/arch/arm/boot/dts/overlays/README
134 +++ b/arch/arm/boot/dts/overlays/README
135 @@ -300,6 +300,12 @@ Params:
136
137 nvme Alias for "pciex1" (2712 only)
138
139 + nvmem_cust_rw Allow read/write access to customer otp
140 +
141 + nvmem_mac_rw Allow read/write access to mac addresses otp
142 +
143 + nvmem_priv_rw Allow read/write access to customer private otp
144 +
145 pcie Set to "off" to disable the PCIe interface
146 (default "on")
147 (2711 only, but not applicable on CM4S)