1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Device Tree Source for the MPC5121e based ac14xx board
4 *
5 * Copyright 2012 Anatolij Gustschin <agust@denx.de>
6 */
7
8
9#include "mpc5121.dtsi"
10
11/ {
12	model = "ac14xx";
13	compatible = "ifm,ac14xx", "fsl,mpc5121";
14	#address-cells = <1>;
15	#size-cells = <1>;
16
17	aliases {
18		serial0 = &serial0;
19		serial1 = &serial7;
20		spi4 = &spi4;
21		spi5 = &spi5;
22	};
23
24	cpus {
25		PowerPC,5121@0 {
26			timebase-frequency = <40000000>;	/*  40 MHz (csb/4) */
27			bus-frequency = <160000000>;		/* 160 MHz csb bus */
28			clock-frequency = <400000000>;		/* 400 MHz ppc core */
29		};
30	};
31
32	memory {
33		reg = <0x00000000 0x10000000>;			/* 256MB at 0 */
34	};
35
36	nfc@40000000 {
37		status = "disabled";
38	};
39
40	localbus@80000020 {
41		ranges = <0x0 0x0 0xfc000000 0x04000000	/* CS0: NOR flash */
42			  0x1 0x0 0xe0000000 0x00010000 /* CS1: FRAM */
43			  0x2 0x0 0xe0100000 0x00080000 /* CS2: asi1 */
44			  0x3 0x0 0xe0300000 0x00020000 /* CS3: comm */
45			  0x5 0x0 0xe0400000 0x00010000 /* CS5: safety */
46			  0x6 0x0 0xe0200000 0x00080000>; /* CS6: asi2 */
47
48		flash@0,0 {
49			compatible = "cfi-flash";
50			reg = <0 0x00000000 0x04000000>;
51			#address-cells = <1>;
52			#size-cells = <1>;
53			bank-width = <2>;
54			device-width = <2>;
55
56			partition@0 {
57				label = "dtb-kernel-production";
58				reg = <0x00000000 0x00400000>;
59			};
60			partition@1 {
61				label = "filesystem-production";
62				reg = <0x00400000 0x03400000>;
63			};
64
65			partition@2 {
66				label = "recovery";
67				reg = <0x03800000 0x00700000>;
68			};
69
70			partition@3 {
71				label = "uboot-code";
72				reg = <0x03f00000 0x00040000>;
73			};
74			partition@4 {
75				label = "uboot-env1";
76				reg = <0x03f40000 0x00020000>;
77			};
78			partition@5 {
79				label = "uboot-env2";
80				reg = <0x03f60000 0x00020000>;
81			};
82		};
83
84		fram@1,0 {
85			compatible = "ifm,ac14xx-fram", "linux,uio-pdrv-genirq";
86			reg = <1 0x00000000 0x00010000>;
87		};
88
89		asi@2,0 {
90			/* masters mapping: CS, CS offset, size */
91			reg = <2 0x00000000 0x00080000
92			       6 0x00000000 0x00080000>;
93			#address-cells = <1>;
94			#size-cells = <1>;
95			compatible = "ifm,ac14xx-asi-fpga";
96			gpios = <
97				&gpio_pic 26 0	/* prog */
98				&gpio_pic 27 0	/* done */
99				&gpio_pic 10 0	/* reset */
100				>;
101
102			master@1 {
103				interrupts = <20 0x2>;
104				interrupt-parent = <&gpio_pic>;
105				chipselect = <2 0x00009000 0x00009100>;
106				label = "AS-i master 1";
107			};
108
109			master@2 {
110				interrupts = <21 0x2>;
111				interrupt-parent = <&gpio_pic>;
112				chipselect = <6 0x00009000 0x00009100>;
113				label = "AS-i master 2";
114			};
115		};
116
117		netx@3,0 {
118			compatible = "ifm,netx";
119			reg = <0x3 0x00000000 0x00020000>;
120			chipselect = <3 0x00101140 0x00203100>;
121			interrupts = <17 0x8>;
122			gpios = <&gpio_pic 15 0>;
123		};
124
125		safety@5,0 {
126			compatible = "ifm,safety";
127			reg = <0x5 0x00000000 0x00010000>;
128			chipselect = <5 0x00009000 0x00009100>;
129			interrupts = <22 0x2>;
130			interrupt-parent = <&gpio_pic>;
131			gpios = <
132				&gpio_pic 12 0	/* prog */
133				&gpio_pic 11 0	/* done */
134				>;
135		};
136	};
137
138	clocks {
139		osc {
140			clock-frequency = <25000000>;
141		};
142	};
143
144	soc@80000000 {
145		bus-frequency = <80000000>;	/* 80 MHz ips bus */
146
147		clock@f00 {
148			compatible = "fsl,mpc5121rev2-clock", "fsl,mpc5121-clock";
149		};
150
151		/*
152		 * GPIO PIC:
153		 * interrupts cell = <pin nr, sense>
154		 * sense == 8: Level, low assertion
155		 * sense == 2: Edge, high-to-low change
156		 */
157		gpio_pic: gpio@1100 {
158			gpio-controller;
159			#gpio-cells = <2>;
160			interrupt-controller;
161			#interrupt-cells = <2>;
162		};
163
164		sdhc@1500 {
165			cd-gpios = <&gpio_pic 23 0>;	/* card detect */
166			wp-gpios = <&gpio_pic 24 0>;	/* write protect */
167			wp-inverted;			/* WP active high */
168		};
169
170		i2c@1700 {
171			/* use Fast-mode */
172			clock-frequency = <400000>;
173
174			at24@30 {
175				compatible = "atmel,24c01";
176				reg = <0x30>;
177			};
178
179			at24@31 {
180				compatible = "atmel,24c01";
181				reg = <0x31>;
182			};
183
184			temp@48 {
185				compatible = "ad,ad7414";
186				reg = <0x48>;
187			};
188
189			at24@50 {
190				compatible = "atmel,24c01";
191				reg = <0x50>;
192			};
193
194			at24@51 {
195				compatible = "atmel,24c01";
196				reg = <0x51>;
197			};
198
199			at24@52 {
200				compatible = "atmel,24c01";
201				reg = <0x52>;
202			};
203
204			at24@53 {
205				compatible = "atmel,24c01";
206				reg = <0x53>;
207			};
208
209			at24@54 {
210				compatible = "atmel,24c01";
211				reg = <0x54>;
212			};
213
214			at24@55 {
215				compatible = "atmel,24c01";
216				reg = <0x55>;
217			};
218
219			at24@56 {
220				compatible = "atmel,24c01";
221				reg = <0x56>;
222			};
223
224			at24@57 {
225				compatible = "atmel,24c01";
226				reg = <0x57>;
227			};
228
229			rtc@68 {
230				compatible = "st,m41t00";
231				reg = <0x68>;
232			};
233		};
234
235		axe_pic: axe-base@2000 {
236			compatible = "fsl,mpc5121-axe-base";
237			reg = <0x2000 0x100>;
238			interrupts = <42 0x8>;
239			interrupt-controller;
240			#interrupt-cells = <2>;
241		};
242
243		axe-app {
244			compatible = "fsl,mpc5121-axe-app";
245			interrupt-parent = <&axe_pic>;
246			interrupts = <
247					/* soft interrupts */
248					0 0x0	1 0x0	2 0x0	3 0x0
249					4 0x0	5 0x0	6 0x0	7 0x0
250					/* fifo interrupts */
251					8 0x0	9 0x0	10 0x0	11 0x0
252				>;
253		};
254
255		display@2100 {
256			edid = [00 FF FF FF FF FF FF 00 14 94 00 00 00 00 00 00
257				0A 12 01 03 80 1C 23 78 CA 88 FF 94 52 54 8E 27
258				1E 4C 50 00 00 00 01 01 01 01 01 01 01 01 01 01
259				01 01 01 01 01 01 FB 00 B0 14 00 DC 05 00 08 04
260				21 00 1C 23 00 00 00 18 00 00 00 FD 00 38 3C 1F
261				3C 01 0A 20 20 20 20 20 20 20 00 00 00 FC 00 45
262				54 30 31 38 30 30 33 44 4D 55 0A 0A 00 00 00 10
263				00 41 30 30 30 30 30 30 30 30 30 30 30 31 00 D5];
264		};
265
266		can@2300 {
267			status = "disabled";
268		};
269
270		can@2380 {
271			status = "disabled";
272		};
273
274		viu@2400 {
275			status = "disabled";
276		};
277
278		mdio@2800 {
279			phy0: ethernet-phy@1f {
280				compatible = "smsc,lan8700";
281				reg = <0x1f>;
282			};
283		};
284
285		enet: ethernet@2800 {
286			phy-handle = <&phy0>;
287		};
288
289		usb@3000 {
290			status = "disabled";
291		};
292
293		usb@4000 {
294			status = "disabled";
295		};
296
297		/* PSC3 serial port A, aka ttyPSC0 */
298		serial0: psc@11300 {
299			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
300			fsl,rx-fifo-size = <512>;
301			fsl,tx-fifo-size = <512>;
302		};
303
304		/* PSC4 in SPI mode */
305		spi4: psc@11400 {
306			compatible = "fsl,mpc5121-psc-spi", "fsl,mpc5121-psc";
307			fsl,rx-fifo-size = <768>;
308			fsl,tx-fifo-size = <768>;
309			#address-cells = <1>;
310			#size-cells = <0>;
311			num-cs = <1>;
312			cs-gpios = <&gpio_pic 25 0>;
313
314			flash: m25p128@0 {
315				compatible = "st,m25p128";
316				spi-max-frequency = <20000000>;
317				reg = <0>;
318				#address-cells = <1>;
319				#size-cells = <1>;
320
321				partition@0 {
322					label = "spi-flash0";
323					reg = <0x00000000 0x01000000>;
324				};
325			};
326		};
327
328		/* PSC5 in SPI mode */
329		spi5: psc@11500 {
330			compatible = "fsl,mpc5121-psc-spi", "fsl,mpc5121-psc";
331			fsl,mode = "spi-master";
332			fsl,rx-fifo-size = <128>;
333			fsl,tx-fifo-size = <128>;
334			#address-cells = <1>;
335			#size-cells = <0>;
336
337			lcd@0 {
338				compatible = "ilitek,ili922x";
339				reg = <0>;
340				spi-max-frequency = <100000>;
341				spi-cpol;
342				spi-cpha;
343			};
344		};
345
346		/* PSC7 serial port C, aka ttyPSC2 */
347		serial7: psc@11700 {
348			compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
349			fsl,rx-fifo-size = <512>;
350			fsl,tx-fifo-size = <512>;
351		};
352
353		matrix_keypad@0 {
354			compatible = "gpio-matrix-keypad";
355			debounce-delay-ms = <5>;
356			col-scan-delay-us = <1>;
357			gpio-activelow;
358			col-gpios-binary;
359			col-switch-delay-ms = <200>;
360
361			col-gpios = <&gpio_pic 1 0>;	/* pin1 */
362
363			row-gpios = <&gpio_pic 2 0	/* pin2 */
364				     &gpio_pic 3 0	/* pin3 */
365				     &gpio_pic 4 0>;	/* pin4 */
366
367			linux,keymap = <0x0000006e	/* FN LEFT */
368					0x01000067	/* UP */
369					0x02000066	/* FN RIGHT */
370					0x00010069	/* LEFT */
371					0x0101006a	/* DOWN */
372					0x0201006c>;	/* RIGHT */
373		};
374	};
375
376	leds {
377		compatible = "gpio-leds";
378
379		backlight {
380			label = "backlight";
381			gpios = <&gpio_pic 0 0>;
382			default-state = "keep";
383		};
384		green {
385			label = "green";
386			gpios = <&gpio_pic 18 0>;
387			default-state = "keep";
388		};
389		red {
390			label = "red";
391			gpios = <&gpio_pic 19 0>;
392			default-state = "keep";
393		};
394	};
395};
396