1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Device Tree file for Globalscale MOCHAbin
4 * Copyright (C) 2019 Globalscale technologies, Inc.
5 * Copyright (C) 2021 Sartura Ltd.
6 *
7 */
8
9/dts-v1/;
10
11#include <dt-bindings/gpio/gpio.h>
12#include "armada-7040.dtsi"
13
14/ {
15	model = "Globalscale MOCHAbin";
16	compatible = "globalscale,mochabin", "marvell,armada7040",
17		     "marvell,armada-ap806-quad", "marvell,armada-ap806";
18
19	chosen {
20		stdout-path = "serial0:115200n8";
21	};
22
23	aliases {
24		ethernet0 = &cp0_eth0;
25		ethernet1 = &cp0_eth1;
26		ethernet2 = &cp0_eth2;
27		ethernet3 = &swport1;
28		ethernet4 = &swport2;
29		ethernet5 = &swport3;
30		ethernet6 = &swport4;
31	};
32
33	/* SFP+ 10G */
34	sfp_eth0: sfp-eth0 {
35		compatible = "sff,sfp";
36		i2c-bus = <&cp0_i2c1>;
37		los-gpios = <&sfp_gpio 3 GPIO_ACTIVE_HIGH>;
38		mod-def0-gpios = <&sfp_gpio 2 GPIO_ACTIVE_LOW>;
39		tx-disable-gpios = <&sfp_gpio 1 GPIO_ACTIVE_HIGH>;
40		tx-fault-gpios = <&sfp_gpio 0 GPIO_ACTIVE_HIGH>;
41	};
42
43	/* SFP 1G */
44	sfp_eth2: sfp-eth2 {
45		compatible = "sff,sfp";
46		i2c-bus = <&cp0_i2c0>;
47		los-gpios = <&sfp_gpio 7 GPIO_ACTIVE_HIGH>;
48		mod-def0-gpios = <&sfp_gpio 6 GPIO_ACTIVE_LOW>;
49		tx-disable-gpios = <&sfp_gpio 5 GPIO_ACTIVE_HIGH>;
50		tx-fault-gpios = <&sfp_gpio 4 GPIO_ACTIVE_HIGH>;
51	};
52};
53
54/* microUSB UART console */
55&uart0 {
56	status = "okay";
57
58	pinctrl-0 = <&uart0_pins>;
59	pinctrl-names = "default";
60};
61
62/* eMMC */
63&ap_sdhci0 {
64	status = "okay";
65
66	bus-width = <4>;
67	non-removable;
68	/delete-property/ marvell,xenon-phy-slow-mode;
69	no-1-8-v;
70};
71
72&cp0_pinctrl {
73	cp0_uart0_pins: cp0-uart0-pins {
74		marvell,pins = "mpp6", "mpp7";
75		marvell,function = "uart0";
76	};
77
78	cp0_spi0_pins: cp0-spi0-pins {
79		marvell,pins = "mpp56", "mpp57", "mpp58", "mpp59";
80		marvell,function = "spi0";
81	};
82
83	cp0_spi1_pins: cp0-spi1-pins {
84		marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
85		marvell,function = "spi1";
86	};
87
88	cp0_i2c0_pins: cp0-i2c0-pins {
89		marvell,pins = "mpp37", "mpp38";
90		marvell,function = "i2c0";
91	};
92
93	cp0_i2c1_pins: cp0-i2c1-pins {
94		marvell,pins = "mpp2", "mpp3";
95		marvell,function = "i2c1";
96	};
97
98	pca9554_int_pins: pca9554-int-pins {
99		marvell,pins = "mpp27";
100		marvell,function = "gpio";
101	};
102
103	cp0_rgmii1_pins: cp0-rgmii1-pins {
104		marvell,pins = "mpp44", "mpp45", "mpp46", "mpp47", "mpp48", "mpp49",
105			       "mpp50", "mpp51", "mpp52", "mpp53", "mpp54", "mpp55";
106		marvell,function = "ge1";
107	};
108
109	is31_sdb_pins: is31-sdb-pins {
110		marvell,pins = "mpp30";
111		marvell,function = "gpio";
112	};
113
114	cp0_pcie_reset_pins: cp0-pcie-reset-pins {
115		marvell,pins = "mpp9";
116		marvell,function = "gpio";
117	};
118
119	cp0_pcie_clkreq_pins: cp0-pcie-clkreq-pins {
120		marvell,pins = "mpp5";
121		marvell,function = "pcie1";
122	};
123
124	cp0_switch_pins: cp0-switch-pins {
125		marvell,pins = "mpp0", "mpp1";
126		marvell,function = "gpio";
127	};
128
129	cp0_phy_pins: cp0-phy-pins {
130		marvell,pins = "mpp12";
131		marvell,function = "gpio";
132	};
133};
134
135/* mikroBUS UART */
136&cp0_uart0 {
137	status = "okay";
138
139	pinctrl-names = "default";
140	pinctrl-0 = <&cp0_uart0_pins>;
141};
142
143/* mikroBUS SPI */
144&cp0_spi0 {
145	status = "okay";
146
147	pinctrl-names = "default";
148	pinctrl-0 = <&cp0_spi0_pins>;
149};
150
151/* SPI-NOR */
152&cp0_spi1 {
153	status = "okay";
154
155	pinctrl-names = "default";
156	pinctrl-0 = <&cp0_spi1_pins>;
157
158	flash@0 {
159		#address-cells = <1>;
160		#size-cells = <1>;
161		compatible = "jedec,spi-nor";
162		reg = <0>;
163		spi-max-frequency = <20000000>;
164
165		partitions {
166			compatible = "fixed-partitions";
167			#address-cells = <1>;
168			#size-cells = <1>;
169
170			partition@0 {
171				label = "firmware";
172				reg = <0x0 0x3e0000>;
173				read-only;
174			};
175
176			partition@3e0000 {
177				label = "hw-info";
178				reg = <0x3e0000 0x10000>;
179				read-only;
180			};
181
182			partition@3f0000 {
183				label = "u-boot-env";
184				reg = <0x3f0000 0x10000>;
185			};
186		};
187	};
188};
189
190/* mikroBUS, 1G SFP and GPIO expander */
191&cp0_i2c0 {
192	status = "okay";
193
194	pinctrl-names = "default";
195	pinctrl-0 = <&cp0_i2c0_pins>;
196	clock-frequency = <100000>;
197
198	sfp_gpio: pca9554@39 {
199		compatible = "nxp,pca9554";
200		pinctrl-names = "default";
201		pinctrl-0 = <&pca9554_int_pins>;
202		reg = <0x39>;
203
204		interrupt-parent = <&cp0_gpio1>;
205		interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
206		interrupt-controller;
207		#interrupt-cells = <2>;
208
209		gpio-controller;
210		#gpio-cells = <2>;
211
212		/*
213		 * IO0_0: SFP+_TX_FAULT
214		 * IO0_1: SFP+_TX_DISABLE
215		 * IO0_2: SFP+_PRSNT
216		 * IO0_3: SFP+_LOSS
217		 * IO0_4: SFP_TX_FAULT
218		 * IO0_5: SFP_TX_DISABLE
219		 * IO0_6: SFP_PRSNT
220		 * IO0_7: SFP_LOSS
221		 */
222	};
223};
224
225/* IS31FL3199, mini-PCIe and 10G SFP+ */
226&cp0_i2c1 {
227	status = "okay";
228
229	pinctrl-names = "default";
230	pinctrl-0 = <&cp0_i2c1_pins>;
231	clock-frequency = <100000>;
232
233	leds@64 {
234		compatible = "issi,is31fl3199";
235		#address-cells = <1>;
236		#size-cells = <0>;
237		pinctrl-names = "default";
238		pinctrl-0 = <&is31_sdb_pins>;
239		shutdown-gpios = <&cp0_gpio1 30 GPIO_ACTIVE_HIGH>;
240		reg = <0x64>;
241
242		led1_red: led@1 {
243			label = "red:led1";
244			reg = <1>;
245			led-max-microamp = <20000>;
246		};
247
248		led1_green: led@2 {
249			label = "green:led1";
250			reg = <2>;
251		};
252
253		led1_blue: led@3 {
254			label = "blue:led1";
255			reg = <3>;
256		};
257
258		led2_red: led@4 {
259			label = "red:led2";
260			reg = <4>;
261		};
262
263		led2_green: led@5 {
264			label = "green:led2";
265			reg = <5>;
266		};
267
268		led2_blue: led@6 {
269			label = "blue:led2";
270			reg = <6>;
271		};
272
273		led3_red: led@7 {
274			label = "red:led3";
275			reg = <7>;
276		};
277
278		led3_green: led@8 {
279			label = "green:led3";
280			reg = <8>;
281		};
282
283		led3_blue: led@9 {
284			label = "blue:led3";
285			reg = <9>;
286		};
287	};
288};
289
290&cp0_mdio {
291	status = "okay";
292
293	/* 88E1512 PHY */
294	eth2phy: ethernet-phy@1 {
295		reg = <1>;
296		sfp = <&sfp_eth2>;
297
298		pinctrl-names = "default";
299		pinctrl-0 = <&cp0_phy_pins>;
300		reset-gpios = <&cp0_gpio1 12 GPIO_ACTIVE_LOW>;
301	};
302
303	/* 88E6141 Topaz switch */
304	switch: ethernet-switch@3 {
305		compatible = "marvell,mv88e6085";
306		reg = <3>;
307
308		pinctrl-names = "default";
309		pinctrl-0 = <&cp0_switch_pins>;
310		reset-gpios = <&cp0_gpio1 0 GPIO_ACTIVE_LOW>;
311
312		interrupt-parent = <&cp0_gpio1>;
313		interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
314
315		ethernet-ports {
316			#address-cells = <1>;
317			#size-cells = <0>;
318
319			swport1: ethernet-port@1 {
320				reg = <1>;
321				label = "lan0";
322				phy-handle = <&swphy1>;
323			};
324
325			swport2: ethernet-port@2 {
326				reg = <2>;
327				label = "lan1";
328				phy-handle = <&swphy2>;
329			};
330
331			swport3: ethernet-port@3 {
332				reg = <3>;
333				label = "lan2";
334				phy-handle = <&swphy3>;
335			};
336
337			swport4: ethernet-port@4 {
338				reg = <4>;
339				label = "lan3";
340				phy-handle = <&swphy4>;
341			};
342
343			ethernet-port@5 {
344				reg = <5>;
345				label = "cpu";
346				ethernet = <&cp0_eth1>;
347				phy-mode = "2500base-x";
348				managed = "in-band-status";
349			};
350		};
351
352		mdio {
353			#address-cells = <1>;
354			#size-cells = <0>;
355
356			swphy1: ethernet-phy@17 {
357				reg = <17>;
358			};
359
360			swphy2: ethernet-phy@18 {
361				reg = <18>;
362			};
363
364			swphy3: ethernet-phy@19 {
365				reg = <19>;
366			};
367
368			swphy4: ethernet-phy@20 {
369				reg = <20>;
370			};
371		};
372	};
373};
374
375&cp0_ethernet {
376	status = "okay";
377};
378
379/* 10G SFP+ */
380&cp0_eth0 {
381	status = "okay";
382
383	phy-mode = "10gbase-r";
384	phys = <&cp0_comphy4 0>;
385	managed = "in-band-status";
386	sfp = <&sfp_eth0>;
387};
388
389/* Topaz switch uplink */
390&cp0_eth1 {
391	status = "okay";
392
393	phy-mode = "2500base-x";
394	phys = <&cp0_comphy0 1>;
395
396	fixed-link {
397		speed = <2500>;
398		full-duplex;
399	};
400};
401
402/* 1G SFP or 1G RJ45 */
403&cp0_eth2 {
404	status = "okay";
405
406	pinctrl-names = "default";
407	pinctrl-0 = <&cp0_rgmii1_pins>;
408
409	phy = <&eth2phy>;
410	phy-mode = "rgmii-id";
411};
412
413&cp0_utmi {
414	status = "okay";
415};
416
417/* SMSC USB5434B hub */
418&cp0_usb3_0 {
419	status = "okay";
420
421	phys = <&cp0_comphy1 0>, <&cp0_utmi0>;
422	phy-names = "cp0-usb3h0-comphy", "utmi";
423};
424
425/* miniPCI-E USB */
426&cp0_usb3_1 {
427	status = "okay";
428};
429
430&cp0_sata0 {
431	status = "okay";
432
433	/* 7 + 12 SATA connector (J24) */
434	sata-port@0 {
435		phys = <&cp0_comphy2 0>;
436		phy-names = "cp0-sata0-0-phy";
437	};
438
439	/* M.2-2250 B-key (J39) */
440	sata-port@1 {
441		phys = <&cp0_comphy3 1>;
442		phy-names = "cp0-sata0-1-phy";
443	};
444};
445
446/* miniPCI-E (J5) */
447&cp0_pcie2 {
448	status = "okay";
449
450	pinctrl-names = "default", "clkreq";
451	pinctrl-0 = <&cp0_pcie_reset_pins>;
452	pinctrl-1 = <&cp0_pcie_clkreq_pins>;
453	phys = <&cp0_comphy5 2>;
454	phy-names = "cp0-pcie2-x1-phy";
455	reset-gpios = <&cp0_gpio1 9 GPIO_ACTIVE_LOW>;
456	ranges = <0x82000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x8000000>;
457};
458