1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3 * Turris 1.x Device Tree Source
4 *
5 * Copyright 2013 - 2022 CZ.NIC z.s.p.o. (http://www.nic.cz/)
6 *
7 * Pinout, Schematics and Altium hardware design files are open source
8 * and available at: https://docs.turris.cz/hw/turris-1x/turris-1x/
9 */
10
11 #include <dt-bindings/gpio/gpio.h>
12 #include <dt-bindings/interrupt-controller/irq.h>
13 #include <dt-bindings/leds/common.h>
14 /include/ "fsl/p2020si-pre.dtsi"
15
16 / {
17 model = "Turris 1.x";
18 compatible = "cznic,turris1x", "fsl,P2020RDB-PC"; /* fsl,P2020RDB-PC is required for booting Linux */
19
20 aliases {
21 ethernet0 = &enet0;
22 ethernet1 = &enet1;
23 ethernet2 = &enet2;
24 serial0 = &serial0;
25 serial1 = &serial1;
26 pci0 = &pci0;
27 pci1 = &pci1;
28 pci2 = &pci2;
29 spi0 = &spi0;
30 };
31
32 memory {
33 device_type = "memory";
34 };
35
36 soc: soc@ffe00000 {
37 ranges = <0x0 0x0 0xffe00000 0x00100000>;
38
39 i2c@3000 {
40 /* PCA9557PW GPIO controller for boot config */
41 gpio-controller@18 {
42 compatible = "nxp,pca9557";
43 label = "bootcfg";
44 reg = <0x18>;
45 #gpio-cells = <2>;
46 gpio-controller;
47 polarity = <0x00>;
48 };
49
50 /* STM32F030R8T6 MCU for power control */
51 power-control@2a {
52 /*
53 * Turris Power Control firmware runs on STM32F0 MCU.
54 * This firmware is open source and available at:
55 * https://gitlab.nic.cz/turris/hw/turris_power_control
56 */
57 reg = <0x2a>;
58 };
59
60 /* DDR3 SPD/EEPROM PSWP instruction */
61 eeprom@32 {
62 reg = <0x32>;
63 };
64
65 /* SA56004ED temperature control */
66 temperature-sensor@4c {
67 compatible = "nxp,sa56004";
68 reg = <0x4c>;
69 interrupt-parent = <&gpio>;
70 interrupts = <12 IRQ_TYPE_LEVEL_LOW>, /* GPIO12 - ALERT pin */
71 <13 IRQ_TYPE_LEVEL_LOW>; /* GPIO13 - CRIT pin */
72 };
73
74 /* DDR3 SPD/EEPROM */
75 eeprom@52 {
76 compatible = "atmel,spd";
77 reg = <0x52>;
78 };
79
80 /* MCP79402-I/ST Protected EEPROM */
81 eeprom@57 {
82 reg = <0x57>;
83 };
84
85 /* ATSHA204-TH-DA-T crypto module */
86 crypto@64 {
87 compatible = "atmel,atsha204";
88 reg = <0x64>;
89 };
90
91 /* IDT6V49205BNLGI clock generator */
92 clock-generator@69 {
93 compatible = "idt,6v49205b";
94 reg = <0x69>;
95 };
96
97 /* MCP79402-I/ST RTC */
98 rtc@6f {
99 compatible = "microchip,mcp7940x";
100 reg = <0x6f>;
101 interrupt-parent = <&gpio>;
102 interrupts = <14 0>; /* GPIO14 - MFP pin */
103 };
104 };
105
106 /* SPI on connector P1 */
107 spi0: spi@7000 {
108 };
109
110 gpio: gpio-controller@fc00 {
111 #interrupt-cells = <2>;
112 interrupt-controller;
113 };
114
115 /* Connected to SMSC USB2412-DZK 2-Port USB 2.0 Hub Controller */
116 usb@22000 {
117 phy_type = "ulpi";
118 dr_mode = "host";
119 };
120
121 enet0: ethernet@24000 {
122 /* Connected to port 6 of QCA8337N-AL3C switch */
123 phy-connection-type = "rgmii-id";
124
125 fixed-link {
126 speed = <1000>;
127 full-duplex;
128 };
129 };
130
131 mdio@24520 {
132 /* KSZ9031RNXCA ethernet phy for WAN port */
133 phy: ethernet-phy@7 {
134 interrupts = <3 1 0 0>;
135 reg = <0x7>;
136 };
137
138 /* QCA8337N-AL3C switch with integrated ethernet PHYs for LAN ports */
139 switch@10 {
140 compatible = "qca,qca8337";
141 interrupts = <2 1 0 0>;
142 reg = <0x10>;
143
144 ports {
145 #address-cells = <1>;
146 #size-cells = <0>;
147
148 port@0 {
149 reg = <0>;
150 label = "cpu1";
151 ethernet = <&enet1>;
152 phy-mode = "rgmii-id";
153
154 fixed-link {
155 speed = <1000>;
156 full-duplex;
157 };
158 };
159
160 port@1 {
161 reg = <1>;
162 label = "lan5";
163 };
164
165 port@2 {
166 reg = <2>;
167 label = "lan4";
168 };
169
170 port@3 {
171 reg = <3>;
172 label = "lan3";
173 };
174
175 port@4 {
176 reg = <4>;
177 label = "lan2";
178 };
179
180 port@5 {
181 reg = <5>;
182 label = "lan1";
183 };
184
185 port@6 {
186 reg = <6>;
187 label = "cpu0";
188 ethernet = <&enet0>;
189 phy-mode = "rgmii-id";
190
191 fixed-link {
192 speed = <1000>;
193 full-duplex;
194 };
195 };
196 };
197 };
198 };
199
200 ptp_clock@24e00 {
201 fsl,tclk-period = <5>;
202 fsl,tmr-prsc = <200>;
203 fsl,tmr-add = <0xcccccccd>;
204 fsl,tmr-fiper1 = <0x3b9ac9fb>;
205 fsl,tmr-fiper2 = <0x0001869b>;
206 fsl,max-adj = <249999999>;
207 };
208
209 enet1: ethernet@25000 {
210 /* Connected to port 0 of QCA8337N-AL3C switch */
211 phy-connection-type = "rgmii-id";
212
213 fixed-link {
214 speed = <1000>;
215 full-duplex;
216 };
217 };
218
219 mdio@25520 {
220 status = "disabled";
221 };
222
223 enet2: ethernet@26000 {
224 /* Connected to KSZ9031RNXCA ethernet phy (WAN port) */
225 label = "wan";
226 phy-handle = <&phy>;
227 phy-connection-type = "rgmii-id";
228 };
229
230 mdio@26520 {
231 status = "disabled";
232 };
233
234 sdhc@2e000 {
235 bus-width = <4>;
236 cd-gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
237 };
238 };
239
240 lbc: localbus@ffe05000 {
241 reg = <0 0xffe05000 0 0x1000>;
242
243 ranges = <0x0 0x0 0x0 0xef000000 0x01000000>, /* NOR */
244 <0x1 0x0 0x0 0xff800000 0x00040000>, /* NAND */
245 <0x3 0x0 0x0 0xffa00000 0x00020000>; /* CPLD */
246
247 /* S29GL128P90TFIR10 NOR */
248 nor@0,0 {
249 compatible = "cfi-flash";
250 reg = <0x0 0x0 0x01000000>;
251 bank-width = <2>;
252 device-width = <1>;
253
254 partitions {
255 compatible = "fixed-partitions";
256 #address-cells = <1>;
257 #size-cells = <1>;
258
259 partition@0 {
260 /* 128 kB for Device Tree Blob */
261 reg = <0x00000000 0x00020000>;
262 label = "dtb";
263 };
264
265 partition@20000 {
266 /* 1.7 MB for Rescue Linux Kernel Image */
267 reg = <0x00020000 0x001a0000>;
268 label = "rescue-kernel";
269 };
270
271 partition@1c0000 {
272 /* 1.5 MB for Rescue JFFS2 Root File System */
273 reg = <0x001c0000 0x00180000>;
274 label = "rescue-rootfs";
275 };
276
277 partition@340000 {
278 /* 11 MB for TAR.XZ Backup with content of NAND Root File System */
279 reg = <0x00340000 0x00b00000>;
280 label = "backup-rootfs";
281 };
282
283 partition@e40000 {
284 /* 768 kB for Certificates JFFS2 File System */
285 reg = <0x00e40000 0x000c0000>;
286 label = "certificates";
287 };
288
289 /* free unused space 0x00f00000-0x00f20000 */
290
291 partition@f20000 {
292 /* 128 kB for U-Boot Environment Variables */
293 reg = <0x00f20000 0x00020000>;
294 label = "u-boot-env";
295 };
296
297 partition@f40000 {
298 /* 768 kB for U-Boot Bootloader Image */
299 reg = <0x00f40000 0x000c0000>;
300 label = "u-boot";
301 };
302 };
303 };
304
305 /* MT29F2G08ABAEAWP:E NAND */
306 nand@1,0 {
307 compatible = "fsl,p2020-fcm-nand", "fsl,elbc-fcm-nand";
308 reg = <0x1 0x0 0x00040000>;
309 nand-ecc-mode = "soft";
310 nand-ecc-algo = "bch";
311
312 partitions {
313 compatible = "fixed-partitions";
314 #address-cells = <1>;
315 #size-cells = <1>;
316
317 partition@0 {
318 /* 256 MB for UBI with one volume: UBIFS Root File System */
319 reg = <0x00000000 0x10000000>;
320 label = "rootfs";
321 };
322 };
323 };
324
325 /* LCMXO1200C-3FTN256C FPGA */
326 cpld@3,0 {
327 /*
328 * Turris CPLD firmware which runs on this Lattice FPGA,
329 * is extended version of P1021RDB-PC CPLD v4.1 firmware.
330 * It is backward compatible with its original version
331 * and the only extension is support for Turris LEDs.
332 * Turris CPLD firmware is open source and available at:
333 * https://gitlab.nic.cz/turris/hw/turris_cpld/-/blob/master/CZ_NIC_Router_CPLD.v
334 */
335 compatible = "cznic,turris1x-cpld", "fsl,p1021rdb-pc-cpld", "simple-bus", "syscon";
336 reg = <0x3 0x0 0x30>;
337 #address-cells = <1>;
338 #size-cells = <1>;
339 ranges = <0x0 0x3 0x0 0x00020000>;
340
341 /* MAX6370KA+T watchdog */
342 watchdog@2 {
343 /*
344 * CPLD firmware maps SET0, SET1 and SET2
345 * input logic of MAX6370KA+T chip to CPLD
346 * memory space at byte offset 0x2. WDI
347 * input logic is outside of the CPLD and
348 * connected via external GPIO.
349 */
350 compatible = "maxim,max6370";
351 reg = <0x02 0x01>;
352 gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
353 };
354
355 reboot@d {
356 compatible = "syscon-reboot";
357 reg = <0x0d 0x01>;
358 offset = <0x0d>;
359 mask = <0x01>;
360 value = <0x01>;
361 };
362
363 led-controller@13 {
364 /*
365 * LEDs are controlled by CPLD firmware.
366 * All five LAN LEDs share common RGB settings
367 * and so it is not possible to set different
368 * colors on different LAN ports.
369 */
370 compatible = "cznic,turris1x-leds";
371 reg = <0x13 0x1d>;
372 #address-cells = <1>;
373 #size-cells = <0>;
374
375 multi-led@0 {
376 reg = <0x0>;
377 color = <LED_COLOR_ID_RGB>;
378 function = LED_FUNCTION_WAN;
379 };
380
381 multi-led@1 {
382 reg = <0x1>;
383 color = <LED_COLOR_ID_RGB>;
384 function = LED_FUNCTION_LAN;
385 function-enumerator = <5>;
386 };
387
388 multi-led@2 {
389 reg = <0x2>;
390 color = <LED_COLOR_ID_RGB>;
391 function = LED_FUNCTION_LAN;
392 function-enumerator = <4>;
393 };
394
395 multi-led@3 {
396 reg = <0x3>;
397 color = <LED_COLOR_ID_RGB>;
398 function = LED_FUNCTION_LAN;
399 function-enumerator = <3>;
400 };
401
402 multi-led@4 {
403 reg = <0x4>;
404 color = <LED_COLOR_ID_RGB>;
405 function = LED_FUNCTION_LAN;
406 function-enumerator = <2>;
407 };
408
409 multi-led@5 {
410 reg = <0x5>;
411 color = <LED_COLOR_ID_RGB>;
412 function = LED_FUNCTION_LAN;
413 function-enumerator = <1>;
414 };
415
416 multi-led@6 {
417 reg = <0x6>;
418 color = <LED_COLOR_ID_RGB>;
419 function = LED_FUNCTION_WLAN;
420 };
421
422 multi-led@7 {
423 reg = <0x7>;
424 color = <LED_COLOR_ID_RGB>;
425 function = LED_FUNCTION_POWER;
426 };
427 };
428 };
429 };
430
431 pci2: pcie@ffe08000 {
432 /*
433 * PCIe bus for on-board TUSB7340RKM USB 3.0 xHCI controller.
434 * This xHCI controller is available only on Turris 1.1 boards.
435 * Turris 1.0 boards have nothing connected to this PCIe bus,
436 * so system would see only PCIe Root Port of this PCIe Root
437 * Complex. TUSB7340RKM xHCI controller has four SuperSpeed
438 * channels. Channel 0 is connected to the front USB 3.0 port,
439 * channel 1 (but only USB 2.0 subset) to USB 2.0 pins on mPCIe
440 * slot 1 (CN5), channels 2 and 3 to connector P600.
441 *
442 * P2020 PCIe Root Port uses 1MB of PCIe MEM and xHCI controller
443 * uses 64kB + 8kB of PCIe MEM. No PCIe IO is used or required.
444 * So allocate 2MB of PCIe MEM for this PCIe bus.
445 */
446 reg = <0 0xffe08000 0 0x1000>;
447 ranges = <0x02000000 0x0 0xc0000000 0 0xc0000000 0x0 0x00200000>, /* MEM */
448 <0x01000000 0x0 0x00000000 0 0xffc20000 0x0 0x00010000>; /* IO */
449
450 pcie@0 {
451 ranges;
452 };
453 };
454
455 pci1: pcie@ffe09000 {
456 /* PCIe bus on mPCIe slot 2 (CN6) for expansion mPCIe card */
457 reg = <0 0xffe09000 0 0x1000>;
458 ranges = <0x02000000 0x0 0xa0000000 0 0xa0000000 0x0 0x20000000>, /* MEM */
459 <0x01000000 0x0 0x00000000 0 0xffc10000 0x0 0x00010000>; /* IO */
460
461 pcie@0 {
462 ranges;
463 };
464 };
465
466 pci0: pcie@ffe0a000 {
467 /*
468 * PCIe bus on mPCIe slot 1 (CN5) for expansion mPCIe card.
469 * Turris 1.1 boards have in this mPCIe slot additional USB 2.0
470 * pins via channel 1 of TUSB7340RKM xHCI controller and also
471 * additional SIM card slot, both for USB-based WWAN cards.
472 */
473 reg = <0 0xffe0a000 0 0x1000>;
474 ranges = <0x02000000 0x0 0x80000000 0 0x80000000 0x0 0x20000000>, /* MEM */
475 <0x01000000 0x0 0x00000000 0 0xffc00000 0x0 0x00010000>; /* IO */
476
477 pcie@0 {
478 ranges;
479 };
480 };
481 };
482
483 /include/ "fsl/p2020si-post.dtsi"
Cache object: 8686b9def41e52078cbffeaf9d70bf41
|