162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0+
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2020 Marvell International Ltd.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#include "cn9130.dtsi" /* include SoC device tree */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci/ {
1162306a36Sopenharmony_ci	chosen {
1262306a36Sopenharmony_ci		stdout-path = "serial0:115200n8";
1362306a36Sopenharmony_ci	};
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci	aliases {
1662306a36Sopenharmony_ci		i2c0 = &cp0_i2c0;
1762306a36Sopenharmony_ci		ethernet0 = &cp0_eth0;
1862306a36Sopenharmony_ci		ethernet1 = &cp0_eth1;
1962306a36Sopenharmony_ci		ethernet2 = &cp0_eth2;
2062306a36Sopenharmony_ci		gpio1 = &cp0_gpio1;
2162306a36Sopenharmony_ci		gpio2 = &cp0_gpio2;
2262306a36Sopenharmony_ci	};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	memory@0 {
2562306a36Sopenharmony_ci		device_type = "memory";
2662306a36Sopenharmony_ci		reg = <0x0 0x0 0x0 0x80000000>;
2762306a36Sopenharmony_ci	};
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	ap0_reg_mmc_vccq: ap0_mmc_vccq@0 {
3062306a36Sopenharmony_ci		compatible = "regulator-gpio";
3162306a36Sopenharmony_ci		regulator-name = "ap0_mmc_vccq";
3262306a36Sopenharmony_ci		regulator-min-microvolt = <1800000>;
3362306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
3462306a36Sopenharmony_ci		gpios = <&expander0 5 GPIO_ACTIVE_HIGH>;
3562306a36Sopenharmony_ci		states = <1800000 0x1
3662306a36Sopenharmony_ci			  3300000 0x0>;
3762306a36Sopenharmony_ci	};
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci	cp0_reg_usb3_vbus1: cp0_usb3_vbus@1 {
4062306a36Sopenharmony_ci		compatible = "regulator-fixed";
4162306a36Sopenharmony_ci		regulator-name = "cp0-xhci1-vbus";
4262306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
4362306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
4462306a36Sopenharmony_ci		enable-active-high;
4562306a36Sopenharmony_ci		gpio = <&expander0 8 GPIO_ACTIVE_HIGH>;
4662306a36Sopenharmony_ci	};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci	cp0_usb3_0_phy0: cp0_usb3_phy0 {
4962306a36Sopenharmony_ci		compatible = "usb-nop-xceiv";
5062306a36Sopenharmony_ci	};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	cp0_usb3_0_phy1: cp0_usb3_phy1 {
5362306a36Sopenharmony_ci		compatible = "usb-nop-xceiv";
5462306a36Sopenharmony_ci		vcc-supply = <&cp0_reg_usb3_vbus1>;
5562306a36Sopenharmony_ci	};
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	cp0_reg_sd_vccq: cp0_sd_vccq@0 {
5862306a36Sopenharmony_ci		compatible = "regulator-gpio";
5962306a36Sopenharmony_ci		regulator-name = "cp0_sd_vccq";
6062306a36Sopenharmony_ci		regulator-min-microvolt = <1800000>;
6162306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
6262306a36Sopenharmony_ci		gpios = <&cp0_gpio2 18 GPIO_ACTIVE_HIGH>;
6362306a36Sopenharmony_ci		states = <1800000 0x1
6462306a36Sopenharmony_ci			  3300000 0x0>;
6562306a36Sopenharmony_ci	};
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	cp0_reg_sd_vcc: cp0_sd_vcc@0 {
6862306a36Sopenharmony_ci		compatible = "regulator-fixed";
6962306a36Sopenharmony_ci		regulator-name = "cp0_sd_vcc";
7062306a36Sopenharmony_ci		regulator-min-microvolt = <3300000>;
7162306a36Sopenharmony_ci		regulator-max-microvolt = <3300000>;
7262306a36Sopenharmony_ci		gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>;
7362306a36Sopenharmony_ci		enable-active-high;
7462306a36Sopenharmony_ci		regulator-always-on;
7562306a36Sopenharmony_ci	};
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci	sfp: sfp {
7862306a36Sopenharmony_ci		compatible = "sff,sfp";
7962306a36Sopenharmony_ci		i2c-bus = <&cp0_i2c1>;
8062306a36Sopenharmony_ci		mod-def0-gpios = <&expander0 3 GPIO_ACTIVE_LOW>;
8162306a36Sopenharmony_ci		los-gpios = <&expander0 15 GPIO_ACTIVE_HIGH>;
8262306a36Sopenharmony_ci		tx-disable-gpios = <&expander0 2 GPIO_ACTIVE_HIGH>;
8362306a36Sopenharmony_ci		tx-fault-gpios = <&cp0_gpio1 24 GPIO_ACTIVE_HIGH>;
8462306a36Sopenharmony_ci		maximum-power-milliwatt = <3000>;
8562306a36Sopenharmony_ci		status = "okay";
8662306a36Sopenharmony_ci	};
8762306a36Sopenharmony_ci};
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci&uart0 {
9062306a36Sopenharmony_ci	status = "okay";
9162306a36Sopenharmony_ci};
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci/* on-board eMMC U6 */
9462306a36Sopenharmony_ci&ap_sdhci0 {
9562306a36Sopenharmony_ci	pinctrl-names = "default";
9662306a36Sopenharmony_ci	bus-width = <8>;
9762306a36Sopenharmony_ci	status = "okay";
9862306a36Sopenharmony_ci	mmc-ddr-1_8v;
9962306a36Sopenharmony_ci	vqmmc-supply = <&ap0_reg_mmc_vccq>;
10062306a36Sopenharmony_ci};
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci&cp0_syscon0 {
10362306a36Sopenharmony_ci	cp0_pinctrl: pinctrl {
10462306a36Sopenharmony_ci		compatible = "marvell,cp115-standalone-pinctrl";
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci		cp0_i2c0_pins: cp0-i2c-pins-0 {
10762306a36Sopenharmony_ci			marvell,pins = "mpp37", "mpp38";
10862306a36Sopenharmony_ci			marvell,function = "i2c0";
10962306a36Sopenharmony_ci		};
11062306a36Sopenharmony_ci		cp0_i2c1_pins: cp0-i2c-pins-1 {
11162306a36Sopenharmony_ci			marvell,pins = "mpp35", "mpp36";
11262306a36Sopenharmony_ci			marvell,function = "i2c1";
11362306a36Sopenharmony_ci		};
11462306a36Sopenharmony_ci		cp0_sdhci_cd_pins_crb: cp0-sdhci-cd-pins-crb {
11562306a36Sopenharmony_ci			marvell,pins = "mpp55";
11662306a36Sopenharmony_ci			marvell,function = "gpio";
11762306a36Sopenharmony_ci		};
11862306a36Sopenharmony_ci		cp0_sdhci_pins: cp0-sdhi-pins-0 {
11962306a36Sopenharmony_ci			marvell,pins = "mpp56", "mpp57", "mpp58",
12062306a36Sopenharmony_ci				       "mpp59", "mpp60", "mpp61";
12162306a36Sopenharmony_ci			marvell,function = "sdio";
12262306a36Sopenharmony_ci		};
12362306a36Sopenharmony_ci		cp0_spi1_pins: cp0-spi-pins-1 {
12462306a36Sopenharmony_ci			marvell,pins = "mpp13", "mpp14", "mpp15", "mpp16";
12562306a36Sopenharmony_ci			marvell,function = "spi1";
12662306a36Sopenharmony_ci		};
12762306a36Sopenharmony_ci	};
12862306a36Sopenharmony_ci};
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci&cp0_gpio1 {
13162306a36Sopenharmony_ci	status = "okay";
13262306a36Sopenharmony_ci};
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci&cp0_gpio2 {
13562306a36Sopenharmony_ci	status = "okay";
13662306a36Sopenharmony_ci};
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci&cp0_i2c0 {
13962306a36Sopenharmony_ci	pinctrl-names = "default";
14062306a36Sopenharmony_ci	pinctrl-0 = <&cp0_i2c0_pins>;
14162306a36Sopenharmony_ci	status = "okay";
14262306a36Sopenharmony_ci	clock-frequency = <100000>;
14362306a36Sopenharmony_ci	expander0: mcp23x17@20 {
14462306a36Sopenharmony_ci		compatible = "microchip,mcp23017";
14562306a36Sopenharmony_ci		gpio-controller;
14662306a36Sopenharmony_ci		#gpio-cells = <2>;
14762306a36Sopenharmony_ci		reg = <0x20>;
14862306a36Sopenharmony_ci		status = "okay";
14962306a36Sopenharmony_ci	};
15062306a36Sopenharmony_ci};
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci&cp0_i2c1 {
15362306a36Sopenharmony_ci	pinctrl-names = "default";
15462306a36Sopenharmony_ci	pinctrl-0 = <&cp0_i2c1_pins>;
15562306a36Sopenharmony_ci	clock-frequency = <100000>;
15662306a36Sopenharmony_ci	status = "okay";
15762306a36Sopenharmony_ci};
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ci&cp0_sdhci0 {
16162306a36Sopenharmony_ci	pinctrl-names = "default";
16262306a36Sopenharmony_ci	pinctrl-0 = <&cp0_sdhci_pins
16362306a36Sopenharmony_ci		     &cp0_sdhci_cd_pins_crb>;
16462306a36Sopenharmony_ci	bus-width = <4>;
16562306a36Sopenharmony_ci	cd-gpios = <&cp0_gpio2 23 GPIO_ACTIVE_HIGH>;
16662306a36Sopenharmony_ci	vqmmc-supply = <&cp0_reg_sd_vccq>;
16762306a36Sopenharmony_ci	vmmc-supply = <&cp0_reg_sd_vcc>;
16862306a36Sopenharmony_ci	status = "okay";
16962306a36Sopenharmony_ci};
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci&cp0_spi1 {
17262306a36Sopenharmony_ci	pinctrl-names = "default";
17362306a36Sopenharmony_ci	pinctrl-0 = <&cp0_spi1_pins>;
17462306a36Sopenharmony_ci	reg = <0x700680 0x50>,		/* control */
17562306a36Sopenharmony_ci	      <0x2000000 0x1000000>;	/* CS0 */
17662306a36Sopenharmony_ci	status = "okay";
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci	flash@0 {
17962306a36Sopenharmony_ci		#address-cells = <0x1>;
18062306a36Sopenharmony_ci		#size-cells = <0x1>;
18162306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
18262306a36Sopenharmony_ci		reg = <0x0>;
18362306a36Sopenharmony_ci		/* On-board MUX does not allow higher frequencies */
18462306a36Sopenharmony_ci		spi-max-frequency = <40000000>;
18562306a36Sopenharmony_ci
18662306a36Sopenharmony_ci		partitions {
18762306a36Sopenharmony_ci			compatible = "fixed-partitions";
18862306a36Sopenharmony_ci			#address-cells = <1>;
18962306a36Sopenharmony_ci			#size-cells = <1>;
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci			partition@0 {
19262306a36Sopenharmony_ci				label = "U-Boot";
19362306a36Sopenharmony_ci				reg = <0x0 0x200000>;
19462306a36Sopenharmony_ci			};
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci			partition@400000 {
19762306a36Sopenharmony_ci				label = "Filesystem";
19862306a36Sopenharmony_ci				reg = <0x200000 0xe00000>;
19962306a36Sopenharmony_ci			};
20062306a36Sopenharmony_ci		};
20162306a36Sopenharmony_ci	};
20262306a36Sopenharmony_ci};
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci&cp0_mdio {
20562306a36Sopenharmony_ci	status = "okay";
20662306a36Sopenharmony_ci	phy0: ethernet-phy@0 {
20762306a36Sopenharmony_ci		reg = <0>;
20862306a36Sopenharmony_ci	};
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	switch6: switch0@6 {
21162306a36Sopenharmony_ci		/* Actual device is MV88E6393X */
21262306a36Sopenharmony_ci		compatible = "marvell,mv88e6190";
21362306a36Sopenharmony_ci		#address-cells = <1>;
21462306a36Sopenharmony_ci		#size-cells = <0>;
21562306a36Sopenharmony_ci		reg = <6>;
21662306a36Sopenharmony_ci		interrupt-parent = <&cp0_gpio1>;
21762306a36Sopenharmony_ci		interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
21862306a36Sopenharmony_ci		interrupt-controller;
21962306a36Sopenharmony_ci		#interrupt-cells = <2>;
22062306a36Sopenharmony_ci
22162306a36Sopenharmony_ci		dsa,member = <0 0>;
22262306a36Sopenharmony_ci
22362306a36Sopenharmony_ci		ports {
22462306a36Sopenharmony_ci			#address-cells = <1>;
22562306a36Sopenharmony_ci			#size-cells = <0>;
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ci			port@1 {
22862306a36Sopenharmony_ci				reg = <1>;
22962306a36Sopenharmony_ci				label = "p1";
23062306a36Sopenharmony_ci				phy-handle = <&switch0phy1>;
23162306a36Sopenharmony_ci			};
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci			port@2 {
23462306a36Sopenharmony_ci				reg = <2>;
23562306a36Sopenharmony_ci				label = "p2";
23662306a36Sopenharmony_ci				phy-handle = <&switch0phy2>;
23762306a36Sopenharmony_ci			};
23862306a36Sopenharmony_ci
23962306a36Sopenharmony_ci			port@3 {
24062306a36Sopenharmony_ci				reg = <3>;
24162306a36Sopenharmony_ci				label = "p3";
24262306a36Sopenharmony_ci				phy-handle = <&switch0phy3>;
24362306a36Sopenharmony_ci			};
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci			port@4 {
24662306a36Sopenharmony_ci				reg = <4>;
24762306a36Sopenharmony_ci				label = "p4";
24862306a36Sopenharmony_ci				phy-handle = <&switch0phy4>;
24962306a36Sopenharmony_ci			};
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci			port@5 {
25262306a36Sopenharmony_ci				reg = <5>;
25362306a36Sopenharmony_ci				label = "p5";
25462306a36Sopenharmony_ci				phy-handle = <&switch0phy5>;
25562306a36Sopenharmony_ci			};
25662306a36Sopenharmony_ci
25762306a36Sopenharmony_ci			port@6 {
25862306a36Sopenharmony_ci				reg = <6>;
25962306a36Sopenharmony_ci				label = "p6";
26062306a36Sopenharmony_ci				phy-handle = <&switch0phy6>;
26162306a36Sopenharmony_ci			};
26262306a36Sopenharmony_ci
26362306a36Sopenharmony_ci			port@7 {
26462306a36Sopenharmony_ci				reg = <7>;
26562306a36Sopenharmony_ci				label = "p7";
26662306a36Sopenharmony_ci				phy-handle = <&switch0phy7>;
26762306a36Sopenharmony_ci			};
26862306a36Sopenharmony_ci
26962306a36Sopenharmony_ci			port@8 {
27062306a36Sopenharmony_ci				reg = <8>;
27162306a36Sopenharmony_ci				label = "p8";
27262306a36Sopenharmony_ci				phy-handle = <&switch0phy8>;
27362306a36Sopenharmony_ci			};
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci			port@9 {
27662306a36Sopenharmony_ci				reg = <9>;
27762306a36Sopenharmony_ci				label = "p9";
27862306a36Sopenharmony_ci				phy-mode = "10gbase-r";
27962306a36Sopenharmony_ci				sfp = <&sfp>;
28062306a36Sopenharmony_ci				managed = "in-band-status";
28162306a36Sopenharmony_ci			};
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ci			port@a {
28462306a36Sopenharmony_ci				reg = <10>;
28562306a36Sopenharmony_ci				ethernet = <&cp0_eth0>;
28662306a36Sopenharmony_ci				phy-mode = "10gbase-r";
28762306a36Sopenharmony_ci				managed = "in-band-status";
28862306a36Sopenharmony_ci			};
28962306a36Sopenharmony_ci
29062306a36Sopenharmony_ci		};
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci		mdio {
29362306a36Sopenharmony_ci			#address-cells = <1>;
29462306a36Sopenharmony_ci			#size-cells = <0>;
29562306a36Sopenharmony_ci
29662306a36Sopenharmony_ci			switch0phy1: switch0phy1@1 {
29762306a36Sopenharmony_ci				reg = <0x1>;
29862306a36Sopenharmony_ci			};
29962306a36Sopenharmony_ci
30062306a36Sopenharmony_ci			switch0phy2: switch0phy2@2 {
30162306a36Sopenharmony_ci				reg = <0x2>;
30262306a36Sopenharmony_ci			};
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ci			switch0phy3: switch0phy3@3 {
30562306a36Sopenharmony_ci				reg = <0x3>;
30662306a36Sopenharmony_ci			};
30762306a36Sopenharmony_ci
30862306a36Sopenharmony_ci			switch0phy4: switch0phy4@4 {
30962306a36Sopenharmony_ci				reg = <0x4>;
31062306a36Sopenharmony_ci			};
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_ci			switch0phy5: switch0phy5@5 {
31362306a36Sopenharmony_ci				reg = <0x5>;
31462306a36Sopenharmony_ci			};
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci			switch0phy6: switch0phy6@6 {
31762306a36Sopenharmony_ci				reg = <0x6>;
31862306a36Sopenharmony_ci			};
31962306a36Sopenharmony_ci
32062306a36Sopenharmony_ci			switch0phy7: switch0phy7@7 {
32162306a36Sopenharmony_ci				reg = <0x7>;
32262306a36Sopenharmony_ci			};
32362306a36Sopenharmony_ci
32462306a36Sopenharmony_ci			switch0phy8: switch0phy8@8 {
32562306a36Sopenharmony_ci				reg = <0x8>;
32662306a36Sopenharmony_ci			};
32762306a36Sopenharmony_ci		};
32862306a36Sopenharmony_ci	};
32962306a36Sopenharmony_ci};
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci&cp0_xmdio {
33262306a36Sopenharmony_ci	status = "okay";
33362306a36Sopenharmony_ci	nbaset_phy0: ethernet-phy@0 {
33462306a36Sopenharmony_ci		compatible = "ethernet-phy-ieee802.3-c45";
33562306a36Sopenharmony_ci		reg = <0>;
33662306a36Sopenharmony_ci	};
33762306a36Sopenharmony_ci};
33862306a36Sopenharmony_ci
33962306a36Sopenharmony_ci&cp0_ethernet {
34062306a36Sopenharmony_ci	status = "okay";
34162306a36Sopenharmony_ci};
34262306a36Sopenharmony_ci
34362306a36Sopenharmony_ci&cp0_eth0 {
34462306a36Sopenharmony_ci	/* This port is connected to 88E6393X switch */
34562306a36Sopenharmony_ci	status = "okay";
34662306a36Sopenharmony_ci	phy-mode = "10gbase-r";
34762306a36Sopenharmony_ci	managed = "in-band-status";
34862306a36Sopenharmony_ci	phys = <&cp0_comphy4 0>;
34962306a36Sopenharmony_ci};
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci&cp0_eth1 {
35262306a36Sopenharmony_ci	status = "okay";
35362306a36Sopenharmony_ci	phy = <&phy0>;
35462306a36Sopenharmony_ci	phy-mode = "rgmii-id";
35562306a36Sopenharmony_ci};
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci&cp0_eth2 {
35862306a36Sopenharmony_ci	/* This port uses "2500base-t" phy-mode */
35962306a36Sopenharmony_ci	status = "disabled";
36062306a36Sopenharmony_ci	phy = <&nbaset_phy0>;
36162306a36Sopenharmony_ci	phys = <&cp0_comphy5 2>;
36262306a36Sopenharmony_ci};
36362306a36Sopenharmony_ci
364