blob: 5e7d6de3cdded6b23315a2fdd351813b98a2bb08 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2020 Marvell International Ltd.
4 */
5
6#include "cn9130.dtsi" /* include SoC device tree */
7
8#include <dt-bindings/gpio/gpio.h>
9
10/ {
11 chosen {
12 stdout-path = "serial0:115200n8";
13 };
14
15 aliases {
16 i2c0 = &cp0_i2c0;
17 ethernet0 = &cp0_eth0;
18 ethernet1 = &cp0_eth1;
19 ethernet2 = &cp0_eth2;
20 gpio1 = &cp0_gpio1;
21 gpio2 = &cp0_gpio2;
22 };
23
24 memory@0 {
25 device_type = "memory";
26 reg = <0x0 0x0 0x0 0x80000000>;
27 };
28
Tom Rini762f85b2024-07-20 11:15:10 -060029 ap0_reg_mmc_vccq: regulator-1 {
Tom Rini53633a82024-02-29 12:33:36 -050030 compatible = "regulator-gpio";
31 regulator-name = "ap0_mmc_vccq";
32 regulator-min-microvolt = <1800000>;
33 regulator-max-microvolt = <3300000>;
34 gpios = <&expander0 5 GPIO_ACTIVE_HIGH>;
35 states = <1800000 0x1
36 3300000 0x0>;
37 };
38
Tom Rini762f85b2024-07-20 11:15:10 -060039 cp0_reg_usb3_vbus1: regulator-2 {
Tom Rini53633a82024-02-29 12:33:36 -050040 compatible = "regulator-fixed";
41 regulator-name = "cp0-xhci1-vbus";
42 regulator-min-microvolt = <5000000>;
43 regulator-max-microvolt = <5000000>;
44 enable-active-high;
45 gpio = <&expander0 8 GPIO_ACTIVE_HIGH>;
46 };
47
Tom Rini762f85b2024-07-20 11:15:10 -060048 cp0_usb3_0_phy0: usb-phy-1 {
Tom Rini53633a82024-02-29 12:33:36 -050049 compatible = "usb-nop-xceiv";
50 };
51
Tom Rini762f85b2024-07-20 11:15:10 -060052 cp0_usb3_0_phy1: usb-phy-2 {
Tom Rini53633a82024-02-29 12:33:36 -050053 compatible = "usb-nop-xceiv";
54 vcc-supply = <&cp0_reg_usb3_vbus1>;
55 };
56
Tom Rini762f85b2024-07-20 11:15:10 -060057 cp0_reg_sd_vccq: regulator-3 {
Tom Rini53633a82024-02-29 12:33:36 -050058 compatible = "regulator-gpio";
59 regulator-name = "cp0_sd_vccq";
60 regulator-min-microvolt = <1800000>;
61 regulator-max-microvolt = <3300000>;
62 gpios = <&cp0_gpio2 18 GPIO_ACTIVE_HIGH>;
63 states = <1800000 0x1
64 3300000 0x0>;
65 };
66
Tom Rini762f85b2024-07-20 11:15:10 -060067 cp0_reg_sd_vcc: regulator-4 {
Tom Rini53633a82024-02-29 12:33:36 -050068 compatible = "regulator-fixed";
69 regulator-name = "cp0_sd_vcc";
70 regulator-min-microvolt = <3300000>;
71 regulator-max-microvolt = <3300000>;
72 gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
73 enable-active-high;
74 regulator-always-on;
75 };
76
77 sfp: sfp {
78 compatible = "sff,sfp";
79 i2c-bus = <&cp0_i2c1>;
80 mod-def0-gpios = <&expander0 3 GPIO_ACTIVE_LOW>;
81 los-gpios = <&expander0 15 GPIO_ACTIVE_HIGH>;
82 tx-disable-gpios = <&expander0 2 GPIO_ACTIVE_HIGH>;
83 tx-fault-gpios = <&cp0_gpio1 24 GPIO_ACTIVE_HIGH>;
84 maximum-power-milliwatt = <3000>;
Tom Rini53633a82024-02-29 12:33:36 -050085 };
86};
87
88&uart0 {
89 status = "okay";
90};
91
92/* on-board eMMC U6 */
93&ap_sdhci0 {
94 pinctrl-names = "default";
95 bus-width = <8>;
96 status = "okay";
97 mmc-ddr-1_8v;
98 vqmmc-supply = <&ap0_reg_mmc_vccq>;
99};
100
101&cp0_syscon0 {
102 cp0_pinctrl: pinctrl {
103 compatible = "marvell,cp115-standalone-pinctrl";
104
105 cp0_i2c0_pins: cp0-i2c-pins-0 {
106 marvell,pins = "mpp37", "mpp38";
107 marvell,function = "i2c0";
108 };
109 cp0_i2c1_pins: cp0-i2c-pins-1 {
110 marvell,pins = "mpp35", "mpp36";
111 marvell,function = "i2c1";
112 };
113 cp0_sdhci_cd_pins_crb: cp0-sdhci-cd-pins-crb {
114 marvell,pins = "mpp55";
115 marvell,function = "gpio";
116 };
117 cp0_sdhci_pins: cp0-sdhi-pins-0 {
118 marvell,pins = "mpp56", "mpp57", "mpp58",
119 "mpp59", "mpp60", "mpp61";
120 marvell,function = "sdio";
121 };
122 cp0_spi1_pins: cp0-spi-pins-1 {
123 marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
124 marvell,function = "spi1";
125 };
126 };
127};
128
129&cp0_gpio1 {
130 status = "okay";
131};
132
133&cp0_gpio2 {
134 status = "okay";
135};
136
137&cp0_i2c0 {
138 pinctrl-names = "default";
139 pinctrl-0 = <&cp0_i2c0_pins>;
140 status = "okay";
141 clock-frequency = <100000>;
142 expander0: mcp23x17@20 {
143 compatible = "microchip,mcp23017";
144 gpio-controller;
145 #gpio-cells = <2>;
146 reg = <0x20>;
147 status = "okay";
148 };
149};
150
151&cp0_i2c1 {
152 pinctrl-names = "default";
153 pinctrl-0 = <&cp0_i2c1_pins>;
154 clock-frequency = <100000>;
155 status = "okay";
156};
157
158
159&cp0_sdhci0 {
160 pinctrl-names = "default";
161 pinctrl-0 = <&cp0_sdhci_pins
162 &cp0_sdhci_cd_pins_crb>;
163 bus-width = <4>;
164 cd-gpios = <&cp0_gpio2 23 GPIO_ACTIVE_HIGH>;
165 vqmmc-supply = <&cp0_reg_sd_vccq>;
166 vmmc-supply = <&cp0_reg_sd_vcc>;
167 status = "okay";
168};
169
170&cp0_spi1 {
171 pinctrl-names = "default";
172 pinctrl-0 = <&cp0_spi1_pins>;
173 reg = <0x700680 0x50>, /* control */
174 <0x2000000 0x1000000>; /* CS0 */
175 status = "okay";
176
177 flash@0 {
178 #address-cells = <0x1>;
179 #size-cells = <0x1>;
180 compatible = "jedec,spi-nor";
181 reg = <0x0>;
182 /* On-board MUX does not allow higher frequencies */
183 spi-max-frequency = <40000000>;
184
185 partitions {
186 compatible = "fixed-partitions";
187 #address-cells = <1>;
188 #size-cells = <1>;
189
190 partition@0 {
191 label = "U-Boot";
192 reg = <0x0 0x200000>;
193 };
194
195 partition@400000 {
196 label = "Filesystem";
197 reg = <0x200000 0xe00000>;
198 };
199 };
200 };
201};
202
203&cp0_mdio {
204 status = "okay";
205 phy0: ethernet-phy@0 {
206 reg = <0>;
207 };
208
Tom Rini93743d22024-04-01 09:08:13 -0400209 switch6: ethernet-switch@6 {
Tom Rini53633a82024-02-29 12:33:36 -0500210 /* Actual device is MV88E6393X */
211 compatible = "marvell,mv88e6190";
Tom Rini53633a82024-02-29 12:33:36 -0500212 reg = <6>;
213 interrupt-parent = <&cp0_gpio1>;
214 interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
215 interrupt-controller;
216 #interrupt-cells = <2>;
217
218 dsa,member = <0 0>;
219
Tom Rini93743d22024-04-01 09:08:13 -0400220 ethernet-ports {
Tom Rini53633a82024-02-29 12:33:36 -0500221 #address-cells = <1>;
222 #size-cells = <0>;
223
Tom Rini93743d22024-04-01 09:08:13 -0400224 ethernet-port@1 {
Tom Rini53633a82024-02-29 12:33:36 -0500225 reg = <1>;
226 label = "p1";
227 phy-handle = <&switch0phy1>;
228 };
229
Tom Rini93743d22024-04-01 09:08:13 -0400230 ethernet-port@2 {
Tom Rini53633a82024-02-29 12:33:36 -0500231 reg = <2>;
232 label = "p2";
233 phy-handle = <&switch0phy2>;
234 };
235
Tom Rini93743d22024-04-01 09:08:13 -0400236 ethernet-port@3 {
Tom Rini53633a82024-02-29 12:33:36 -0500237 reg = <3>;
238 label = "p3";
239 phy-handle = <&switch0phy3>;
240 };
241
Tom Rini93743d22024-04-01 09:08:13 -0400242 ethernet-port@4 {
Tom Rini53633a82024-02-29 12:33:36 -0500243 reg = <4>;
244 label = "p4";
245 phy-handle = <&switch0phy4>;
246 };
247
Tom Rini93743d22024-04-01 09:08:13 -0400248 ethernet-port@5 {
Tom Rini53633a82024-02-29 12:33:36 -0500249 reg = <5>;
250 label = "p5";
251 phy-handle = <&switch0phy5>;
252 };
253
Tom Rini93743d22024-04-01 09:08:13 -0400254 ethernet-port@6 {
Tom Rini53633a82024-02-29 12:33:36 -0500255 reg = <6>;
256 label = "p6";
257 phy-handle = <&switch0phy6>;
258 };
259
Tom Rini93743d22024-04-01 09:08:13 -0400260 ethernet-port@7 {
Tom Rini53633a82024-02-29 12:33:36 -0500261 reg = <7>;
262 label = "p7";
263 phy-handle = <&switch0phy7>;
264 };
265
Tom Rini93743d22024-04-01 09:08:13 -0400266 ethernet-port@8 {
Tom Rini53633a82024-02-29 12:33:36 -0500267 reg = <8>;
268 label = "p8";
269 phy-handle = <&switch0phy8>;
270 };
271
Tom Rini93743d22024-04-01 09:08:13 -0400272 ethernet-port@9 {
Tom Rini53633a82024-02-29 12:33:36 -0500273 reg = <9>;
274 label = "p9";
275 phy-mode = "10gbase-r";
276 sfp = <&sfp>;
277 managed = "in-band-status";
278 };
279
Tom Rini93743d22024-04-01 09:08:13 -0400280 ethernet-port@a {
Tom Rini53633a82024-02-29 12:33:36 -0500281 reg = <10>;
282 ethernet = <&cp0_eth0>;
283 phy-mode = "10gbase-r";
284 managed = "in-band-status";
285 };
286
287 };
288
289 mdio {
290 #address-cells = <1>;
291 #size-cells = <0>;
292
Tom Rini93743d22024-04-01 09:08:13 -0400293 switch0phy1: ethernet-phy@1 {
Tom Rini53633a82024-02-29 12:33:36 -0500294 reg = <0x1>;
295 };
296
Tom Rini93743d22024-04-01 09:08:13 -0400297 switch0phy2: ethernet-phy@2 {
Tom Rini53633a82024-02-29 12:33:36 -0500298 reg = <0x2>;
299 };
300
Tom Rini93743d22024-04-01 09:08:13 -0400301 switch0phy3: ethernet-phy@3 {
Tom Rini53633a82024-02-29 12:33:36 -0500302 reg = <0x3>;
303 };
304
Tom Rini93743d22024-04-01 09:08:13 -0400305 switch0phy4: ethernet-phy@4 {
Tom Rini53633a82024-02-29 12:33:36 -0500306 reg = <0x4>;
307 };
308
Tom Rini93743d22024-04-01 09:08:13 -0400309 switch0phy5: ethernet-phy@5 {
Tom Rini53633a82024-02-29 12:33:36 -0500310 reg = <0x5>;
311 };
312
Tom Rini93743d22024-04-01 09:08:13 -0400313 switch0phy6: ethernet-phy@6 {
Tom Rini53633a82024-02-29 12:33:36 -0500314 reg = <0x6>;
315 };
316
Tom Rini93743d22024-04-01 09:08:13 -0400317 switch0phy7: ethernet-phy@7 {
Tom Rini53633a82024-02-29 12:33:36 -0500318 reg = <0x7>;
319 };
320
Tom Rini93743d22024-04-01 09:08:13 -0400321 switch0phy8: ethernet-phy@8 {
Tom Rini53633a82024-02-29 12:33:36 -0500322 reg = <0x8>;
323 };
324 };
325 };
326};
327
328&cp0_xmdio {
329 status = "okay";
330 nbaset_phy0: ethernet-phy@0 {
331 compatible = "ethernet-phy-ieee802.3-c45";
332 reg = <0>;
333 };
334};
335
336&cp0_ethernet {
337 status = "okay";
338};
339
340&cp0_eth0 {
341 /* This port is connected to 88E6393X switch */
342 status = "okay";
343 phy-mode = "10gbase-r";
344 managed = "in-band-status";
345 phys = <&cp0_comphy4 0>;
346};
347
348&cp0_eth1 {
349 status = "okay";
350 phy = <&phy0>;
351 phy-mode = "rgmii-id";
352};
353
354&cp0_eth2 {
355 /* This port uses "2500base-t" phy-mode */
356 status = "disabled";
357 phy = <&nbaset_phy0>;
358 phys = <&cp0_comphy5 2>;
359};
360