1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Device Tree file for the Kontron SMARC-sAL28 board.
4 *
5 * Copyright (C) 2021 Michael Walle <michael@walle.cc>
6 *
7 */
8
9/dts-v1/;
10#include "fsl-ls1028a.dtsi"
11#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/input/input.h>
14
15/ {
16	model = "Kontron SMARC-sAL28";
17	compatible = "kontron,sl28", "fsl,ls1028a";
18
19	aliases {
20		crypto = &crypto;
21		serial0 = &duart0;
22		serial1 = &duart1;
23		serial2 = &lpuart1;
24		spi0 = &fspi;
25		spi1 = &dspi2;
26		mmc0 = &esdhc1;
27		mmc1 = &esdhc;
28		rtc0 = &rtc;
29		rtc1 = &ftm_alarm0;
30	};
31
32	buttons0 {
33		compatible = "gpio-keys";
34
35		power-button {
36			interrupts-extended = <&sl28cpld_intc
37					       4 IRQ_TYPE_EDGE_BOTH>;
38			linux,code = <KEY_POWER>;
39			label = "Power";
40		};
41
42		sleep-button {
43			interrupts-extended = <&sl28cpld_intc
44					       5 IRQ_TYPE_EDGE_BOTH>;
45			linux,code = <KEY_SLEEP>;
46			label = "Sleep";
47		};
48	};
49
50	buttons1 {
51		compatible = "gpio-keys-polled";
52		poll-interval = <200>;
53
54		lid-switch {
55			linux,input-type = <EV_SW>;
56			linux,code = <SW_LID>;
57			gpios = <&sl28cpld_gpio3 4 GPIO_ACTIVE_LOW>;
58			label = "Lid";
59		};
60	};
61
62	chosen {
63		stdout-path = "serial0:115200n8";
64	};
65};
66
67&can0 {
68	status = "okay";
69};
70
71&dspi2 {
72	status = "okay";
73};
74
75&duart0 {
76	status = "okay";
77};
78
79&duart1 {
80	status = "okay";
81};
82
83&enetc_mdio_pf3 {
84	phy0: ethernet-phy@5 {
85		reg = <0x5>;
86		eee-broken-1000t;
87		eee-broken-100tx;
88	};
89};
90
91&enetc_port0 {
92	phy-handle = <&phy0>;
93	phy-mode = "sgmii";
94	managed = "in-band-status";
95	status = "okay";
96};
97
98&esdhc {
99	sd-uhs-sdr104;
100	sd-uhs-sdr50;
101	sd-uhs-sdr25;
102	sd-uhs-sdr12;
103	status = "okay";
104};
105
106&esdhc1 {
107	mmc-hs200-1_8v;
108	mmc-hs400-1_8v;
109	bus-width = <8>;
110	status = "okay";
111};
112
113&fspi {
114	status = "okay";
115
116	flash@0 {
117		compatible = "jedec,spi-nor";
118		m25p,fast-read;
119		spi-max-frequency = <133000000>;
120		reg = <0>;
121		/* The following setting enables 1-1-2 (CMD-ADDR-DATA) mode */
122		spi-rx-bus-width = <2>; /* 2 SPI Rx lines */
123		spi-tx-bus-width = <1>; /* 1 SPI Tx line */
124
125		partitions {
126			compatible = "fixed-partitions";
127			#address-cells = <1>;
128			#size-cells = <1>;
129
130			partition@0 {
131				reg = <0x000000 0x010000>;
132				label = "rcw";
133				read-only;
134			};
135
136			partition@10000 {
137				reg = <0x010000 0x1d0000>;
138				label = "failsafe bootloader";
139				read-only;
140			};
141
142			partition@200000 {
143				reg = <0x200000 0x010000>;
144				label = "configuration store";
145			};
146
147			partition@210000 {
148				reg = <0x210000 0x1d0000>;
149				label = "bootloader";
150			};
151
152			partition@3e0000 {
153				reg = <0x3e0000 0x020000>;
154				label = "bootloader environment";
155			};
156		};
157	};
158};
159
160&gpio1 {
161	gpio-line-names =
162		"", "", "", "", "", "", "", "",
163		"", "", "", "", "", "", "", "",
164		"", "", "", "", "", "", "TDO", "TCK",
165		"", "", "", "", "", "", "", "";
166};
167
168&gpio2 {
169	gpio-line-names =
170		"", "", "", "", "", "", "TMS", "TDI",
171		"", "", "", "", "", "", "", "",
172		"", "", "", "", "", "", "", "",
173		"", "", "", "", "", "", "", "";
174};
175
176&i2c0 {
177	status = "okay";
178
179	rtc: rtc@32 {
180		compatible = "microcrystal,rv8803";
181		reg = <0x32>;
182	};
183
184	sl28cpld@4a {
185		compatible = "kontron,sl28cpld";
186		reg = <0x4a>;
187		#address-cells = <1>;
188		#size-cells = <0>;
189
190		watchdog@4 {
191			compatible = "kontron,sl28cpld-wdt";
192			reg = <0x4>;
193			kontron,assert-wdt-timeout-pin;
194		};
195
196		hwmon@b {
197			compatible = "kontron,sl28cpld-fan";
198			reg = <0xb>;
199		};
200
201		sl28cpld_pwm0: pwm@c {
202			compatible = "kontron,sl28cpld-pwm";
203			reg = <0xc>;
204			#pwm-cells = <2>;
205		};
206
207		sl28cpld_pwm1: pwm@e {
208			compatible = "kontron,sl28cpld-pwm";
209			reg = <0xe>;
210			#pwm-cells = <2>;
211		};
212
213		sl28cpld_gpio0: gpio@10 {
214			compatible = "kontron,sl28cpld-gpio";
215			reg = <0x10>;
216			interrupts-extended = <&gpio2 6
217					       IRQ_TYPE_EDGE_FALLING>;
218
219			gpio-controller;
220			#gpio-cells = <2>;
221			gpio-line-names =
222				"GPIO0_CAM0_PWR_N", "GPIO1_CAM1_PWR_N",
223				"GPIO2_CAM0_RST_N", "GPIO3_CAM1_RST_N",
224				"GPIO4_HDA_RST_N", "GPIO5_PWM_OUT",
225				"GPIO6_TACHIN", "GPIO7";
226
227			interrupt-controller;
228			#interrupt-cells = <2>;
229		};
230
231		sl28cpld_gpio1: gpio@15 {
232			compatible = "kontron,sl28cpld-gpio";
233			reg = <0x15>;
234			interrupts-extended = <&gpio2 6
235					       IRQ_TYPE_EDGE_FALLING>;
236
237			gpio-controller;
238			#gpio-cells = <2>;
239			gpio-line-names =
240				"GPIO8", "GPIO9", "GPIO10", "GPIO11",
241				"", "", "", "";
242
243			interrupt-controller;
244			#interrupt-cells = <2>;
245		};
246
247		sl28cpld_gpio2: gpio@1a {
248			compatible = "kontron,sl28cpld-gpo";
249			reg = <0x1a>;
250
251			gpio-controller;
252			#gpio-cells = <2>;
253			gpio-line-names =
254				"LCD0 voltage enable",
255				"LCD0 backlight enable",
256				"eMMC reset", "LVDS bridge reset",
257				"LVDS bridge power-down",
258				"SDIO power enable",
259				"", "";
260		};
261
262		sl28cpld_gpio3: gpio@1b {
263			compatible = "kontron,sl28cpld-gpi";
264			reg = <0x1b>;
265
266			gpio-controller;
267			#gpio-cells = <2>;
268			gpio-line-names =
269				"Power button", "Force recovery", "Sleep",
270				"Battery low", "Lid state", "Charging",
271				"Charger present", "";
272		};
273
274		sl28cpld_intc: interrupt-controller@1c {
275			compatible = "kontron,sl28cpld-intc";
276			reg = <0x1c>;
277			interrupts-extended = <&gpio2 6
278					       IRQ_TYPE_EDGE_FALLING>;
279
280			interrupt-controller;
281			#interrupt-cells = <2>;
282		};
283	};
284
285	eeprom@50 {
286		compatible = "atmel,24c32";
287		reg = <0x50>;
288		pagesize = <32>;
289	};
290};
291
292&i2c3 {
293	status = "okay";
294};
295
296&i2c4 {
297	status = "okay";
298
299	eeprom@50 {
300		compatible = "atmel,24c32";
301		reg = <0x50>;
302		pagesize = <32>;
303	};
304};
305
306&lpuart1 {
307	status = "okay";
308};
309
310&usb0 {
311	status = "okay";
312};
313
314&usb1 {
315	status = "okay";
316};
317