1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright 2018
4 * Lukasz Majewski, DENX Software Engineering, lukma@denx.de
5 */
6
7/dts-v1/;
8#include "vf610.dtsi"
9
10/ {
11	model = "Liebherr BK4 controller";
12	compatible = "lwn,bk4", "fsl,vf610";
13
14	chosen {
15		stdout-path = &uart1;
16	};
17
18	memory@80000000 {
19		device_type = "memory";
20		reg = <0x80000000 0x8000000>;
21	};
22
23	audio_ext: oscillator-audio {
24		compatible = "fixed-clock";
25		#clock-cells = <0>;
26		clock-frequency = <24576000>;
27	};
28
29	enet_ext: oscillator-ethernet {
30		compatible = "fixed-clock";
31		#clock-cells = <0>;
32		clock-frequency = <50000000>;
33	};
34
35	leds {
36		compatible = "gpio-leds";
37		pinctrl-names = "default";
38		pinctrl-0 = <&pinctrl_gpio_leds>;
39
40		/* LED D5 */
41		led0: heartbeat {
42			label = "heartbeat";
43			gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
44			default-state = "on";
45			linux,default-trigger = "heartbeat";
46		};
47	};
48
49	reg_3p3v: regulator-3p3v {
50		compatible = "regulator-fixed";
51		regulator-name = "3P3V";
52		regulator-min-microvolt = <3300000>;
53		regulator-max-microvolt = <3300000>;
54		regulator-always-on;
55	};
56
57	reg_vcc_3v3_mcu: regulator-vcc3v3mcu {
58		compatible = "regulator-fixed";
59		regulator-name = "vcc_3v3_mcu";
60		regulator-min-microvolt = <3300000>;
61		regulator-max-microvolt = <3300000>;
62	};
63
64	spi-gpio {
65		compatible = "spi-gpio";
66		pinctrl-0 = <&pinctrl_gpio_spi>;
67		pinctrl-names = "default";
68		#address-cells = <1>;
69		#size-cells = <0>;
70		/* PTD12 ->RPIO[91] */
71		sck-gpios  = <&gpio2 27 GPIO_ACTIVE_LOW>;
72		/* PTD10 ->RPIO[89] */
73		miso-gpios = <&gpio2 25 GPIO_ACTIVE_HIGH>;
74		num-chipselects = <0>;
75
76		gpio@0 {
77			compatible = "pisosr-gpio";
78			reg = <0>;
79			gpio-controller;
80			#gpio-cells = <2>;
81			/* PTB18 -> RGPIO[40] */
82			load-gpios  = <&gpio1 8 GPIO_ACTIVE_LOW>;
83			spi-max-frequency = <100000>;
84		};
85	};
86};
87
88&adc0 {
89	vref-supply = <&reg_vcc_3v3_mcu>;
90	status = "okay";
91};
92
93&adc1 {
94	vref-supply = <&reg_vcc_3v3_mcu>;
95	status = "okay";
96};
97
98&can0 {
99	pinctrl-names = "default";
100	pinctrl-0 = <&pinctrl_can0>;
101	status = "okay";
102};
103
104&can1 {
105	pinctrl-names = "default";
106	pinctrl-0 = <&pinctrl_can1>;
107	status = "okay";
108};
109
110&clks {
111	clocks = <&sxosc>, <&fxosc>, <&enet_ext>, <&audio_ext>;
112	clock-names = "sxosc", "fxosc", "enet_ext", "audio_ext";
113};
114
115&dspi0 {
116	pinctrl-names = "default";
117	pinctrl-0 = <&pinctrl_dspi0>;
118	bus-num = <0>;
119	status = "okay";
120
121	spidev0@0 {
122		compatible = "lwn,bk4";
123		spi-max-frequency = <30000000>;
124		reg = <0>;
125		fsl,spi-cs-sck-delay = <200>;
126		fsl,spi-sck-cs-delay = <400>;
127	};
128};
129
130&dspi3 {
131	pinctrl-names = "default";
132	pinctrl-0 = <&pinctrl_dspi3>;
133	bus-num = <3>;
134	status = "okay";
135	spi-slave;
136	#address-cells = <0>;
137
138	slave {
139		compatible = "lwn,bk4";
140		spi-max-frequency = <30000000>;
141	};
142};
143
144&edma0 {
145	status = "okay";
146};
147
148&edma1 {
149	status = "okay";
150};
151
152&esdhc1 {
153	pinctrl-names = "default";
154	pinctrl-0 = <&pinctrl_esdhc1>;
155	bus-width = <4>;
156	cd-gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
157	status = "okay";
158};
159
160&fec0 {
161	phy-mode = "rmii";
162	phy-handle = <&ethphy0>;
163	pinctrl-names = "default";
164	pinctrl-0 = <&pinctrl_fec0>;
165	status = "okay";
166
167	mdio {
168		#address-cells = <1>;
169		#size-cells = <0>;
170
171		ethphy0: ethernet-phy@1 {
172			reg = <1>;
173			clocks = <&clks VF610_CLK_ENET_50M>;
174			clock-names = "rmii-ref";
175		};
176	};
177};
178
179&fec1 {
180	phy-mode = "rmii";
181	phy-handle = <&ethphy1>;
182	pinctrl-names = "default";
183	pinctrl-0 = <&pinctrl_fec1>;
184	status = "okay";
185
186	mdio {
187		#address-cells = <1>;
188		#size-cells = <0>;
189
190		ethphy1: ethernet-phy@1 {
191			reg = <1>;
192			clocks = <&clks VF610_CLK_ENET_50M>;
193			clock-names = "rmii-ref";
194		};
195	};
196};
197
198&i2c2 {
199	clock-frequency = <400000>;
200	pinctrl-names = "default";
201	pinctrl-0 = <&pinctrl_i2c2>;
202	status = "okay";
203
204	at24c256: eeprom@50 {
205		compatible = "atmel,24c256";
206		reg = <0x50>;
207	};
208
209	m41t62: rtc@68 {
210		compatible = "st,m41t62";
211		reg = <0x68>;
212	};
213};
214
215&nfc {
216	assigned-clocks = <&clks VF610_CLK_NFC>;
217	assigned-clock-rates = <33000000>;
218	pinctrl-names = "default";
219	pinctrl-0 = <&pinctrl_nfc>;
220	status = "okay";
221
222	nand@0 {
223		compatible = "fsl,vf610-nfc-nandcs";
224		reg = <0>;
225		#address-cells = <1>;
226		#size-cells = <1>;
227		nand-bus-width = <16>;
228		nand-ecc-mode = "hw";
229		nand-ecc-strength = <24>;
230		nand-ecc-step-size = <2048>;
231		nand-on-flash-bbt;
232	};
233};
234
235&qspi0 {
236	pinctrl-names = "default";
237	pinctrl-0 = <&pinctrl_qspi0>;
238	status = "okay";
239
240	n25q128a13_4: flash@0 {
241		compatible = "n25q128a13", "jedec,spi-nor";
242		#address-cells = <1>;
243		#size-cells = <1>;
244		spi-max-frequency = <66000000>;
245		spi-rx-bus-width = <4>;
246		reg = <0>;
247	};
248
249	n25q128a13_2: flash@2 {
250		compatible = "n25q128a13", "jedec,spi-nor";
251		#address-cells = <1>;
252		#size-cells = <1>;
253		spi-max-frequency = <66000000>;
254		spi-rx-bus-width = <2>;
255		reg = <2>;
256	};
257};
258
259&uart0 {
260	pinctrl-names = "default";
261	pinctrl-0 = <&pinctrl_uart0>;
262	status = "okay";
263};
264
265&uart1 {
266	pinctrl-names = "default";
267	pinctrl-0 = <&pinctrl_uart1>;
268	status = "okay";
269};
270
271&uart2 {
272	pinctrl-names = "default";
273	pinctrl-0 = <&pinctrl_uart2>;
274	status = "okay";
275};
276
277&uart3 {
278	pinctrl-names = "default";
279	pinctrl-0 = <&pinctrl_uart3>;
280	status = "okay";
281};
282
283&usbdev0 {
284	disable-over-current;
285	status = "okay";
286};
287
288&usbh1 {
289	disable-over-current;
290	status = "okay";
291};
292
293&usbmisc0 {
294	status = "okay";
295};
296
297&usbmisc1 {
298	status = "okay";
299};
300
301&usbphy0 {
302	status = "okay";
303};
304
305&usbphy1 {
306	status = "okay";
307};
308
309&iomuxc {
310	pinctrl-names = "default";
311	pinctrl-0 = <&pinctrl_hog>;
312
313	pinctrl_hog: hoggrp {
314		fsl,pins = <
315			/* One_Wire_PSU_EN */
316			VF610_PAD_PTC29__GPIO_102		0x1183
317			/* SPI ENABLE */
318			VF610_PAD_PTB26__GPIO_96		0x1183
319			/* EB control */
320			VF610_PAD_PTE14__GPIO_119		0x1183
321			VF610_PAD_PTE4__GPIO_109		0x1181
322			/* Feedback_Lines */
323			VF610_PAD_PTC31__GPIO_104		0x1181
324			VF610_PAD_PTA7__GPIO_134		0x1181
325			VF610_PAD_PTD9__GPIO_88		0x1181
326			VF610_PAD_PTE1__GPIO_106		0x1183
327			VF610_PAD_PTB2__GPIO_24		0x1181
328			VF610_PAD_PTB3__GPIO_25		0x1181
329			VF610_PAD_PTB1__GPIO_23		0x1181
330			/* SDHC Enable */
331			VF610_PAD_PTE19__GPIO_124		0x1183
332			/* SDHC Overcurrent */
333			VF610_PAD_PTB23__GPIO_93		0x1181
334			/* GPI */
335			VF610_PAD_PTE2__GPIO_107		0x1181
336			VF610_PAD_PTE3__GPIO_108		0x1181
337			VF610_PAD_PTE5__GPIO_110		0x1181
338			VF610_PAD_PTE6__GPIO_111		0x1181
339			/* GPO */
340			VF610_PAD_PTE0__GPIO_105		0x1183
341			VF610_PAD_PTE7__GPIO_112		0x1183
342			/* RS485 Control */
343			VF610_PAD_PTB8__GPIO_30		0x1183
344			VF610_PAD_PTB9__GPIO_31		0x1183
345			VF610_PAD_PTE8__GPIO_113		0x1183
346			/* MPBUS MPB_EN */
347			VF610_PAD_PTE28__GPIO_133		0x1183
348			/* MISC */
349			VF610_PAD_PTE10__GPIO_115		0x1183
350			VF610_PAD_PTE11__GPIO_116		0x1183
351			VF610_PAD_PTE17__GPIO_122		0x1183
352			VF610_PAD_PTC30__GPIO_103		0x1183
353			VF610_PAD_PTB0__GPIO_22		0x1181
354			/* RESETINFO */
355			VF610_PAD_PTE26__GPIO_131		0x1183
356			VF610_PAD_PTD6__GPIO_85		0x1181
357			VF610_PAD_PTE27__GPIO_132		0x1181
358			VF610_PAD_PTE13__GPIO_118		0x1181
359			VF610_PAD_PTE21__GPIO_126		0x1181
360			VF610_PAD_PTE22__GPIO_127		0x1181
361			/* EE_5V_EN */
362			VF610_PAD_PTE18__GPIO_123		0x1183
363			/* EE_5V_OC_N */
364			VF610_PAD_PTE25__GPIO_130		0x1181
365		>;
366	};
367
368	pinctrl_can0: can0grp {
369		fsl,pins = <
370			VF610_PAD_PTB14__CAN0_RX		0x1181
371			VF610_PAD_PTB15__CAN0_TX		0x1182
372		>;
373	};
374
375	pinctrl_can1: can1grp {
376		fsl,pins = <
377			VF610_PAD_PTB16__CAN1_RX		0x1181
378			VF610_PAD_PTB17__CAN1_TX		0x1182
379		>;
380	};
381
382	pinctrl_dspi0: dspi0grp {
383		fsl,pins = <
384			VF610_PAD_PTB18__DSPI0_CS1		0x1182
385			VF610_PAD_PTB19__DSPI0_CS0		0x1182
386			VF610_PAD_PTB20__DSPI0_SIN		0x1181
387			VF610_PAD_PTB21__DSPI0_SOUT		0x1182
388			VF610_PAD_PTB22__DSPI0_SCK		0x1182
389		>;
390	};
391
392	pinctrl_dspi3: dspi3grp {
393		fsl,pins = <
394			VF610_PAD_PTD10__DSPI3_CS0		0x1181
395			VF610_PAD_PTD11__DSPI3_SIN		0x1181
396			VF610_PAD_PTD12__DSPI3_SOUT		0x1182
397			VF610_PAD_PTD13__DSPI3_SCK		0x1181
398		>;
399	};
400
401	pinctrl_esdhc1: esdhc1grp {
402		fsl,pins = <
403			VF610_PAD_PTA24__ESDHC1_CLK		0x31ef
404			VF610_PAD_PTA25__ESDHC1_CMD		0x31ef
405			VF610_PAD_PTA26__ESDHC1_DAT0		0x31ef
406			VF610_PAD_PTA27__ESDHC1_DAT1		0x31ef
407			VF610_PAD_PTA28__ESDHC1_DATA2		0x31ef
408			VF610_PAD_PTA29__ESDHC1_DAT3		0x31ef
409			VF610_PAD_PTB28__GPIO_98		0x219d
410		>;
411	};
412
413	pinctrl_fec0: fec0grp {
414		fsl,pins = <
415			VF610_PAD_PTA6__RMII_CLKIN		0x30dd
416			VF610_PAD_PTC0__ENET_RMII0_MDC		0x30de
417			VF610_PAD_PTC1__ENET_RMII0_MDIO	0x30df
418			VF610_PAD_PTC2__ENET_RMII0_CRS		0x30dd
419			VF610_PAD_PTC3__ENET_RMII0_RXD1	0x30dd
420			VF610_PAD_PTC4__ENET_RMII0_RXD0	0x30dd
421			VF610_PAD_PTC5__ENET_RMII0_RXER	0x30dd
422			VF610_PAD_PTC6__ENET_RMII0_TXD1	0x30de
423			VF610_PAD_PTC7__ENET_RMII0_TXD0	0x30de
424			VF610_PAD_PTC8__ENET_RMII0_TXEN	0x30de
425		>;
426	};
427
428	pinctrl_fec1: fec1grp {
429		fsl,pins = <
430			VF610_PAD_PTC9__ENET_RMII1_MDC		0x30de
431			VF610_PAD_PTC10__ENET_RMII1_MDIO	0x30df
432			VF610_PAD_PTC11__ENET_RMII1_CRS	0x30dd
433			VF610_PAD_PTC12__ENET_RMII1_RXD1	0x30dd
434			VF610_PAD_PTC13__ENET_RMII1_RXD0	0x30dd
435			VF610_PAD_PTC14__ENET_RMII1_RXER	0x30dd
436			VF610_PAD_PTC15__ENET_RMII1_TXD1	0x30de
437			VF610_PAD_PTC16__ENET_RMII1_TXD0	0x30de
438			VF610_PAD_PTC17__ENET_RMII1_TXEN	0x30de
439		>;
440	};
441
442	pinctrl_gpio_leds: gpioledsgrp {
443		fsl,pins = <
444			/* Heart bit LED */
445			VF610_PAD_PTE12__GPIO_117	0x1183
446			/* LEDS */
447			VF610_PAD_PTE15__GPIO_120	0x1183
448			VF610_PAD_PTA12__GPIO_5	0x1183
449			VF610_PAD_PTA16__GPIO_6	0x1183
450			VF610_PAD_PTE9__GPIO_114	0x1183
451			VF610_PAD_PTE20__GPIO_125	0x1183
452			VF610_PAD_PTE23__GPIO_128	0x1183
453			VF610_PAD_PTE16__GPIO_121	0x1183
454		>;
455	};
456
457	pinctrl_gpio_spi: pinctrl-gpio-spi {
458		fsl,pins = <
459			VF610_PAD_PTB18__GPIO_40        0x1183
460			VF610_PAD_PTD10__GPIO_89        0x1183
461			VF610_PAD_PTD12__GPIO_91        0x1183
462		>;
463	};
464
465	pinctrl_i2c2: i2c2grp {
466		fsl,pins = <
467			VF610_PAD_PTA22__I2C2_SCL               0x34df
468			VF610_PAD_PTA23__I2C2_SDA               0x34df
469		>;
470	};
471
472	pinctrl_nfc: nfcgrp {
473		fsl,pins = <
474			VF610_PAD_PTD23__NF_IO7		0x28df
475			VF610_PAD_PTD22__NF_IO6		0x28df
476			VF610_PAD_PTD21__NF_IO5		0x28df
477			VF610_PAD_PTD20__NF_IO4		0x28df
478			VF610_PAD_PTD19__NF_IO3		0x28df
479			VF610_PAD_PTD18__NF_IO2		0x28df
480			VF610_PAD_PTD17__NF_IO1		0x28df
481			VF610_PAD_PTD16__NF_IO0		0x28df
482			VF610_PAD_PTB24__NF_WE_B		0x28c2
483			VF610_PAD_PTB25__NF_CE0_B		0x28c2
484			VF610_PAD_PTB27__NF_RE_B		0x28c2
485			VF610_PAD_PTC26__NF_RB_B		0x283d
486			VF610_PAD_PTC27__NF_ALE		0x28c2
487			VF610_PAD_PTC28__NF_CLE		0x28c2
488		>;
489	};
490
491	pinctrl_qspi0: qspi0grp {
492		fsl,pins = <
493			VF610_PAD_PTD0__QSPI0_A_QSCK	0x397f
494			VF610_PAD_PTD1__QSPI0_A_CS0	0x397f
495			VF610_PAD_PTD2__QSPI0_A_DATA3	0x397f
496			VF610_PAD_PTD3__QSPI0_A_DATA2	0x397f
497			VF610_PAD_PTD4__QSPI0_A_DATA1	0x397f
498			VF610_PAD_PTD5__QSPI0_A_DATA0	0x397f
499			VF610_PAD_PTD7__QSPI0_B_QSCK	0x397f
500			VF610_PAD_PTD8__QSPI0_B_CS0	0x397f
501			VF610_PAD_PTD11__QSPI0_B_DATA1	0x397f
502			VF610_PAD_PTD12__QSPI0_B_DATA0	0x397f
503		>;
504	};
505
506	pinctrl_uart0: uart0grp {
507		fsl,pins = <
508			VF610_PAD_PTB10__UART0_TX		0x21a2
509			VF610_PAD_PTB11__UART0_RX		0x21a1
510		>;
511	};
512
513	pinctrl_uart1: uart1grp {
514		fsl,pins = <
515			VF610_PAD_PTB4__UART1_TX		0x21a2
516			VF610_PAD_PTB5__UART1_RX		0x21a1
517		>;
518	};
519
520	pinctrl_uart2: uart2grp {
521		fsl,pins = <
522			VF610_PAD_PTB6__UART2_TX		0x21a2
523			VF610_PAD_PTB7__UART2_RX		0x21a1
524		>;
525	};
526
527	pinctrl_uart3: uart3grp {
528		fsl,pins = <
529			VF610_PAD_PTA20__UART3_TX		0x21a2
530			VF610_PAD_PTA21__UART3_RX		0x21a1
531		>;
532	};
533};
534