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