blob: ff46ce50cbc706dfafc8617eca84129dbb981fe9 [file] [log] [blame]
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +02001// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2016 Marvell International Ltd.
4 * Copyright (C) 2020 Sartura Ltd.
5 */
6
7#include "armada-8040.dtsi" /* include SoC device tree */
8
9/ {
10 model = "iEi-Puzzle-M801";
11 compatible = "marvell,armada8040-puzzle-m801",
12 "marvell,armada8040";
13
14 chosen {
15 stdout-path = "serial0:115200n8";
16 };
17
18 aliases {
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020019 i2c0 = &ap_i2c0;
20 i2c1 = &cp0_i2c0;
21 i2c2 = &cp0_i2c1;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020022 i2c3 = &i2c_switch;
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020023 spi0 = &ap_spi0;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020024 gpio0 = &ap_gpio0;
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020025 gpio1 = &cp0_gpio0;
26 gpio2 = &cp0_gpio1;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020027 gpio3 = &sfpplus_gpio;
28 };
29
30 memory@00000000 {
31 device_type = "memory";
32 reg = <0x0 0x0 0x0 0x80000000>;
33 };
34
35 simple-bus {
36 compatible = "simple-bus";
37 #address-cells = <1>;
38 #size-cells = <0>;
39
40 reg_usb3h0_vbus: usb3-vbus0 {
41 compatible = "regulator-fixed";
42 pinctrl-names = "default";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020043 pinctrl-0 = <&cp0_xhci_vbus_pins>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020044 regulator-name = "reg-usb3h0-vbus";
45 regulator-min-microvolt = <5000000>;
46 regulator-max-microvolt = <5000000>;
47 startup-delay-us = <500000>;
48 enable-active-high;
49 regulator-always-on;
50 regulator-boot-on;
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020051 gpio = <&cp0_gpio1 15 GPIO_ACTIVE_HIGH>; /* GPIO[47] */
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020052 };
53 };
54};
55
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020056&ap_i2c0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020057 status = "okay";
58 clock-frequency = <100000>;
59
60 rtc@32 {
61 compatible = "epson,rx8010";
62 reg = <0x32>;
63 };
64};
65
66&uart0 {
67 status = "okay";
68};
69
70&ap_pinctl {
71 /*
72 * MPP Bus:
73 * AP SPI0 [0-3]
74 * AP I2C [4-5]
75 * AP GPIO [6]
76 * AP UART 1 RX/TX [7-8]
77 * AP GPIO [9-10]
78 * AP GPIO [12]
79 * UART0 [11,19]
80 */
81 /* 0 1 2 3 4 5 6 7 8 9 */
82 pin-func = < 3 3 3 3 3 3 3 3 3 0
83 0 3 0 0 0 0 0 0 0 3 >;
84};
85
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +020086&cp0_pinctl {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +020087 /*
88 * MPP Bus:
89 * [0-31] = 0xff: Keep default CP0_shared_pins:
90 * [11] CLKOUT_MPP_11 (out)
91 * [23] LINK_RD_IN_CP2CP (in)
92 * [25] CLKOUT_MPP_25 (out)
93 * [29] AVS_FB_IN_CP2CP (in)
94 * [32,34] SMI
95 * [33] MSS power down
96 * [35-38] CP0 I2C1 and I2C0
97 * [39] MSS CKE Enable
98 * [40,41] CP0 UART1 TX/RX
99 * [42,43] XSMI (controls two 10G phys)
100 * [47] USB VBUS EN
101 * [48] FAN PWM
102 * [49] 10G port 1 interrupt
103 * [50] 10G port 0 interrupt
104 * [51] 2.5G SFP TX fault
105 * [52] PCIe reset out
106 * [53] 2.5G SFP mode
107 * [54] 2.5G SFP LOS
108 * [55] Micro SD card detect
109 * [56-61] Micro SD
110 * [62] CP1 SFI SFP FAULT
111 */
112 /* 0 1 2 3 4 5 6 7 8 9 */
113 pin-func = < 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
114 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
115 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
116 0xff 0 7 0xa 7 2 2 2 2 0xa
117 7 7 8 8 0 0 0 0 0 0
118 0 0 0 0 0 0 0xe 0xe 0xe 0xe
119 0xe 0xe 0 >;
120
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200121 cp0_xhci_vbus_pins: cpm-xhci-vbus-pins {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200122 marvell,pins = < 47 >;
123 marvell,function = <0>;
124 };
125
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200126 cp0_pcie_reset_pins: cpm-pcie-reset-pins {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200127 marvell,pins = < 52 >;
128 marvell,function = <0>;
129 };
130};
131
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200132&cp0_sdhci0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200133 pinctrl-names = "default";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200134 pinctrl-0 = <&cp0_sdhci_pins>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200135 bus-width= <4>;
136 status = "okay";
137};
138
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200139&cp0_pcie0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200140 num-lanes = <1>;
141 pinctrl-names = "default";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200142 pinctrl-0 = <&cp0_pcie_reset_pins>;
143 marvell,reset-gpio = <&cp0_gpio1 20 GPIO_ACTIVE_LOW>; /* GPIO[52] */
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200144 status = "okay";
145};
146
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200147&cp0_i2c0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200148 pinctrl-names = "default";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200149 pinctrl-0 = <&cp0_i2c0_pins>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200150 status = "okay";
151 clock-frequency = <100000>;
152
153 sfpplus_gpio: gpio@21 {
154 compatible = "nxp,pca9555";
155 reg = <0x21>;
156 gpio-controller;
157 #gpio-cells = <2>;
158 };
159};
160
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200161&cp0_i2c1 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200162 pinctrl-names = "default";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200163 pinctrl-0 = <&cp0_i2c1_pins>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200164 status = "okay";
165 clock-frequency = <100000>;
166
167 i2c_switch: i2c-switch@70 {
168 compatible = "nxp,pca9544";
169 #address-cells = <1>;
170 #size-cells = <0>;
171 reg = <0x70>;
172 };
173};
174
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200175&cp0_sata0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200176 status = "okay";
177};
178
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200179&cp0_ethernet {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200180 pinctrl-names = "default";
181 status = "okay";
182};
183
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200184&cp0_mdio {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200185 status = "okay";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200186 cp0_ge_phy0: ethernet-phy@1 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200187 reg = <0>;
188 };
189
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200190 cp0_ge_phy1: ethernet-phy@2 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200191 reg = <1>;
192 };
193};
194
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200195&cp0_eth0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200196 status = "okay";
197 phy-mode = "sfi";
198};
199
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200200&cp0_eth1 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200201 status = "okay";
202 phy-mode = "sgmii";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200203 phy = <&cp0_ge_phy0>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200204};
205
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200206&cp0_eth2 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200207 status = "okay";
208 phy-mode = "sgmii";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200209 phy = <&cp0_ge_phy1>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200210};
211
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200212&cp0_comphy {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200213 /*
214 * CP0 Serdes Configuration:
215 * Lane 0: PCIe0 (x1)
216 * Lane 1: SGMII2
217 * Lane 2: SATA0
218 * Lane 3: SGMII1
219 * Lane 4: SFI (10G)
220 * Lane 5: SATA1
221 */
222 phy0 {
223 phy-type = <PHY_TYPE_PEX0>;
224 };
225 phy1 {
226 phy-type = <PHY_TYPE_SGMII2>;
227 phy-speed = <PHY_SPEED_1_25G>;
228 };
229 phy2 {
230 phy-type = <PHY_TYPE_SATA0>;
231 };
232 phy3 {
233 phy-type = <PHY_TYPE_SGMII1>;
234 phy-speed = <PHY_SPEED_1_25G>;
235 };
236 phy4 {
237 phy-type = <PHY_TYPE_SFI>;
238 };
239 phy5 {
240 phy-type = <PHY_TYPE_SATA1>;
241 };
242};
243
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200244&cp1_mdio {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200245 status = "okay";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200246 cp1_ge_phy0: ethernet-phy@3 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200247 reg = <1>;
248 };
249
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200250 cp1_ge_phy1: ethernet-phy@4 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200251 reg = <0>;
252 };
253};
254
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200255&cp1_pcie0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200256 num-lanes = <2>;
257 pinctrl-names = "default";
258 status = "okay";
259};
260
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200261&cp1_usb3_0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200262 vbus-supply = <&reg_usb3h0_vbus>;
263 status = "okay";
264};
265
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200266&cp1_utmi0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200267 status = "okay";
268};
269
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200270&cp1_ethernet {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200271 status = "okay";
272};
273
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200274&cp1_eth0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200275 status = "okay";
276 phy-mode = "sfi";
277};
278
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200279&cp1_eth1 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200280 status = "okay";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200281 phy = <&cp1_ge_phy0>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200282 phy-mode = "sgmii";
283};
284
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200285&cp1_eth2 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200286 status = "okay";
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200287 phy = <&cp1_ge_phy1>;
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200288 phy-mode = "sgmii";
289};
290
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200291&cp1_pinctl {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200292 /*
293 * MPP Bus:
294 * [0-5] TDM
295 * [6,7] CP1_UART 0
296 * [8] CP1 10G SFP LOS
297 * [9] CP1 10G PHY RESET
298 * [10] CP1 10G SFP TX Disable
299 * [11] CP1 10G SFP Mode
300 * [12] SPI1 CS1n
301 * [13] SPI1 MISO (TDM and SPI ROM shared)
302 * [14] SPI1 CS0n
303 * [15] SPI1 MOSI (TDM and SPI ROM shared)
304 * [16] SPI1 CLK (TDM and SPI ROM shared)
305 * [24] CP1 2.5G SFP TX Disable
306 * [26] CP0 10G SFP TX Fault
307 * [27] CP0 10G SFP Mode
308 * [28] CP0 10G SFP LOS
309 * [29] CP0 10G SFP TX Disable
310 * [30] USB Over current indication
311 * [31] 10G Port 0 phy reset
312 * [32-62] = 0xff: Keep default CP1_shared_pins:
313 */
314 /* 0 1 2 3 4 5 6 7 8 9 */
315 pin-func = < 0x4 0x4 0x4 0x4 0x4 0x4 0x8 0x8 0x0 0x0
316 0x0 0x0 0x3 0x3 0x3 0x3 0x3 0xff 0xff 0xff
317 0xff 0xff 0xff 0xff 0x0 0xff 0x0 0x0 0x0 0x0
318 0x0 0x0 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
319 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
320 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff
321 0xff 0xff 0xff>;
322};
323
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200324&ap_spi0 {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200325 status = "okay";
326
327 spi-flash@0 {
328 #address-cells = <1>;
329 #size-cells = <1>;
330 compatible = "jedec,spi-nor";
331 reg = <0>;
332 spi-max-frequency = <10000000>;
333
334 partitions {
335 compatible = "fixed-partitions";
336 #address-cells = <1>;
337 #size-cells = <1>;
338
339 partition@u-boot {
340 reg = <0x00000000 0x001f0000>;
341 label = "u-boot";
342 };
343 partition@u-boot-env {
344 reg = <0x001f0000 0x00010000>;
345 label = "u-boot-env";
346 };
347 partition@ubi1 {
348 reg = <0x00200000 0x03f00000>;
349 label = "ubi1";
350 };
351 partition@ubi2 {
352 reg = <0x04100000 0x03f00000>;
353 label = "ubi2";
354 };
355 };
356 };
357};
358
Konstantin Porotchkina0ba97e2021-01-17 17:19:49 +0200359&cp1_comphy {
Luka Kovacic2ae2b8a2020-08-29 00:35:50 +0200360 /*
361 * CP1 Serdes Configuration:
362 * Lane 0: PCIe0 (x2)
363 * Lane 1: PCIe0 (x2)
364 * Lane 2: USB HOST 0
365 * Lane 3: SGMII1
366 * Lane 4: SFI (10G)
367 * Lane 5: SGMII2
368 */
369 phy0 {
370 phy-type = <PHY_TYPE_PEX0>;
371 };
372 phy1 {
373 phy-type = <PHY_TYPE_PEX0>;
374 };
375 phy2 {
376 phy-type = <PHY_TYPE_USB3_HOST0>;
377 };
378 phy3 {
379 phy-type = <PHY_TYPE_SGMII1>;
380 phy-speed = <PHY_SPEED_1_25G>;
381 };
382 phy4 {
383 phy-type = <PHY_TYPE_SFI>;
384 };
385 phy5 {
386 phy-type = <PHY_TYPE_SGMII2>;
387 phy-speed = <PHY_SPEED_1_25G>;
388 };
389};