ef6c8967533efa45216dde21fe07063507d5b2fb
[platform/kernel/linux-starfive.git] / arch / arm64 / boot / dts / freescale / fsl-ls1088a-ten64.dts
1 // SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2 /*
3  * Device Tree file for Travese Ten64 (LS1088) board
4  * Based on fsl-ls1088a-rdb.dts
5  * Copyright 2017-2020 NXP
6  * Copyright 2019-2021 Traverse Technologies
7  *
8  * Author: Mathew McBride <matt@traverse.com.au>
9  */
10
11 /dts-v1/;
12
13 #include "fsl-ls1088a.dtsi"
14
15 #include <dt-bindings/gpio/gpio.h>
16 #include <dt-bindings/input/input.h>
17
18 / {
19         model = "Traverse Ten64";
20         compatible = "traverse,ten64", "fsl,ls1088a";
21
22         aliases {
23                 serial0 = &duart0;
24                 serial1 = &duart1;
25         };
26
27         chosen {
28                 stdout-path = "serial0:115200n8";
29         };
30
31         buttons {
32                 compatible = "gpio-keys";
33
34                 /* Fired by system controller when
35                  * external power off (e.g ATX Power Button)
36                  * asserted
37                  */
38                 button-powerdn {
39                         label = "External Power Down";
40                         gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
41                         linux,code = <KEY_POWER>;
42                 };
43
44                 /* Rear Panel 'ADMIN' button (GPIO_H) */
45                 button-admin {
46                         label = "ADMIN button";
47                         gpios = <&gpio3 8 GPIO_ACTIVE_HIGH>;
48                         linux,code = <KEY_WPS_BUTTON>;
49                 };
50         };
51
52         leds {
53                 compatible = "gpio-leds";
54
55                 led-0 {
56                         label = "ten64:green:sfp1:down";
57                         gpios = <&gpio3 11 GPIO_ACTIVE_HIGH>;
58                 };
59
60                 led-1 {
61                         label = "ten64:green:sfp2:up";
62                         gpios = <&gpio3 12 GPIO_ACTIVE_HIGH>;
63                 };
64
65                 led-2 {
66                         label = "ten64:admin";
67                         gpios = <&sfpgpio 12 GPIO_ACTIVE_HIGH>;
68                 };
69         };
70
71         sfp_xg0: dpmac2-sfp {
72                 compatible = "sff,sfp";
73                 i2c-bus = <&sfplower_i2c>;
74                 tx-fault-gpios = <&sfpgpio 0 GPIO_ACTIVE_HIGH>;
75                 tx-disable-gpios = <&sfpgpio 1 GPIO_ACTIVE_HIGH>;
76                 mod-def0-gpios = <&sfpgpio 2 GPIO_ACTIVE_LOW>;
77                 los-gpios = <&sfpgpio 3 GPIO_ACTIVE_HIGH>;
78                 maximum-power-milliwatt = <2000>;
79         };
80
81         sfp_xg1: dpmac1-sfp {
82                 compatible = "sff,sfp";
83                 i2c-bus = <&sfpupper_i2c>;
84                 tx-fault-gpios = <&sfpgpio 4 GPIO_ACTIVE_HIGH>;
85                 tx-disable-gpios = <&sfpgpio 5 GPIO_ACTIVE_HIGH>;
86                 mod-def0-gpios = <&sfpgpio 6 GPIO_ACTIVE_LOW>;
87                 los-gpios = <&sfpgpio 7 GPIO_ACTIVE_HIGH>;
88                 maximum-power-milliwatt = <2000>;
89         };
90 };
91
92 /* XG1 - Upper SFP */
93 &dpmac1 {
94         sfp = <&sfp_xg1>;
95         pcs-handle = <&pcs1>;
96         phy-connection-type = "10gbase-r";
97         managed = "in-band-status";
98 };
99
100 /* XG0 - Lower SFP */
101 &dpmac2 {
102         sfp = <&sfp_xg0>;
103         pcs-handle = <&pcs2>;
104         phy-connection-type = "10gbase-r";
105         managed = "in-band-status";
106 };
107
108 /* DPMAC3..6 is GE4 to GE8 */
109 &dpmac3 {
110         phy-handle = <&mdio1_phy5>;
111         phy-connection-type = "qsgmii";
112         managed = "in-band-status";
113         pcs-handle = <&pcs3_0>;
114 };
115
116 &dpmac4 {
117         phy-handle = <&mdio1_phy6>;
118         phy-connection-type = "qsgmii";
119         managed = "in-band-status";
120         pcs-handle = <&pcs3_1>;
121 };
122
123 &dpmac5 {
124         phy-handle = <&mdio1_phy7>;
125         phy-connection-type = "qsgmii";
126         managed = "in-band-status";
127         pcs-handle = <&pcs3_2>;
128 };
129
130 &dpmac6 {
131         phy-handle = <&mdio1_phy8>;
132         phy-connection-type = "qsgmii";
133         managed = "in-band-status";
134         pcs-handle = <&pcs3_3>;
135 };
136
137 /* DPMAC7..10 is GE0 to GE3 */
138 &dpmac7 {
139         phy-handle = <&mdio1_phy1>;
140         phy-connection-type = "qsgmii";
141         managed = "in-band-status";
142         pcs-handle = <&pcs7_0>;
143 };
144
145 &dpmac8 {
146         phy-handle = <&mdio1_phy2>;
147         phy-connection-type = "qsgmii";
148         managed = "in-band-status";
149         pcs-handle = <&pcs7_1>;
150 };
151
152 &dpmac9 {
153         phy-handle = <&mdio1_phy3>;
154         phy-connection-type = "qsgmii";
155         managed = "in-band-status";
156         pcs-handle = <&pcs7_2>;
157 };
158
159 &dpmac10 {
160         phy-handle = <&mdio1_phy4>;
161         phy-connection-type = "qsgmii";
162         managed = "in-band-status";
163         pcs-handle = <&pcs7_3>;
164 };
165
166 &duart0 {
167         status = "okay";
168 };
169
170 &duart1 {
171         status = "okay";
172 };
173
174 &emdio1 {
175         status = "okay";
176
177         mdio1_phy5: ethernet-phy@c {
178                 reg = <0xc>;
179         };
180
181         mdio1_phy6: ethernet-phy@d {
182                 reg = <0xd>;
183         };
184
185         mdio1_phy7: ethernet-phy@e {
186                 reg = <0xe>;
187         };
188
189         mdio1_phy8: ethernet-phy@f {
190                 reg = <0xf>;
191         };
192
193         mdio1_phy1: ethernet-phy@1c {
194                 reg = <0x1c>;
195         };
196
197         mdio1_phy2: ethernet-phy@1d {
198                 reg = <0x1d>;
199         };
200
201         mdio1_phy3: ethernet-phy@1e {
202                 reg = <0x1e>;
203         };
204
205         mdio1_phy4: ethernet-phy@1f {
206                 reg = <0x1f>;
207         };
208 };
209
210 &esdhc {
211         status = "okay";
212 };
213
214 &i2c0 {
215         status = "okay";
216
217         sfpgpio: gpio@76 {
218                 compatible = "ti,tca9539";
219                 reg = <0x76>;
220                 #gpio-cells = <2>;
221                 gpio-controller;
222
223                 admin_led_lower {
224                         gpio-hog;
225                         gpios = <13 GPIO_ACTIVE_HIGH>;
226                         output-low;
227                 };
228         };
229
230         at97sc: tpm@29 {
231                 compatible = "atmel,at97sc3204t";
232                 reg = <0x29>;
233         };
234 };
235
236 &i2c2 {
237         status = "okay";
238
239         rx8035: rtc@32 {
240                 compatible = "epson,rx8035";
241                 reg = <0x32>;
242         };
243 };
244
245 &i2c3 {
246         status = "okay";
247
248         i2c-switch@70 {
249                 compatible = "nxp,pca9540";
250                 #address-cells = <1>;
251                 #size-cells = <0>;
252                 reg = <0x70>;
253
254                 sfpupper_i2c: i2c@0 {
255                         #address-cells = <1>;
256                         #size-cells = <0>;
257                         reg = <0>;
258                 };
259
260                 sfplower_i2c: i2c@1 {
261                         #address-cells = <1>;
262                         #size-cells = <0>;
263                         reg = <1>;
264                 };
265         };
266 };
267
268 &pcs_mdio1 {
269         status = "okay";
270 };
271
272 &pcs_mdio2 {
273         status = "okay";
274 };
275
276 &pcs_mdio3 {
277         status = "okay";
278 };
279
280 &pcs_mdio7 {
281         status = "okay";
282 };
283
284 &qspi {
285         status = "okay";
286
287         en25s64: flash@0 {
288                 compatible = "jedec,spi-nor";
289                 #address-cells = <1>;
290                 #size-cells = <1>;
291                 reg = <0>;
292                 spi-max-frequency = <20000000>;
293                 spi-rx-bus-width = <4>;
294                 spi-tx-bus-width = <4>;
295
296                 partitions {
297                         compatible = "fixed-partitions";
298                         #address-cells = <1>;
299                         #size-cells = <1>;
300
301                         partition@0 {
302                                 label = "bl2";
303                                 reg = <0 0x100000>;
304                         };
305
306                         partition@100000 {
307                                 label = "bl3";
308                                 reg = <0x100000 0x200000>;
309                         };
310
311                         partition@300000 {
312                                 label = "mcfirmware";
313                                 reg = <0x300000 0x200000>;
314                         };
315
316                         partition@500000 {
317                                 label = "ubootenv";
318                                 reg = <0x500000 0x80000>;
319                         };
320
321                         partition@580000 {
322                                 label = "dpl";
323                                 reg = <0x580000 0x40000>;
324                         };
325
326                         partition@5C0000 {
327                                 label = "dpc";
328                                 reg = <0x5C0000 0x40000>;
329                         };
330
331                         partition@600000 {
332                                 label = "devicetree";
333                                 reg = <0x600000 0x40000>;
334                         };
335                 };
336         };
337
338         nand: flash@1 {
339                 compatible = "spi-nand";
340                 #address-cells = <1>;
341                 #size-cells = <1>;
342                 reg = <1>;
343                 spi-max-frequency = <20000000>;
344                 spi-rx-bus-width = <4>;
345                 spi-tx-bus-width = <4>;
346
347                 partitions {
348                         compatible = "fixed-partitions";
349                         #address-cells = <1>;
350                         #size-cells = <1>;
351
352                         /* reserved for future boot direct from NAND flash
353                          * (this would use the same layout as the 8MiB NOR flash)
354                          */
355                         partition@0 {
356                                 label = "nand-boot-reserved";
357                                 reg = <0 0x800000>;
358                         };
359
360                         /* recovery / install environment */
361                         partition@800000 {
362                                 label = "recovery";
363                                 reg = <0x800000 0x2000000>;
364                         };
365
366                         /* ubia (first OpenWrt) - a/b names to prevent confusion with ubi0/1/etc. */
367                         partition@2800000 {
368                                 label = "ubia";
369                                 reg = <0x2800000 0x6C00000>;
370                         };
371
372                         /* ubib (second OpenWrt) */
373                         partition@9400000 {
374                                 label = "ubib";
375                                 reg = <0x9400000 0x6C00000>;
376                         };
377                 };
378         };
379 };
380
381 &usb0 {
382         status = "okay";
383 };
384
385 &usb1 {
386         status = "okay";
387 };