bcm27xx: update 6.1 patches to latest version
[openwrt/staging/jow.git] / target / linux / bcm27xx / patches-6.1 / 950-0797-overlays-jedec-spi-nor-Add-speed-parameter.patch
1 From 76c457e7e2920342637b1955fbaadf2aae282f05 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.com>
3 Date: Fri, 23 Jun 2023 09:48:59 +0100
4 Subject: [PATCH] overlays: jedec-spi-nor: Add speed parameter
5
6 Add a speed parameter to the jedec-spi-nor overlay to allow much
7 faster accesses, taking the opportunity to simplify the internals.
8
9 Signed-off-by: Phil Elwell <phil@raspberrypi.com>
10 ---
11 arch/arm/boot/dts/overlays/README | 8 +-
12 .../dts/overlays/jedec-spi-nor-overlay.dts | 245 +++---------------
13 2 files changed, 41 insertions(+), 212 deletions(-)
14
15 --- a/arch/arm/boot/dts/overlays/README
16 +++ b/arch/arm/boot/dts/overlays/README
17 @@ -2557,9 +2557,11 @@ Name: jedec-spi-nor
18 Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The
19 "jedec,spi-nor" kernel driver was formerly known as "m25p80".)
20 Load: dtoverlay=jedec-spi-nor,<param>=<val>
21 -Params: flash-spi<n>-<m> Enables flash device on SPI<n>, CS#<m>.
22 - flash-fastr-spi<n>-<m> Enables flash device with fast read capability
23 - on SPI<n>, CS#<m>.
24 +Params: spi<n>-<m> Enable flash device on SPI<n>, CS#<m>
25 + fastr Add fast read capability to the flash device
26 + speed Maximum SPI frequency (Hz)
27 + flash-spi<n>-<m> Same as spi<n>-<m> (deprecated)
28 + flash-fastr-spi<n>-<m> Same as spi<n>->m>,fastr (deprecated)
29
30
31 Name: justboom-both
32 --- a/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
33 +++ b/arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts
34 @@ -3,6 +3,7 @@
35 // dtparams:
36 // flash-spi<n>-<m> - Enables flash device on SPI<n>, CS#<m>.
37 // flash-fastr-spi<n>-<m> - Enables flash device with fast read capability on SPI<n>, CS#<m>.
38 +// speed - Set the SPI clock speed in Hz
39 //
40 // If devices are present on SPI1 or SPI2, those interfaces must be enabled with one of the spi1-1/2/3cs and/or spi2-1/2/3cs overlays.
41 //
42 @@ -79,50 +80,23 @@
43 };
44 };
45
46 - // enable flash on spi0.0
47 + // Enable fast read for device
48 + // Use default active low interrupt signalling.
49 fragment@8 {
50 - target = <&spi0>;
51 + target = <&spi_nor>;
52 __dormant__ {
53 - status = "okay";
54 - #address-cells = <1>;
55 - #size-cells = <0>;
56 - spi_nor_00: spi_nor@0 {
57 - #address-cells = <1>;
58 - #size-cells = <1>;
59 - compatible = "jedec,spi-nor";
60 - reg = <0>;
61 - spi-max-frequency = <500000>;
62 - };
63 + m25p,fast-read;
64 };
65 };
66
67 - // enable flash on spi0.1
68 - fragment@9 {
69 + payload: fragment@100 {
70 target = <&spi0>;
71 - __dormant__ {
72 + __overlay__ {
73 status = "okay";
74 - #address-cells = <1>;
75 - #size-cells = <0>;
76 - spi_nor_01: spi_nor@1 {
77 - #address-cells = <1>;
78 - #size-cells = <1>;
79 - compatible = "jedec,spi-nor";
80 - reg = <1>;
81 - spi-max-frequency = <500000>;
82 - };
83 - };
84 - };
85 + #address-cells = <1>;
86 + #size-cells = <0>;
87
88 - // enable flash on spi1.0
89 - fragment@10 {
90 - target = <&spi1>;
91 - __dormant__ {
92 - status = "okay";
93 - #address-cells = <1>;
94 - #size-cells = <0>;
95 - spi_nor_10: spi_nor@0 {
96 - #address-cells = <1>;
97 - #size-cells = <1>;
98 + spi_nor: spi_nor@0 {
99 compatible = "jedec,spi-nor";
100 reg = <0>;
101 spi-max-frequency = <500000>;
102 @@ -130,180 +104,33 @@
103 };
104 };
105
106 - // enable flash on spi1.1
107 - fragment@11 {
108 - target = <&spi1>;
109 - __dormant__ {
110 - status = "okay";
111 - #address-cells = <1>;
112 - #size-cells = <0>;
113 - spi_nor_11: spi_nor@1 {
114 - #address-cells = <1>;
115 - #size-cells = <1>;
116 - compatible = "jedec,spi-nor";
117 - reg = <1>;
118 - spi-max-frequency = <500000>;
119 - };
120 - };
121 - };
122 -
123 - // enable flash on spi1.2
124 - fragment@12 {
125 - target = <&spi1>;
126 - __dormant__ {
127 - status = "okay";
128 - #address-cells = <1>;
129 - #size-cells = <0>;
130 - spi_nor_12: spi_nor@2 {
131 - #address-cells = <1>;
132 - #size-cells = <1>;
133 - compatible = "jedec,spi-nor";
134 - reg = <2>;
135 - spi-max-frequency = <500000>;
136 - };
137 - };
138 - };
139 -
140 - // enable flash on spi2.0
141 - fragment@13 {
142 - target = <&spi2>;
143 - __dormant__ {
144 - status = "okay";
145 - #address-cells = <1>;
146 - #size-cells = <0>;
147 - spi_nor_20: spi_nor@0 {
148 - #address-cells = <1>;
149 - #size-cells = <1>;
150 - compatible = "jedec,spi-nor";
151 - reg = <0>;
152 - spi-max-frequency = <500000>;
153 - };
154 - };
155 - };
156 -
157 - // enable flash on spi2.1
158 - fragment@14 {
159 - target = <&spi2>;
160 - __dormant__ {
161 - status = "okay";
162 - #address-cells = <1>;
163 - #size-cells = <0>;
164 - spi_nor_21: spi_nor@1 {
165 - #address-cells = <1>;
166 - #size-cells = <1>;
167 - compatible = "jedec,spi-nor";
168 - reg = <1>;
169 - spi-max-frequency = <500000>;
170 - };
171 - };
172 - };
173 -
174 - // enable flash on spi2.2
175 - fragment@15 {
176 - target = <&spi2>;
177 - __dormant__ {
178 - status = "okay";
179 - #address-cells = <1>;
180 - #size-cells = <0>;
181 - spi_nor_22: spi_nor@2 {
182 - #address-cells = <1>;
183 - #size-cells = <1>;
184 - compatible = "jedec,spi-nor";
185 - reg = <2>;
186 - spi-max-frequency = <500000>;
187 - };
188 - };
189 - };
190 -
191 - // Enable fast read for device on spi0.0.
192 - // Use default active low interrupt signalling.
193 - fragment@16 {
194 - target = <&spi_nor_00>;
195 - __dormant__ {
196 - m25p,fast-read;
197 - };
198 - };
199 -
200 - // Enable fast read for device on spi0.1.
201 - // Use default active low interrupt signalling.
202 - fragment@17 {
203 - target = <&spi_nor_01>;
204 - __dormant__ {
205 - m25p,fast-read;
206 - };
207 - };
208 -
209 - // Enable fast read for device on spi1.0.
210 - // Use default active low interrupt signalling.
211 - fragment@18 {
212 - target = <&spi_nor_10>;
213 - __dormant__ {
214 - m25p,fast-read;
215 - };
216 - };
217 -
218 - // Enable fast read for device on spi1.1.
219 - // Use default active low interrupt signalling.
220 - fragment@19 {
221 - target = <&spi_nor_11>;
222 - __dormant__ {
223 - m25p,fast-read;
224 - };
225 - };
226 -
227 - // Enable fast read for device on spi1.2.
228 - // Use default active low interrupt signalling.
229 - fragment@20 {
230 - target = <&spi_nor_12>;
231 - __dormant__ {
232 - m25p,fast-read;
233 - };
234 - };
235 -
236 - // Enable fast read for device on spi2.0.
237 - // Use default active low interrupt signalling.
238 - fragment@21 {
239 - target = <&spi_nor_20>;
240 - __dormant__ {
241 - m25p,fast-read;
242 - };
243 - };
244 -
245 - // Enable fast read for device on spi2.1.
246 - // Use default active low interrupt signalling.
247 - fragment@22 {
248 - target = <&spi_nor_21>;
249 - __dormant__ {
250 - m25p,fast-read;
251 - };
252 - };
253 -
254 - // Enable fast read for device on spi2.2.
255 - // Use default active low interrupt signalling.
256 - fragment@23 {
257 - target = <&spi_nor_22>;
258 - __dormant__ {
259 - m25p,fast-read;
260 - };
261 - };
262 -
263 __overrides__ {
264 - flash-spi0-0 = <0>,"+0+8";
265 - flash-spi0-1 = <0>,"+1+9";
266 - flash-spi1-0 = <0>,"+2+10";
267 - flash-spi1-1 = <0>,"+3+11";
268 - flash-spi1-2 = <0>,"+4+12";
269 - flash-spi2-0 = <0>,"+5+13";
270 - flash-spi2-1 = <0>,"+6+14";
271 - flash-spi2-2 = <0>,"+7+15";
272 - flash-fastr-spi0-0 = <0>,"+0+8+16";
273 - flash-fastr-spi0-1 = <0>,"+1+9+17";
274 - flash-fastr-spi1-0 = <0>,"+2+10+18";
275 - flash-fastr-spi1-1 = <0>,"+3+11+19";
276 - flash-fastr-spi1-2 = <0>,"+4+12+20";
277 - flash-fastr-spi2-0 = <0>,"+5+13+21";
278 - flash-fastr-spi2-1 = <0>,"+6+14+22";
279 - flash-fastr-spi2-2 = <0>,"+7+15+23";
280 + spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
281 + spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
282 + spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
283 + spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
284 + spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
285 + spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
286 + spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
287 + spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
288 + flash-spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
289 + flash-spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
290 + flash-spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
291 + flash-spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
292 + flash-spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
293 + flash-spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
294 + flash-spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
295 + flash-spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
296 + flash-fastr-spi0-0 = <0>,"+0+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
297 + flash-fastr-spi0-1 = <0>,"+1+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
298 + flash-fastr-spi1-0 = <0>,"+2+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
299 + flash-fastr-spi1-1 = <0>,"+3+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
300 + flash-fastr-spi1-2 = <0>,"+4+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
301 + flash-fastr-spi2-0 = <0>,"+5+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
302 + flash-fastr-spi2-1 = <0>,"+6+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
303 + flash-fastr-spi2-2 = <0>,"+7+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
304 + fastr = <0>,"+8";
305 + speed = <&spi_nor>, "spi-max-frequency:0";
306 };
307 };
308