Skip to content

Commit 76c457e

Browse files
committed
overlays: jedec-spi-nor: Add speed parameter
Add a speed parameter to the jedec-spi-nor overlay to allow much faster accesses, taking the opportunity to simplify the internals. Signed-off-by: Phil Elwell <[email protected]>
1 parent d4c3133 commit 76c457e

File tree

2 files changed

+41
-212
lines changed

2 files changed

+41
-212
lines changed

arch/arm/boot/dts/overlays/README

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2557,9 +2557,11 @@ Name: jedec-spi-nor
25572557
Info: Adds support for JEDEC-compliant SPI NOR flash devices. (Note: The
25582558
"jedec,spi-nor" kernel driver was formerly known as "m25p80".)
25592559
Load: dtoverlay=jedec-spi-nor,<param>=<val>
2560-
Params: flash-spi<n>-<m> Enables flash device on SPI<n>, CS#<m>.
2561-
flash-fastr-spi<n>-<m> Enables flash device with fast read capability
2562-
on SPI<n>, CS#<m>.
2560+
Params: spi<n>-<m> Enable flash device on SPI<n>, CS#<m>
2561+
fastr Add fast read capability to the flash device
2562+
speed Maximum SPI frequency (Hz)
2563+
flash-spi<n>-<m> Same as spi<n>-<m> (deprecated)
2564+
flash-fastr-spi<n>-<m> Same as spi<n>->m>,fastr (deprecated)
25632565

25642566

25652567
Name: justboom-both

arch/arm/boot/dts/overlays/jedec-spi-nor-overlay.dts

Lines changed: 36 additions & 209 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// dtparams:
44
// flash-spi<n>-<m> - Enables flash device on SPI<n>, CS#<m>.
55
// flash-fastr-spi<n>-<m> - Enables flash device with fast read capability on SPI<n>, CS#<m>.
6+
// speed - Set the SPI clock speed in Hz
67
//
78
// 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.
89
//
@@ -79,231 +80,57 @@
7980
};
8081
};
8182

82-
// enable flash on spi0.0
83+
// Enable fast read for device
84+
// Use default active low interrupt signalling.
8385
fragment@8 {
84-
target = <&spi0>;
86+
target = <&spi_nor>;
8587
__dormant__ {
86-
status = "okay";
87-
#address-cells = <1>;
88-
#size-cells = <0>;
89-
spi_nor_00: spi_nor@0 {
90-
#address-cells = <1>;
91-
#size-cells = <1>;
92-
compatible = "jedec,spi-nor";
93-
reg = <0>;
94-
spi-max-frequency = <500000>;
95-
};
88+
m25p,fast-read;
9689
};
9790
};
9891

