15c0ee547SKonstantin Porotchkin// SPDX-License-Identifier: GPL-2.0+
25c0ee547SKonstantin Porotchkin/*
35c0ee547SKonstantin Porotchkin * Copyright (C) 2020 Marvell International Ltd.
45c0ee547SKonstantin Porotchkin */
55c0ee547SKonstantin Porotchkin
65c0ee547SKonstantin Porotchkin#include "cn9130.dtsi" /* include SoC device tree */
75c0ee547SKonstantin Porotchkin
85c0ee547SKonstantin Porotchkin#include <dt-bindings/gpio/gpio.h>
95c0ee547SKonstantin Porotchkin
105c0ee547SKonstantin Porotchkin/ {
115c0ee547SKonstantin Porotchkin	chosen {
125c0ee547SKonstantin Porotchkin		stdout-path = "serial0:115200n8";
135c0ee547SKonstantin Porotchkin	};
145c0ee547SKonstantin Porotchkin
155c0ee547SKonstantin Porotchkin	aliases {
165c0ee547SKonstantin Porotchkin		i2c0 = &cp0_i2c0;
175c0ee547SKonstantin Porotchkin		ethernet0 = &cp0_eth0;
185c0ee547SKonstantin Porotchkin		ethernet1 = &cp0_eth1;
195c0ee547SKonstantin Porotchkin		ethernet2 = &cp0_eth2;
201f1cb308SChris Packham		gpio1 = &cp0_gpio1;
211f1cb308SChris Packham		gpio2 = &cp0_gpio2;
225c0ee547SKonstantin Porotchkin	};
235c0ee547SKonstantin Porotchkin
249e62ec0eSRob Herring	memory@0 {
255c0ee547SKonstantin Porotchkin		device_type = "memory";
265c0ee547SKonstantin Porotchkin		reg = <0x0 0x0 0x0 0x80000000>;
275c0ee547SKonstantin Porotchkin	};
285c0ee547SKonstantin Porotchkin
295c0ee547SKonstantin Porotchkin	ap0_reg_mmc_vccq: ap0_mmc_vccq@0 {
305c0ee547SKonstantin Porotchkin		compatible = "regulator-gpio";
315c0ee547SKonstantin Porotchkin		regulator-name = "ap0_mmc_vccq";
325c0ee547SKonstantin Porotchkin		regulator-min-microvolt = <1800000>;
335c0ee547SKonstantin Porotchkin		regulator-max-microvolt = <3300000>;
345c0ee547SKonstantin Porotchkin		gpios = <&expander0 5 GPIO_ACTIVE_HIGH>;
355c0ee547SKonstantin Porotchkin		states = <1800000 0x1
365c0ee547SKonstantin Porotchkin			  3300000 0x0>;
375c0ee547SKonstantin Porotchkin	};
385c0ee547SKonstantin Porotchkin
395c0ee547SKonstantin Porotchkin	cp0_reg_usb3_vbus1: cp0_usb3_vbus@1 {
405c0ee547SKonstantin Porotchkin		compatible = "regulator-fixed";
415c0ee547SKonstantin Porotchkin		regulator-name = "cp0-xhci1-vbus";
425c0ee547SKonstantin Porotchkin		regulator-min-microvolt = <5000000>;
435c0ee547SKonstantin Porotchkin		regulator-max-microvolt = <5000000>;
445c0ee547SKonstantin Porotchkin		enable-active-high;
455c0ee547SKonstantin Porotchkin		gpio = <&expander0 8 GPIO_ACTIVE_HIGH>;
465c0ee547SKonstantin Porotchkin	};
475c0ee547SKonstantin Porotchkin
485c0ee547SKonstantin Porotchkin	cp0_usb3_0_phy0: cp0_usb3_phy0 {
495c0ee547SKonstantin Porotchkin		compatible = "usb-nop-xceiv";
505c0ee547SKonstantin Porotchkin	};
515c0ee547SKonstantin Porotchkin
525c0ee547SKonstantin Porotchkin	cp0_usb3_0_phy1: cp0_usb3_phy1 {
535c0ee547SKonstantin Porotchkin		compatible = "usb-nop-xceiv";
545c0ee547SKonstantin Porotchkin		vcc-supply = <&cp0_reg_usb3_vbus1>;
555c0ee547SKonstantin Porotchkin	};
565c0ee547SKonstantin Porotchkin
575c0ee547SKonstantin Porotchkin	cp0_reg_sd_vccq: cp0_sd_vccq@0 {
585c0ee547SKonstantin Porotchkin		compatible = "regulator-gpio";
595c0ee547SKonstantin Porotchkin		regulator-name = "cp0_sd_vccq";
605c0ee547SKonstantin Porotchkin		regulator-min-microvolt = <1800000>;
615c0ee547SKonstantin Porotchkin		regulator-max-microvolt = <3300000>;
625c0ee547SKonstantin Porotchkin		gpios = <&cp0_gpio2 18 GPIO_ACTIVE_HIGH>;
635c0ee547SKonstantin Porotchkin		states = <1800000 0x1
645c0ee547SKonstantin Porotchkin			  3300000 0x0>;
655c0ee547SKonstantin Porotchkin	};
665c0ee547SKonstantin Porotchkin
675c0ee547SKonstantin Porotchkin	cp0_reg_sd_vcc: cp0_sd_vcc@0 {
685c0ee547SKonstantin Porotchkin		compatible = "regulator-fixed";
695c0ee547SKonstantin Porotchkin		regulator-name = "cp0_sd_vcc";
705c0ee547SKonstantin Porotchkin		regulator-min-microvolt = <3300000>;
715c0ee547SKonstantin Porotchkin		regulator-max-microvolt = <3300000>;
725c0ee547SKonstantin Porotchkin		gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
735c0ee547SKonstantin Porotchkin		enable-active-high;
745c0ee547SKonstantin Porotchkin		regulator-always-on;
755c0ee547SKonstantin Porotchkin	};
7635d544a2SChris Packham
7735d544a2SChris Packham	sfp: sfp {
7835d544a2SChris Packham		compatible = "sff,sfp";
7935d544a2SChris Packham		i2c-bus = <&cp0_i2c1>;
8035d544a2SChris Packham		mod-def0-gpios = <&expander0 3 GPIO_ACTIVE_LOW>;
814ce223e5SIoana Ciornei		los-gpios = <&expander0 15 GPIO_ACTIVE_HIGH>;
824ce223e5SIoana Ciornei		tx-disable-gpios = <&expander0 2 GPIO_ACTIVE_HIGH>;
834ce223e5SIoana Ciornei		tx-fault-gpios = <&cp0_gpio1 24 GPIO_ACTIVE_HIGH>;
8435d544a2SChris Packham		maximum-power-milliwatt = <3000>;
8535d544a2SChris Packham		status = "okay";
8635d544a2SChris Packham	};
875c0ee547SKonstantin Porotchkin};
885c0ee547SKonstantin Porotchkin
895c0ee547SKonstantin Porotchkin&uart0 {
905c0ee547SKonstantin Porotchkin	status = "okay";
915c0ee547SKonstantin Porotchkin};
925c0ee547SKonstantin Porotchkin
935c0ee547SKonstantin Porotchkin/* on-board eMMC U6 */
945c0ee547SKonstantin Porotchkin&ap_sdhci0 {
955c0ee547SKonstantin Porotchkin	pinctrl-names = "default";
965c0ee547SKonstantin Porotchkin	bus-width = <8>;
975c0ee547SKonstantin Porotchkin	status = "okay";
985c0ee547SKonstantin Porotchkin	mmc-ddr-1_8v;
995c0ee547SKonstantin Porotchkin	vqmmc-supply = <&ap0_reg_mmc_vccq>;
1005c0ee547SKonstantin Porotchkin};
1015c0ee547SKonstantin Porotchkin
1025c0ee547SKonstantin Porotchkin&cp0_syscon0 {
1035c0ee547SKonstantin Porotchkin	cp0_pinctrl: pinctrl {
1045c0ee547SKonstantin Porotchkin		compatible = "marvell,cp115-standalone-pinctrl";
1055c0ee547SKonstantin Porotchkin
1065c0ee547SKonstantin Porotchkin		cp0_i2c0_pins: cp0-i2c-pins-0 {
1075c0ee547SKonstantin Porotchkin			marvell,pins = "mpp37", "mpp38";
1085c0ee547SKonstantin Porotchkin			marvell,function = "i2c0";
1095c0ee547SKonstantin Porotchkin		};
1105c0ee547SKonstantin Porotchkin		cp0_i2c1_pins: cp0-i2c-pins-1 {
1115c0ee547SKonstantin Porotchkin			marvell,pins = "mpp35", "mpp36";
1125c0ee547SKonstantin Porotchkin			marvell,function = "i2c1";
1135c0ee547SKonstantin Porotchkin		};
1145c0ee547SKonstantin Porotchkin		cp0_sdhci_cd_pins_crb: cp0-sdhci-cd-pins-crb {
1155c0ee547SKonstantin Porotchkin			marvell,pins = "mpp55";
1165c0ee547SKonstantin Porotchkin			marvell,function = "gpio";
1175c0ee547SKonstantin Porotchkin		};
1185c0ee547SKonstantin Porotchkin		cp0_sdhci_pins: cp0-sdhi-pins-0 {
1195c0ee547SKonstantin Porotchkin			marvell,pins = "mpp56", "mpp57", "mpp58",
1205c0ee547SKonstantin Porotchkin				       "mpp59", "mpp60", "mpp61";
1215c0ee547SKonstantin Porotchkin			marvell,function = "sdio";
1225c0ee547SKonstantin Porotchkin		};
123*043b62c6SChris Packham		cp0_spi1_pins: cp0-spi-pins-1 {
1245c0ee547SKonstantin Porotchkin			marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
1255c0ee547SKonstantin Porotchkin			marvell,function = "spi1";
1265c0ee547SKonstantin Porotchkin		};
1275c0ee547SKonstantin Porotchkin	};
1285c0ee547SKonstantin Porotchkin};
1295c0ee547SKonstantin Porotchkin
1301f1cb308SChris Packham&cp0_gpio1 {
1311f1cb308SChris Packham	status = "okay";
1321f1cb308SChris Packham};
1331f1cb308SChris Packham
1341f1cb308SChris Packham&cp0_gpio2 {
1351f1cb308SChris Packham	status = "okay";
1361f1cb308SChris Packham};
1371f1cb308SChris Packham
1385c0ee547SKonstantin Porotchkin&cp0_i2c0 {
1395c0ee547SKonstantin Porotchkin	pinctrl-names = "default";
1405c0ee547SKonstantin Porotchkin	pinctrl-0 = <&cp0_i2c0_pins>;
1415c0ee547SKonstantin Porotchkin	status = "okay";
1425c0ee547SKonstantin Porotchkin	clock-frequency = <100000>;
1435c0ee547SKonstantin Porotchkin	expander0: mcp23x17@20 {
1445c0ee547SKonstantin Porotchkin		compatible = "microchip,mcp23017";
1455c0ee547SKonstantin Porotchkin		gpio-controller;
1465c0ee547SKonstantin Porotchkin		#gpio-cells = <2>;
1475c0ee547SKonstantin Porotchkin		reg = <0x20>;
1485c0ee547SKonstantin Porotchkin		status = "okay";
1495c0ee547SKonstantin Porotchkin	};
1505c0ee547SKonstantin Porotchkin};
1515c0ee547SKonstantin Porotchkin
1525c0ee547SKonstantin Porotchkin&cp0_i2c1 {
1535c0ee547SKonstantin Porotchkin	pinctrl-names = "default";
1545c0ee547SKonstantin Porotchkin	pinctrl-0 = <&cp0_i2c1_pins>;
1555c0ee547SKonstantin Porotchkin	clock-frequency = <100000>;
1565c0ee547SKonstantin Porotchkin	status = "okay";
1575c0ee547SKonstantin Porotchkin};
1585c0ee547SKonstantin Porotchkin
1595c0ee547SKonstantin Porotchkin
1605c0ee547SKonstantin Porotchkin&cp0_sdhci0 {
1615c0ee547SKonstantin Porotchkin	pinctrl-names = "default";
1625c0ee547SKonstantin Porotchkin	pinctrl-0 = <&cp0_sdhci_pins
1635c0ee547SKonstantin Porotchkin		     &cp0_sdhci_cd_pins_crb>;
1645c0ee547SKonstantin Porotchkin	bus-width = <4>;
1655c0ee547SKonstantin Porotchkin	cd-gpios = <&cp0_gpio2 23 GPIO_ACTIVE_HIGH>;
1665c0ee547SKonstantin Porotchkin	vqmmc-supply = <&cp0_reg_sd_vccq>;
1675c0ee547SKonstantin Porotchkin	vmmc-supply = <&cp0_reg_sd_vcc>;
1685c0ee547SKonstantin Porotchkin	status = "okay";
1695c0ee547SKonstantin Porotchkin};
1705c0ee547SKonstantin Porotchkin
1715c0ee547SKonstantin Porotchkin&cp0_spi1 {
1725c0ee547SKonstantin Porotchkin	pinctrl-names = "default";
173*043b62c6SChris Packham	pinctrl-0 = <&cp0_spi1_pins>;
1745c0ee547SKonstantin Porotchkin	reg = <0x700680 0x50>,		/* control */
1755c0ee547SKonstantin Porotchkin	      <0x2000000 0x1000000>;	/* CS0 */
1765c0ee547SKonstantin Porotchkin	status = "okay";
1775c0ee547SKonstantin Porotchkin
1782f00bb4aSKrzysztof Kozlowski	flash@0 {
1795c0ee547SKonstantin Porotchkin		#address-cells = <0x1>;
1805c0ee547SKonstantin Porotchkin		#size-cells = <0x1>;
1815c0ee547SKonstantin Porotchkin		compatible = "jedec,spi-nor";
1825c0ee547SKonstantin Porotchkin		reg = <0x0>;
1835c0ee547SKonstantin Porotchkin		/* On-board MUX does not allow higher frequencies */
1845c0ee547SKonstantin Porotchkin		spi-max-frequency = <40000000>;
1855c0ee547SKonstantin Porotchkin
1865c0ee547SKonstantin Porotchkin		partitions {
1875c0ee547SKonstantin Porotchkin			compatible = "fixed-partitions";
1885c0ee547SKonstantin Porotchkin			#address-cells = <1>;
1895c0ee547SKonstantin Porotchkin			#size-cells = <1>;
1905c0ee547SKonstantin Porotchkin
1915c0ee547SKonstantin Porotchkin			partition@0 {
1925c0ee547SKonstantin Porotchkin				label = "U-Boot";
1935c0ee547SKonstantin Porotchkin				reg = <0x0 0x200000>;
1945c0ee547SKonstantin Porotchkin			};
1955c0ee547SKonstantin Porotchkin
1965c0ee547SKonstantin Porotchkin			partition@400000 {
1975c0ee547SKonstantin Porotchkin				label = "Filesystem";
1985c0ee547SKonstantin Porotchkin				reg = <0x200000 0xe00000>;
1995c0ee547SKonstantin Porotchkin			};
2005c0ee547SKonstantin Porotchkin		};
2015c0ee547SKonstantin Porotchkin	};
2025c0ee547SKonstantin Porotchkin};
2035c0ee547SKonstantin Porotchkin
2045c0ee547SKonstantin Porotchkin&cp0_mdio {
2055c0ee547SKonstantin Porotchkin	status = "okay";
2065c0ee547SKonstantin Porotchkin	phy0: ethernet-phy@0 {
2075c0ee547SKonstantin Porotchkin		reg = <0>;
2085c0ee547SKonstantin Porotchkin	};
20935d544a2SChris Packham
21035d544a2SChris Packham	switch6: switch0@6 {
21135d544a2SChris Packham		/* Actual device is MV88E6393X */
21235d544a2SChris Packham		compatible = "marvell,mv88e6190";
21335d544a2SChris Packham		#address-cells = <1>;
21435d544a2SChris Packham		#size-cells = <0>;
21535d544a2SChris Packham		reg = <6>;
21635d544a2SChris Packham		interrupt-parent = <&cp0_gpio1>;
21735d544a2SChris Packham		interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
21835d544a2SChris Packham		interrupt-controller;
21935d544a2SChris Packham		#interrupt-cells = <2>;
22035d544a2SChris Packham
22135d544a2SChris Packham		dsa,member = <0 0>;
22235d544a2SChris Packham
22335d544a2SChris Packham		ports {
22435d544a2SChris Packham			#address-cells = <1>;
22535d544a2SChris Packham			#size-cells = <0>;
22635d544a2SChris Packham
22735d544a2SChris Packham			port@1 {
22835d544a2SChris Packham				reg = <1>;
22935d544a2SChris Packham				label = "p1";
23035d544a2SChris Packham				phy-handle = <&switch0phy1>;
23135d544a2SChris Packham			};
23235d544a2SChris Packham
23335d544a2SChris Packham			port@2 {
23435d544a2SChris Packham				reg = <2>;
23535d544a2SChris Packham				label = "p2";
23635d544a2SChris Packham				phy-handle = <&switch0phy2>;
23735d544a2SChris Packham			};
23835d544a2SChris Packham
23935d544a2SChris Packham			port@3 {
24035d544a2SChris Packham				reg = <3>;
24135d544a2SChris Packham				label = "p3";
24235d544a2SChris Packham				phy-handle = <&switch0phy3>;
24335d544a2SChris Packham			};
24435d544a2SChris Packham
24535d544a2SChris Packham			port@4 {
24635d544a2SChris Packham				reg = <4>;
24735d544a2SChris Packham				label = "p4";
24835d544a2SChris Packham				phy-handle = <&switch0phy4>;
24935d544a2SChris Packham			};
25035d544a2SChris Packham
25135d544a2SChris Packham			port@5 {
25235d544a2SChris Packham				reg = <5>;
25335d544a2SChris Packham				label = "p5";
25435d544a2SChris Packham				phy-handle = <&switch0phy5>;
25535d544a2SChris Packham			};
25635d544a2SChris Packham
25735d544a2SChris Packham			port@6 {
25835d544a2SChris Packham				reg = <6>;
25935d544a2SChris Packham				label = "p6";
26035d544a2SChris Packham				phy-handle = <&switch0phy6>;
26135d544a2SChris Packham			};
26235d544a2SChris Packham
26335d544a2SChris Packham			port@7 {
26435d544a2SChris Packham				reg = <7>;
26535d544a2SChris Packham				label = "p7";
26635d544a2SChris Packham				phy-handle = <&switch0phy7>;
26735d544a2SChris Packham			};
26835d544a2SChris Packham
26935d544a2SChris Packham			port@8 {
27035d544a2SChris Packham				reg = <8>;
27135d544a2SChris Packham				label = "p8";
27235d544a2SChris Packham				phy-handle = <&switch0phy8>;
27335d544a2SChris Packham			};
27435d544a2SChris Packham
27535d544a2SChris Packham			port@9 {
27635d544a2SChris Packham				reg = <9>;
27735d544a2SChris Packham				label = "p9";
27835d544a2SChris Packham				phy-mode = "10gbase-r";
27935d544a2SChris Packham				sfp = <&sfp>;
28035d544a2SChris Packham				managed = "in-band-status";
28135d544a2SChris Packham			};
28235d544a2SChris Packham
28335d544a2SChris Packham			port@a {
28435d544a2SChris Packham				reg = <10>;
28535d544a2SChris Packham				ethernet = <&cp0_eth0>;
286218669c6SAndrew Lunn				phy-mode = "10gbase-r";
287218669c6SAndrew Lunn				managed = "in-band-status";
28835d544a2SChris Packham			};
28935d544a2SChris Packham
29035d544a2SChris Packham		};
29135d544a2SChris Packham
29235d544a2SChris Packham		mdio {
29335d544a2SChris Packham			#address-cells = <1>;
29435d544a2SChris Packham			#size-cells = <0>;
29535d544a2SChris Packham
29635d544a2SChris Packham			switch0phy1: switch0phy1@1 {
29735d544a2SChris Packham				reg = <0x1>;
29835d544a2SChris Packham			};
29935d544a2SChris Packham
30035d544a2SChris Packham			switch0phy2: switch0phy2@2 {
30135d544a2SChris Packham				reg = <0x2>;
30235d544a2SChris Packham			};
30335d544a2SChris Packham
30435d544a2SChris Packham			switch0phy3: switch0phy3@3 {
30535d544a2SChris Packham				reg = <0x3>;
30635d544a2SChris Packham			};
30735d544a2SChris Packham
30835d544a2SChris Packham			switch0phy4: switch0phy4@4 {
30935d544a2SChris Packham				reg = <0x4>;
31035d544a2SChris Packham			};
31135d544a2SChris Packham
31235d544a2SChris Packham			switch0phy5: switch0phy5@5 {
31335d544a2SChris Packham				reg = <0x5>;
31435d544a2SChris Packham			};
31535d544a2SChris Packham
31635d544a2SChris Packham			switch0phy6: switch0phy6@6 {
31735d544a2SChris Packham				reg = <0x6>;
31835d544a2SChris Packham			};
31935d544a2SChris Packham
32035d544a2SChris Packham			switch0phy7: switch0phy7@7 {
32135d544a2SChris Packham				reg = <0x7>;
32235d544a2SChris Packham			};
32335d544a2SChris Packham
32435d544a2SChris Packham			switch0phy8: switch0phy8@8 {
32535d544a2SChris Packham				reg = <0x8>;
32635d544a2SChris Packham			};
32735d544a2SChris Packham		};
32835d544a2SChris Packham	};
3295c0ee547SKonstantin Porotchkin};
3305c0ee547SKonstantin Porotchkin
3315c0ee547SKonstantin Porotchkin&cp0_xmdio {
3325c0ee547SKonstantin Porotchkin	status = "okay";
3335c0ee547SKonstantin Porotchkin	nbaset_phy0: ethernet-phy@0 {
3345c0ee547SKonstantin Porotchkin		compatible = "ethernet-phy-ieee802.3-c45";
3355c0ee547SKonstantin Porotchkin		reg = <0>;
3365c0ee547SKonstantin Porotchkin	};
3375c0ee547SKonstantin Porotchkin};
3385c0ee547SKonstantin Porotchkin
3395c0ee547SKonstantin Porotchkin&cp0_ethernet {
3405c0ee547SKonstantin Porotchkin	status = "okay";
3415c0ee547SKonstantin Porotchkin};
3425c0ee547SKonstantin Porotchkin
3435c0ee547SKonstantin Porotchkin&cp0_eth0 {
3445c0ee547SKonstantin Porotchkin	/* This port is connected to 88E6393X switch */
3455c0ee547SKonstantin Porotchkin	status = "okay";
34645b25653SKonstantin Porotchkin	phy-mode = "10gbase-r";
3475c0ee547SKonstantin Porotchkin	managed = "in-band-status";
3485c0ee547SKonstantin Porotchkin	phys = <&cp0_comphy4 0>;
3495c0ee547SKonstantin Porotchkin};
3505c0ee547SKonstantin Porotchkin
3515c0ee547SKonstantin Porotchkin&cp0_eth1 {
3525c0ee547SKonstantin Porotchkin	status = "okay";
3535c0ee547SKonstantin Porotchkin	phy = <&phy0>;
3545c0ee547SKonstantin Porotchkin	phy-mode = "rgmii-id";
3555c0ee547SKonstantin Porotchkin};
3565c0ee547SKonstantin Porotchkin
3575c0ee547SKonstantin Porotchkin&cp0_eth2 {
3585c0ee547SKonstantin Porotchkin	/* This port uses "2500base-t" phy-mode */
3595c0ee547SKonstantin Porotchkin	status = "disabled";
3605c0ee547SKonstantin Porotchkin	phy = <&nbaset_phy0>;
3615c0ee547SKonstantin Porotchkin	phys = <&cp0_comphy5 2>;
3625c0ee547SKonstantin Porotchkin};
3635c0ee547SKonstantin Porotchkin
364