162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright (C) 2016 Marvell Technology Group Ltd.
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Device Tree file for Marvell Armada 8040 Development board platform
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include <dt-bindings/gpio/gpio.h>
962306a36Sopenharmony_ci#include "armada-8040.dtsi"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	model = "Marvell Armada 8040 DB board";
1362306a36Sopenharmony_ci	compatible = "marvell,armada8040-db", "marvell,armada8040",
1462306a36Sopenharmony_ci		     "marvell,armada-ap806-quad", "marvell,armada-ap806";
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	chosen {
1762306a36Sopenharmony_ci		stdout-path = "serial0:115200n8";
1862306a36Sopenharmony_ci	};
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	memory@0 {
2162306a36Sopenharmony_ci		device_type = "memory";
2262306a36Sopenharmony_ci		reg = <0x0 0x0 0x0 0x80000000>;
2362306a36Sopenharmony_ci	};
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	aliases {
2662306a36Sopenharmony_ci		ethernet0 = &cp0_eth0;
2762306a36Sopenharmony_ci		ethernet1 = &cp0_eth2;
2862306a36Sopenharmony_ci		ethernet2 = &cp1_eth0;
2962306a36Sopenharmony_ci		ethernet3 = &cp1_eth1;
3062306a36Sopenharmony_ci		i2c1 = &cp0_i2c0;
3162306a36Sopenharmony_ci		i2c2 = &cp1_i2c0;
3262306a36Sopenharmony_ci	};
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci	cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
3562306a36Sopenharmony_ci		compatible = "regulator-fixed";
3662306a36Sopenharmony_ci		regulator-name = "cp0-usb3h0-vbus";
3762306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
3862306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
3962306a36Sopenharmony_ci		enable-active-high;
4062306a36Sopenharmony_ci		gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
4162306a36Sopenharmony_ci	};
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci	cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
4462306a36Sopenharmony_ci		compatible = "regulator-fixed";
4562306a36Sopenharmony_ci		regulator-name = "cp0-usb3h1-vbus";
4662306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
4762306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
4862306a36Sopenharmony_ci		enable-active-high;
4962306a36Sopenharmony_ci		gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
5062306a36Sopenharmony_ci	};
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	cp0_usb3_0_phy: cp0-usb3-0-phy {
5362306a36Sopenharmony_ci		compatible = "usb-nop-xceiv";
5462306a36Sopenharmony_ci		vcc-supply = <&cp0_reg_usb3_0_vbus>;
5562306a36Sopenharmony_ci	};
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci	cp1_reg_usb3_0_vbus: cp1-usb3-0-vbus {
5862306a36Sopenharmony_ci		compatible = "regulator-fixed";
5962306a36Sopenharmony_ci		regulator-name = "cp1-usb3h0-vbus";
6062306a36Sopenharmony_ci		regulator-min-microvolt = <5000000>;
6162306a36Sopenharmony_ci		regulator-max-microvolt = <5000000>;
6262306a36Sopenharmony_ci		enable-active-high;
6362306a36Sopenharmony_ci		gpio = <&expander1 0 GPIO_ACTIVE_HIGH>;
6462306a36Sopenharmony_ci	};
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	cp1_usb3_0_phy: cp1-usb3-0-phy {
6762306a36Sopenharmony_ci		compatible = "usb-nop-xceiv";
6862306a36Sopenharmony_ci		vcc-supply = <&cp1_reg_usb3_0_vbus>;
6962306a36Sopenharmony_ci	};
7062306a36Sopenharmony_ci};
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci&spi0 {
7362306a36Sopenharmony_ci	status = "okay";
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci	flash@0 {
7662306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
7762306a36Sopenharmony_ci		reg = <0>;
7862306a36Sopenharmony_ci		spi-max-frequency = <10000000>;
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci		partitions {
8162306a36Sopenharmony_ci			compatible = "fixed-partitions";
8262306a36Sopenharmony_ci			#address-cells = <1>;
8362306a36Sopenharmony_ci			#size-cells = <1>;
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci			partition@0 {
8662306a36Sopenharmony_ci				label = "U-Boot";
8762306a36Sopenharmony_ci				reg = <0 0x200000>;
8862306a36Sopenharmony_ci			};
8962306a36Sopenharmony_ci			partition@400000 {
9062306a36Sopenharmony_ci				label = "Filesystem";
9162306a36Sopenharmony_ci				reg = <0x200000 0xce0000>;
9262306a36Sopenharmony_ci			};
9362306a36Sopenharmony_ci		};
9462306a36Sopenharmony_ci	};
9562306a36Sopenharmony_ci};
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci/* Accessible over the mini-USB CON9 connector on the main board */
9862306a36Sopenharmony_ci&uart0 {
9962306a36Sopenharmony_ci	status = "okay";
10062306a36Sopenharmony_ci	pinctrl-0 = <&uart0_pins>;
10162306a36Sopenharmony_ci	pinctrl-names = "default";
10262306a36Sopenharmony_ci};
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci/* CON6 on CP0 expansion */
10562306a36Sopenharmony_ci&cp0_pcie0 {
10662306a36Sopenharmony_ci	phys = <&cp0_comphy0 0>;
10762306a36Sopenharmony_ci	phy-names = "cp0-pcie0-x1-phy";
10862306a36Sopenharmony_ci	status = "okay";
10962306a36Sopenharmony_ci};
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci/* CON5 on CP0 expansion */
11262306a36Sopenharmony_ci&cp0_pcie2 {
11362306a36Sopenharmony_ci	phys = <&cp0_comphy5 2>;
11462306a36Sopenharmony_ci	phy-names = "cp0-pcie2-x1-phy";
11562306a36Sopenharmony_ci	status = "okay";
11662306a36Sopenharmony_ci};
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci&cp0_i2c0 {
11962306a36Sopenharmony_ci	status = "okay";
12062306a36Sopenharmony_ci	clock-frequency = <100000>;
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci	/* U31 */
12362306a36Sopenharmony_ci	expander0: pca9555@21 {
12462306a36Sopenharmony_ci		compatible = "nxp,pca9555";
12562306a36Sopenharmony_ci		pinctrl-names = "default";
12662306a36Sopenharmony_ci		gpio-controller;
12762306a36Sopenharmony_ci		#gpio-cells = <2>;
12862306a36Sopenharmony_ci		reg = <0x21>;
12962306a36Sopenharmony_ci	};
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	/* U25 */
13262306a36Sopenharmony_ci	expander1: pca9555@25 {
13362306a36Sopenharmony_ci		compatible = "nxp,pca9555";
13462306a36Sopenharmony_ci		pinctrl-names = "default";
13562306a36Sopenharmony_ci		gpio-controller;
13662306a36Sopenharmony_ci		#gpio-cells = <2>;
13762306a36Sopenharmony_ci		reg = <0x25>;
13862306a36Sopenharmony_ci	};
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci};
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci/* CON4 on CP0 expansion */
14362306a36Sopenharmony_ci&cp0_sata0 {
14462306a36Sopenharmony_ci	status = "okay";
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci	sata-port@0 {
14762306a36Sopenharmony_ci		phys = <&cp0_comphy1 0>;
14862306a36Sopenharmony_ci		phy-names = "cp0-sata0-0-phy";
14962306a36Sopenharmony_ci	};
15062306a36Sopenharmony_ci	sata-port@1 {
15162306a36Sopenharmony_ci		phys = <&cp0_comphy3 1>;
15262306a36Sopenharmony_ci		phy-names = "cp0-sata0-1-phy";
15362306a36Sopenharmony_ci	};
15462306a36Sopenharmony_ci};
15562306a36Sopenharmony_ci
15662306a36Sopenharmony_ci/* CON9 on CP0 expansion */
15762306a36Sopenharmony_ci&cp0_utmi {
15862306a36Sopenharmony_ci	status = "okay";
15962306a36Sopenharmony_ci};
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci&cp0_usb3_0 {
16262306a36Sopenharmony_ci	usb-phy = <&cp0_usb3_0_phy>;
16362306a36Sopenharmony_ci	phys = <&cp0_utmi0>;
16462306a36Sopenharmony_ci	phy-names = "utmi";
16562306a36Sopenharmony_ci	dr_mode = "host";
16662306a36Sopenharmony_ci	status = "okay";
16762306a36Sopenharmony_ci};
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci&cp0_comphy4 {
17062306a36Sopenharmony_ci	cp0_usbh1_con: connector {
17162306a36Sopenharmony_ci		compatible = "usb-a-connector";
17262306a36Sopenharmony_ci		phy-supply = <&cp0_reg_usb3_1_vbus>;
17362306a36Sopenharmony_ci	};
17462306a36Sopenharmony_ci};
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci/* CON10 on CP0 expansion */
17762306a36Sopenharmony_ci&cp0_usb3_1 {
17862306a36Sopenharmony_ci	phys = <&cp0_comphy4 1>, <&cp0_utmi1>;
17962306a36Sopenharmony_ci	phy-names = "usb", "utmi";
18062306a36Sopenharmony_ci	dr_mode = "host";
18162306a36Sopenharmony_ci	status = "okay";
18262306a36Sopenharmony_ci};
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci&cp0_mdio {
18562306a36Sopenharmony_ci	status = "okay";
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci	phy1: ethernet-phy@1 {
18862306a36Sopenharmony_ci		reg = <1>;
18962306a36Sopenharmony_ci	};
19062306a36Sopenharmony_ci};
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci&cp0_ethernet {
19362306a36Sopenharmony_ci	status = "okay";
19462306a36Sopenharmony_ci};
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ci&cp0_eth0 {
19762306a36Sopenharmony_ci	status = "okay";
19862306a36Sopenharmony_ci	phy-mode = "10gbase-r";
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci	fixed-link {
20162306a36Sopenharmony_ci		speed = <10000>;
20262306a36Sopenharmony_ci		full-duplex;
20362306a36Sopenharmony_ci	};
20462306a36Sopenharmony_ci};
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci&cp0_eth2 {
20762306a36Sopenharmony_ci	status = "okay";
20862306a36Sopenharmony_ci	phy = <&phy1>;
20962306a36Sopenharmony_ci	phy-mode = "rgmii-id";
21062306a36Sopenharmony_ci};
21162306a36Sopenharmony_ci
21262306a36Sopenharmony_ci/* CON6 on CP1 expansion */
21362306a36Sopenharmony_ci&cp1_pcie0 {
21462306a36Sopenharmony_ci	phys = <&cp1_comphy0 0>;
21562306a36Sopenharmony_ci	phy-names = "cp1-pcie0-x1-phy";
21662306a36Sopenharmony_ci	status = "okay";
21762306a36Sopenharmony_ci};
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci/* CON7 on CP1 expansion */
22062306a36Sopenharmony_ci&cp1_pcie1 {
22162306a36Sopenharmony_ci	phys = <&cp1_comphy4 1>;
22262306a36Sopenharmony_ci	phy-names = "cp1-pcie1-x1-phy";
22362306a36Sopenharmony_ci	status = "okay";
22462306a36Sopenharmony_ci};
22562306a36Sopenharmony_ci
22662306a36Sopenharmony_ci/* CON5 on CP1 expansion */
22762306a36Sopenharmony_ci&cp1_pcie2 {
22862306a36Sopenharmony_ci	phys = <&cp1_comphy5 2>;
22962306a36Sopenharmony_ci	phy-names = "cp1-pcie2-x1-phy";
23062306a36Sopenharmony_ci	status = "okay";
23162306a36Sopenharmony_ci};
23262306a36Sopenharmony_ci
23362306a36Sopenharmony_ci&cp1_i2c0 {
23462306a36Sopenharmony_ci	status = "okay";
23562306a36Sopenharmony_ci	clock-frequency = <100000>;
23662306a36Sopenharmony_ci};
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci&cp1_spi1 {
23962306a36Sopenharmony_ci	status = "okay";
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci	flash@0 {
24262306a36Sopenharmony_ci		compatible = "jedec,spi-nor";
24362306a36Sopenharmony_ci		reg = <0x0>;
24462306a36Sopenharmony_ci		spi-max-frequency = <20000000>;
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ci		partitions {
24762306a36Sopenharmony_ci			compatible = "fixed-partitions";
24862306a36Sopenharmony_ci			#address-cells = <1>;
24962306a36Sopenharmony_ci			#size-cells = <1>;
25062306a36Sopenharmony_ci
25162306a36Sopenharmony_ci			partition@0 {
25262306a36Sopenharmony_ci				label = "Boot";
25362306a36Sopenharmony_ci				reg = <0x0 0x200000>;
25462306a36Sopenharmony_ci			};
25562306a36Sopenharmony_ci			partition@200000 {
25662306a36Sopenharmony_ci				label = "Filesystem";
25762306a36Sopenharmony_ci				reg = <0x200000 0xd00000>;
25862306a36Sopenharmony_ci			};
25962306a36Sopenharmony_ci			partition@f00000 {
26062306a36Sopenharmony_ci				label = "Boot_2nd";
26162306a36Sopenharmony_ci				reg = <0xf00000 0x100000>;
26262306a36Sopenharmony_ci			};
26362306a36Sopenharmony_ci		};
26462306a36Sopenharmony_ci	};
26562306a36Sopenharmony_ci};
26662306a36Sopenharmony_ci
26762306a36Sopenharmony_ci/*
26862306a36Sopenharmony_ci * Proper NAND usage will require DPR-76 to be in position 1-2, which disables
26962306a36Sopenharmony_ci * MDIO signal of CP1.
27062306a36Sopenharmony_ci */
27162306a36Sopenharmony_ci&cp1_nand_controller {
27262306a36Sopenharmony_ci	pinctrl-0 = <&nand_pins>, <&nand_rb>;
27362306a36Sopenharmony_ci	pinctrl-names = "default";
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci	nand@0 {
27662306a36Sopenharmony_ci		reg = <0>;
27762306a36Sopenharmony_ci		nand-rb = <0>;
27862306a36Sopenharmony_ci		nand-on-flash-bbt;
27962306a36Sopenharmony_ci		nand-ecc-strength = <4>;
28062306a36Sopenharmony_ci		nand-ecc-step-size = <512>;
28162306a36Sopenharmony_ci
28262306a36Sopenharmony_ci		partitions {
28362306a36Sopenharmony_ci			compatible = "fixed-partitions";
28462306a36Sopenharmony_ci			#address-cells = <1>;
28562306a36Sopenharmony_ci			#size-cells = <1>;
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ci			partition@0 {
28862306a36Sopenharmony_ci				label = "U-Boot";
28962306a36Sopenharmony_ci				reg = <0 0x200000>;
29062306a36Sopenharmony_ci			};
29162306a36Sopenharmony_ci			partition@200000 {
29262306a36Sopenharmony_ci				label = "Linux";
29362306a36Sopenharmony_ci				reg = <0x200000 0xe00000>;
29462306a36Sopenharmony_ci			};
29562306a36Sopenharmony_ci			partition@1000000 {
29662306a36Sopenharmony_ci				label = "Filesystem";
29762306a36Sopenharmony_ci				reg = <0x1000000 0x3f000000>;
29862306a36Sopenharmony_ci			};
29962306a36Sopenharmony_ci		};
30062306a36Sopenharmony_ci	};
30162306a36Sopenharmony_ci};
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci/* CON4 on CP1 expansion */
30462306a36Sopenharmony_ci&cp1_sata0 {
30562306a36Sopenharmony_ci	status = "okay";
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ci	sata-port@0 {
30862306a36Sopenharmony_ci		phys = <&cp1_comphy1 0>;
30962306a36Sopenharmony_ci		phy-names = "cp1-sata0-0-phy";
31062306a36Sopenharmony_ci	};
31162306a36Sopenharmony_ci	sata-port@1 {
31262306a36Sopenharmony_ci		phys = <&cp1_comphy3 1>;
31362306a36Sopenharmony_ci		phy-names = "cp1-sata0-1-phy";
31462306a36Sopenharmony_ci	};
31562306a36Sopenharmony_ci};
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_ci&cp1_utmi {
31862306a36Sopenharmony_ci	status = "okay";
31962306a36Sopenharmony_ci};
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci/* CON9 on CP1 expansion */
32262306a36Sopenharmony_ci&cp1_usb3_0 {
32362306a36Sopenharmony_ci	usb-phy = <&cp1_usb3_0_phy>;
32462306a36Sopenharmony_ci	phys = <&cp1_utmi0>;
32562306a36Sopenharmony_ci	phy-names = "utmi";
32662306a36Sopenharmony_ci	dr_mode = "host";
32762306a36Sopenharmony_ci	status = "okay";
32862306a36Sopenharmony_ci};
32962306a36Sopenharmony_ci
33062306a36Sopenharmony_ci/* CON10 on CP1 expansion */
33162306a36Sopenharmony_ci&cp1_usb3_1 {
33262306a36Sopenharmony_ci	phys = <&cp1_utmi1>;
33362306a36Sopenharmony_ci	phy-names = "utmi";
33462306a36Sopenharmony_ci	status = "okay";
33562306a36Sopenharmony_ci};
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ci&cp1_mdio {
33862306a36Sopenharmony_ci	status = "okay";
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci	phy0: ethernet-phy@0 {
34162306a36Sopenharmony_ci		reg = <0>;
34262306a36Sopenharmony_ci	};
34362306a36Sopenharmony_ci};
34462306a36Sopenharmony_ci
34562306a36Sopenharmony_ci&cp1_ethernet {
34662306a36Sopenharmony_ci	status = "okay";
34762306a36Sopenharmony_ci};
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci&cp1_eth0 {
35062306a36Sopenharmony_ci	status = "okay";
35162306a36Sopenharmony_ci	phy-mode = "10gbase-r";
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci	fixed-link {
35462306a36Sopenharmony_ci		speed = <10000>;
35562306a36Sopenharmony_ci		full-duplex;
35662306a36Sopenharmony_ci	};
35762306a36Sopenharmony_ci};
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_ci&cp1_eth1 {
36062306a36Sopenharmony_ci	status = "okay";
36162306a36Sopenharmony_ci	phy = <&phy0>;
36262306a36Sopenharmony_ci	phy-mode = "rgmii-id";
36362306a36Sopenharmony_ci};
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_ci&ap_sdhci0 {
36662306a36Sopenharmony_ci	status = "okay";
36762306a36Sopenharmony_ci	bus-width = <4>;
36862306a36Sopenharmony_ci	non-removable;
36962306a36Sopenharmony_ci};
37062306a36Sopenharmony_ci
37162306a36Sopenharmony_ci&cp0_sdhci0 {
37262306a36Sopenharmony_ci	status = "okay";
37362306a36Sopenharmony_ci	bus-width = <8>;
37462306a36Sopenharmony_ci	non-removable;
37562306a36Sopenharmony_ci};
376