Linux 6.7-rc7
[linux-modified.git] / arch / arm64 / boot / dts / freescale / fsl-ls1028a-kontron-sl28.dts
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         nvmem-cells = <&base_mac_address 0>;
96         nvmem-cell-names = "mac-address";
97         status = "okay";
98 };
99
100 &esdhc {
101         sd-uhs-sdr104;
102         sd-uhs-sdr50;
103         sd-uhs-sdr25;
104         sd-uhs-sdr12;
105         status = "okay";
106 };
107
108 &esdhc1 {
109         mmc-hs200-1_8v;
110         mmc-hs400-1_8v;
111         bus-width = <8>;
112         status = "okay";
113 };
114
115 &fspi {
116         status = "okay";
117
118         flash@0 {
119                 compatible = "jedec,spi-nor";
120                 m25p,fast-read;
121                 spi-max-frequency = <133000000>;
122                 reg = <0>;
123                 /* The following setting enables 1-1-2 (CMD-ADDR-DATA) mode */
124                 spi-rx-bus-width = <2>; /* 2 SPI Rx lines */
125                 spi-tx-bus-width = <1>; /* 1 SPI Tx line */
126
127                 partitions {
128                         compatible = "fixed-partitions";
129                         #address-cells = <1>;
130                         #size-cells = <1>;
131
132                         partition@0 {
133                                 reg = <0x000000 0x010000>;
134                                 label = "rcw";
135                                 read-only;
136                         };
137
138                         partition@10000 {
139                                 reg = <0x010000 0x1d0000>;
140                                 label = "failsafe bootloader";
141                                 read-only;
142                         };
143
144                         partition@200000 {
145                                 reg = <0x200000 0x010000>;
146                                 label = "configuration store";
147                         };
148
149                         partition@210000 {
150                                 reg = <0x210000 0x1d0000>;
151                                 label = "bootloader";
152                         };
153
154                         partition@3e0000 {
155                                 reg = <0x3e0000 0x020000>;
156                                 label = "bootloader environment";
157                         };
158                 };
159
160                 otp-1 {
161                         compatible = "user-otp";
162
163                         nvmem-layout {
164                                 compatible = "kontron,sl28-vpd";
165
166                                 serial_number: serial-number {
167                                 };
168
169                                 base_mac_address: base-mac-address {
170                                         #nvmem-cell-cells = <1>;
171                                 };
172                         };
173                 };
174         };
175 };
176
177 &ftm_alarm0 {
178         status = "okay";
179 };
180
181 &gpio1 {
182         gpio-line-names =
183                 "", "", "", "", "", "", "", "",
184                 "", "", "", "", "", "", "", "",
185                 "", "", "", "", "", "", "TDO", "TCK",
186                 "", "", "", "", "", "", "", "";
187 };
188
189 &gpio2 {
190         gpio-line-names =
191                 "", "", "", "", "", "", "TMS", "TDI",
192                 "", "", "", "", "", "", "", "",
193                 "", "", "", "", "", "", "", "",
194                 "", "", "", "", "", "", "", "";
195 };
196
197 &i2c0 {
198         status = "okay";
199
200         rtc: rtc@32 {
201                 compatible = "microcrystal,rv8803";
202                 reg = <0x32>;
203         };
204
205         sl28cpld@4a {
206                 compatible = "kontron,sl28cpld";
207                 reg = <0x4a>;
208                 #address-cells = <1>;
209                 #size-cells = <0>;
210
211                 watchdog@4 {
212                         compatible = "kontron,sl28cpld-wdt";
213                         reg = <0x4>;
214                         kontron,assert-wdt-timeout-pin;
215                 };
216
217                 hwmon@b {
218                         compatible = "kontron,sl28cpld-fan";
219                         reg = <0xb>;
220                 };
221
222                 sl28cpld_pwm0: pwm@c {
223                         compatible = "kontron,sl28cpld-pwm";
224                         reg = <0xc>;
225                         #pwm-cells = <2>;
226                 };
227
228                 sl28cpld_pwm1: pwm@e {
229                         compatible = "kontron,sl28cpld-pwm";
230                         reg = <0xe>;
231                         #pwm-cells = <2>;
232                 };
233
234                 sl28cpld_gpio0: gpio@10 {
235                         compatible = "kontron,sl28cpld-gpio";
236                         reg = <0x10>;
237                         interrupts-extended = <&gpio2 6
238                                                IRQ_TYPE_EDGE_FALLING>;
239
240                         gpio-controller;
241                         #gpio-cells = <2>;
242                         gpio-line-names =
243                                 "GPIO0_CAM0_PWR_N", "GPIO1_CAM1_PWR_N",
244                                 "GPIO2_CAM0_RST_N", "GPIO3_CAM1_RST_N",
245                                 "GPIO4_HDA_RST_N", "GPIO5_PWM_OUT",
246                                 "GPIO6_TACHIN", "GPIO7";
247
248                         interrupt-controller;
249                         #interrupt-cells = <2>;
250                 };
251
252                 sl28cpld_gpio1: gpio@15 {
253                         compatible = "kontron,sl28cpld-gpio";
254                         reg = <0x15>;
255                         interrupts-extended = <&gpio2 6
256                                                IRQ_TYPE_EDGE_FALLING>;
257
258                         gpio-controller;
259                         #gpio-cells = <2>;
260                         gpio-line-names =
261                                 "GPIO8", "GPIO9", "GPIO10", "GPIO11",
262                                 "", "", "", "";
263
264                         interrupt-controller;
265                         #interrupt-cells = <2>;
266                 };
267
268                 sl28cpld_gpio2: gpio@1a {
269                         compatible = "kontron,sl28cpld-gpo";
270                         reg = <0x1a>;
271
272                         gpio-controller;
273                         #gpio-cells = <2>;
274                         gpio-line-names =
275                                 "LCD0 voltage enable",
276                                 "LCD0 backlight enable",
277                                 "eMMC reset", "LVDS bridge reset",
278                                 "LVDS bridge power-down",
279                                 "SDIO power enable",
280                                 "", "";
281                 };
282
283                 sl28cpld_gpio3: gpio@1b {
284                         compatible = "kontron,sl28cpld-gpi";
285                         reg = <0x1b>;
286
287                         gpio-controller;
288                         #gpio-cells = <2>;
289                         gpio-line-names =
290                                 "Power button", "Force recovery", "Sleep",
291                                 "Battery low", "Lid state", "Charging",
292                                 "Charger present", "";
293                 };
294
295                 sl28cpld_intc: interrupt-controller@1c {
296                         compatible = "kontron,sl28cpld-intc";
297                         reg = <0x1c>;
298                         interrupts-extended = <&gpio2 6
299                                                IRQ_TYPE_EDGE_FALLING>;
300
301                         interrupt-controller;
302                         #interrupt-cells = <2>;
303                 };
304         };
305
306         eeprom@50 {
307                 compatible = "atmel,24c32";
308                 reg = <0x50>;
309                 pagesize = <32>;
310         };
311 };
312
313 &i2c3 {
314         status = "okay";
315 };
316
317 &i2c4 {
318         status = "okay";
319
320         eeprom@50 {
321                 compatible = "atmel,24c32";
322                 reg = <0x50>;
323                 pagesize = <32>;
324         };
325 };
326
327 &lpuart1 {
328         status = "okay";
329 };
330
331 &mscc_felix_port4 {
332         dsa-tag-protocol = "ocelot-8021q";
333 };
334
335 &mscc_felix_port5 {
336         dsa-tag-protocol = "ocelot-8021q";
337 };
338
339 &usb0 {
340         status = "okay";
341 };
342
343 &usb1 {
344         dr_mode = "host";
345         status = "okay";
346 };