99-
// enable flash on spi0.1
100-
fragment@9 {
92+
payload: fragment@100 {
10193
target = <&spi0>;
102-
__dormant__ {
94+
__overlay__ {
10395
status = "okay";
104-
#address-cells = <1>;
105-
#size-cells = <0>;
106-
spi_nor_01: spi_nor@1 {
107-
#address-cells = <1>;
108-
#size-cells = <1>;
109-
compatible = "jedec,spi-nor";
110-
reg = <1>;
111-
spi-max-frequency = <500000>;
112-
};
113-
};
114-
};
96+
#address-cells = <1>;
97+
#size-cells = <0>;
11598

116-
// enable flash on spi1.0
117-
fragment@10 {
118-
target = <&spi1>;
119-
__dormant__ {
120-
status = "okay";
121-
#address-cells = <1>;
122-
#size-cells = <0>;
123-
spi_nor_10: spi_nor@0 {
124-
#address-cells = <1>;
125-
#size-cells = <1>;
99+
spi_nor: spi_nor@0 {
126100
compatible = "jedec,spi-nor";
127101
reg = <0>;
128102
spi-max-frequency = <500000>;
129103
};
130104
};
131105
};
132106

133-
// enable flash on spi1.1
134-
fragment@11 {
135-
target = <&spi1>;
136-
__dormant__ {
137-
status = "okay";
138-
#address-cells = <1>;
139-
#size-cells = <0>;
140-
spi_nor_11: spi_nor@1 {
141-
#address-cells = <1>;
142-
#size-cells = <1>;
143-
compatible = "jedec,spi-nor";
144-
reg = <1>;
145-
spi-max-frequency = <500000>;
146-
};
147-
};
148-
};
149-
150-
// enable flash on spi1.2
151-
fragment@12 {
152-
target = <&spi1>;
153-
__dormant__ {
154-
status = "okay";
155-
#address-cells = <1>;
156-
#size-cells = <0>;
157-
spi_nor_12: spi_nor@2 {
158-
#address-cells = <1>;
159-
#size-cells = <1>;
160-
compatible = "jedec,spi-nor";
161-
reg = <2>;
162-
spi-max-frequency = <500000>;
163-
};
164-
};
165-
};
166-
167-
// enable flash on spi2.0
168-
fragment@13 {
169-
target = <&spi2>;
170-
__dormant__ {
171-
status = "okay";
172-
#address-cells = <1>;
173-
#size-cells = <0>;
174-
spi_nor_20: spi_nor@0 {
175-
#address-cells = <1>;
176-
#size-cells = <1>;
177-
compatible = "jedec,spi-nor";
178-
reg = <0>;
179-
spi-max-frequency = <500000>;
180-
};
181-
};
182-
};
183-
184-
// enable flash on spi2.1
185-
fragment@14 {
186-
target = <&spi2>;
187-
__dormant__ {
188-
status = "okay";
189-
#address-cells = <1>;
190-
#size-cells = <0>;
191-
spi_nor_21: spi_nor@1 {
192-
#address-cells = <1>;
193-
#size-cells = <1>;
194-
compatible = "jedec,spi-nor";
195-
reg = <1>;
196-
spi-max-frequency = <500000>;
197-
};
198-
};
199-
};
200-
201-
// enable flash on spi2.2
202-
fragment@15 {
203-
target = <&spi2>;
204-
__dormant__ {
205-
status = "okay";
206-
#address-cells = <1>;
207-
#size-cells = <0>;
208-
spi_nor_22: spi_nor@2 {
209-
#address-cells = <1>;
210-
#size-cells = <1>;
211-
compatible = "jedec,spi-nor";
212-
reg = <2>;
213-
spi-max-frequency = <500000>;
214-
};
215-
};
216-
};
217-
218-
// Enable fast read for device on spi0.0.
219-
// Use default active low interrupt signalling.
220-
fragment@16 {
221-
target = <&spi_nor_00>;
222-
__dormant__ {
223-
m25p,fast-read;
224-
};
225-
};
226-
227-
// Enable fast read for device on spi0.1.
228-
// Use default active low interrupt signalling.
229-
fragment@17 {
230-
target = <&spi_nor_01>;
231-
__dormant__ {
232-
m25p,fast-read;
233-
};
234-
};
235-
236-
// Enable fast read for device on spi1.0.
237-
// Use default active low interrupt signalling.
238-
fragment@18 {
239-
target = <&spi_nor_10>;
240-
__dormant__ {
241-
m25p,fast-read;
242-
};
243-
};
244-
245-
// Enable fast read for device on spi1.1.
246-
// Use default active low interrupt signalling.
247-
fragment@19 {
248-
target = <&spi_nor_11>;
249-
__dormant__ {
250-
m25p,fast-read;
251-
};
252-
};
253-
254-
// Enable fast read for device on spi1.2.
255-
// Use default active low interrupt signalling.
256-
fragment@20 {
257-
target = <&spi_nor_12>;
258-
__dormant__ {
259-
m25p,fast-read;
260-
};
261-
};
262-
263-
// Enable fast read for device on spi2.0.
264-
// Use default active low interrupt signalling.
265-
fragment@21 {
266-
target = <&spi_nor_20>;
267-
__dormant__ {
268-
m25p,fast-read;
269-
};
270-
};
271-
272-
// Enable fast read for device on spi2.1.
273-
// Use default active low interrupt signalling.
274-
fragment@22 {
275-
target = <&spi_nor_21>;
276-
__dormant__ {
277-
m25p,fast-read;
278-
};
279-
};
280-
281-
// Enable fast read for device on spi2.2.
282-
// Use default active low interrupt signalling.
283-
fragment@23 {
284-
target = <&spi_nor_22>;
285-
__dormant__ {
286-
m25p,fast-read;
287-
};
288-
};
289-
290107
__overrides__ {
291-
flash-spi0-0 = <0>,"+0+8";
292-
flash-spi0-1 = <0>,"+1+9";
293-
flash-spi1-0 = <0>,"+2+10";
294-
flash-spi1-1 = <0>,"+3+11";
295-
flash-spi1-2 = <0>,"+4+12";
296-
flash-spi2-0 = <0>,"+5+13";
297-
flash-spi2-1 = <0>,"+6+14";
298-
flash-spi2-2 = <0>,"+7+15";
299-
flash-fastr-spi0-0 = <0>,"+0+8+16";
300-
flash-fastr-spi0-1 = <0>,"+1+9+17";
301-
flash-fastr-spi1-0 = <0>,"+2+10+18";
302-
flash-fastr-spi1-1 = <0>,"+3+11+19";
303-
flash-fastr-spi1-2 = <0>,"+4+12+20";
304-
flash-fastr-spi2-0 = <0>,"+5+13+21";
305-
flash-fastr-spi2-1 = <0>,"+6+14+22";
306-
flash-fastr-spi2-2 = <0>,"+7+15+23";
108+
spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
109+
spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
110+
spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
111+
spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
112+
spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
113+
spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
114+
spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
115+
spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
116+
flash-spi0-0 = <0>,"+0", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
117+
flash-spi0-1 = <0>,"+1", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
118+
flash-spi1-0 = <0>,"+2", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
119+
flash-spi1-1 = <0>,"+3", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
120+
flash-spi1-2 = <0>,"+4", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
121+
flash-spi2-0 = <0>,"+5", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
122+
flash-spi2-1 = <0>,"+6", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
123+
flash-spi2-2 = <0>,"+7", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
124+
flash-fastr-spi0-0 = <0>,"+0+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=0";
125+
flash-fastr-spi0-1 = <0>,"+1+8", <&payload>,"target:0=",<&spi0>, <&spi_nor>,"reg:0=1";
126+
flash-fastr-spi1-0 = <0>,"+2+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=0";
127+
flash-fastr-spi1-1 = <0>,"+3+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=1";
128+
flash-fastr-spi1-2 = <0>,"+4+8", <&payload>,"target:0=",<&spi1>, <&spi_nor>,"reg:0=2";
129+
flash-fastr-spi2-0 = <0>,"+5+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=0";
130+
flash-fastr-spi2-1 = <0>,"+6+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=1";
131+
flash-fastr-spi2-2 = <0>,"+7+8", <&payload>,"target:0=",<&spi2>, <&spi_nor>,"reg:0=2";
132+
fastr = <0>,"+8";
133+
speed = <&spi_nor>, "spi-max-frequency:0";
307134
};
308135
};
309136

0 commit comments

Comments
 (0)