175dba886SGregory CLEMENT// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2ec7e5a56SThomas Petazzoni/*
3ec7e5a56SThomas Petazzoni * Copyright (C) 2016 Marvell Technology Group Ltd.
4ec7e5a56SThomas Petazzoni *
5ec7e5a56SThomas Petazzoni * Device Tree file for Marvell Armada 7040 Development board platform
6ec7e5a56SThomas Petazzoni */
7ec7e5a56SThomas Petazzoni
8915c71daSHanna Hawa#include <dt-bindings/gpio/gpio.h>
9ec7e5a56SThomas Petazzoni#include "armada-7040.dtsi"
10ec7e5a56SThomas Petazzoni
11ec7e5a56SThomas Petazzoni/ {
12ec7e5a56SThomas Petazzoni	model = "Marvell Armada 7040 DB board";
13ec7e5a56SThomas Petazzoni	compatible = "marvell,armada7040-db", "marvell,armada7040",
14ec7e5a56SThomas Petazzoni		     "marvell,armada-ap806-quad", "marvell,armada-ap806";
15ec7e5a56SThomas Petazzoni
16bf151162SThomas Petazzoni	chosen {
17bf151162SThomas Petazzoni		stdout-path = "serial0:115200n8";
18bf151162SThomas Petazzoni	};
19bf151162SThomas Petazzoni
20d8bcaabeSRob Herring	memory@0 {
21ec7e5a56SThomas Petazzoni		device_type = "memory";
22ec7e5a56SThomas Petazzoni		reg = <0x0 0x0 0x0 0x80000000>;
23ec7e5a56SThomas Petazzoni	};
24915c71daSHanna Hawa
25474c5885SYan Markman	aliases {
26474c5885SYan Markman		ethernet0 = &cp0_eth0;
27474c5885SYan Markman		ethernet1 = &cp0_eth1;
28474c5885SYan Markman		ethernet2 = &cp0_eth2;
29474c5885SYan Markman	};
30474c5885SYan Markman
3185e27ed7SMiquel Raynal	cp0_exp_usb3_0_current_regulator: gpio-regulator {
3285e27ed7SMiquel Raynal		compatible = "regulator-gpio";
3385e27ed7SMiquel Raynal		regulator-name = "cp0-usb3-0-current-regulator";
3485e27ed7SMiquel Raynal		regulator-type = "current";
3585e27ed7SMiquel Raynal		regulator-min-microamp = <500000>;
3685e27ed7SMiquel Raynal		regulator-max-microamp = <900000>;
3785e27ed7SMiquel Raynal		gpios = <&expander0 4 GPIO_ACTIVE_HIGH>;
3885e27ed7SMiquel Raynal		states = <500000 0x0
3985e27ed7SMiquel Raynal			  900000 0x1>;
4085e27ed7SMiquel Raynal		enable-active-high;
4185e27ed7SMiquel Raynal		gpios-states = <0>;
4285e27ed7SMiquel Raynal	};
4385e27ed7SMiquel Raynal
4485e27ed7SMiquel Raynal	cp0_exp_usb3_1_current_regulator: gpio-regulator {
4585e27ed7SMiquel Raynal		compatible = "regulator-gpio";
4685e27ed7SMiquel Raynal		regulator-name = "cp0-usb3-1-current-regulator";
4785e27ed7SMiquel Raynal		regulator-type = "current";
4885e27ed7SMiquel Raynal		regulator-min-microamp = <500000>;
4985e27ed7SMiquel Raynal		regulator-max-microamp = <900000>;
5085e27ed7SMiquel Raynal		gpios = <&expander0 5 GPIO_ACTIVE_HIGH>;
5185e27ed7SMiquel Raynal		states = <500000 0x0
5285e27ed7SMiquel Raynal			  900000 0x1>;
5385e27ed7SMiquel Raynal		enable-active-high;
5485e27ed7SMiquel Raynal		gpios-states = <0>;
5585e27ed7SMiquel Raynal	};
5685e27ed7SMiquel Raynal
5791f1be92SThomas Petazzoni	cp0_reg_usb3_0_vbus: cp0-usb3-0-vbus {
58915c71daSHanna Hawa		compatible = "regulator-fixed";
59915c71daSHanna Hawa		regulator-name = "usb3h0-vbus";
60915c71daSHanna Hawa		regulator-min-microvolt = <5000000>;
61915c71daSHanna Hawa		regulator-max-microvolt = <5000000>;
62915c71daSHanna Hawa		enable-active-high;
63915c71daSHanna Hawa		gpio = <&expander0 0 GPIO_ACTIVE_HIGH>;
6485e27ed7SMiquel Raynal		vin-supply = <&cp0_exp_usb3_0_current_regulator>;
65915c71daSHanna Hawa	};
66915c71daSHanna Hawa
6791f1be92SThomas Petazzoni	cp0_reg_usb3_1_vbus: cp0-usb3-1-vbus {
68915c71daSHanna Hawa		compatible = "regulator-fixed";
69915c71daSHanna Hawa		regulator-name = "usb3h1-vbus";
70915c71daSHanna Hawa		regulator-min-microvolt = <5000000>;
71915c71daSHanna Hawa		regulator-max-microvolt = <5000000>;
72915c71daSHanna Hawa		enable-active-high;
73915c71daSHanna Hawa		gpio = <&expander0 1 GPIO_ACTIVE_HIGH>;
7485e27ed7SMiquel Raynal		vin-supply = <&cp0_exp_usb3_1_current_regulator>;
75915c71daSHanna Hawa	};
76037ad463SAndreas Färber};
77ec7e5a56SThomas Petazzoni
78037ad463SAndreas Färber&i2c0 {
79037ad463SAndreas Färber	status = "okay";
80037ad463SAndreas Färber	clock-frequency = <100000>;
81037ad463SAndreas Färber};
82037ad463SAndreas Färber
83037ad463SAndreas Färber&spi0 {
84ec7e5a56SThomas Petazzoni	status = "okay";
85ec7e5a56SThomas Petazzoni
86*2f00bb4aSKrzysztof Kozlowski	flash@0 {
87fe85e20eSThomas Petazzoni		compatible = "jedec,spi-nor";
88fe85e20eSThomas Petazzoni		reg = <0>;
89ec7e5a56SThomas Petazzoni		spi-max-frequency = <10000000>;
90ec7e5a56SThomas Petazzoni
91fe85e20eSThomas Petazzoni		partitions {
92fe85e20eSThomas Petazzoni			compatible = "fixed-partitions";
93fe85e20eSThomas Petazzoni			#address-cells = <1>;
94fe85e20eSThomas Petazzoni			#size-cells = <1>;
95fe85e20eSThomas Petazzoni
96ec7e5a56SThomas Petazzoni			partition@0 {
97ec7e5a56SThomas Petazzoni				label = "U-Boot";
98ec7e5a56SThomas Petazzoni				reg = <0 0x200000>;
99ec7e5a56SThomas Petazzoni			};
100ec7e5a56SThomas Petazzoni			partition@400000 {
101ec7e5a56SThomas Petazzoni				label = "Filesystem";
102ec7e5a56SThomas Petazzoni				reg = <0x200000 0xce0000>;
103ec7e5a56SThomas Petazzoni			};
104ec7e5a56SThomas Petazzoni		};
105ec7e5a56SThomas Petazzoni	};
106fe85e20eSThomas Petazzoni};
107ec7e5a56SThomas Petazzoni
108037ad463SAndreas Färber&uart0 {
109ec7e5a56SThomas Petazzoni	status = "okay";
1109e83bbdbSThomas Petazzoni	pinctrl-0 = <&uart0_pins>;
1119e83bbdbSThomas Petazzoni	pinctrl-names = "default";
112ec7e5a56SThomas Petazzoni};
113fea14498SThomas Petazzoni
114fea14498SThomas Petazzoni
11591f1be92SThomas Petazzoni&cp0_pcie2 {
116fea14498SThomas Petazzoni	status = "okay";
117ce55522cSMiquel Raynal	phys = <&cp0_comphy5 2>;
118ce55522cSMiquel Raynal	phy-names = "cp0-pcie2-x1-phy";
119fea14498SThomas Petazzoni};
120fea14498SThomas Petazzoni
12191f1be92SThomas Petazzoni&cp0_i2c0 {
122fea14498SThomas Petazzoni	status = "okay";
123fea14498SThomas Petazzoni	clock-frequency = <100000>;
124915c71daSHanna Hawa
125915c71daSHanna Hawa	expander0: pca9555@21 {
126915c71daSHanna Hawa		compatible = "nxp,pca9555";
127915c71daSHanna Hawa		pinctrl-names = "default";
128915c71daSHanna Hawa		gpio-controller;
129915c71daSHanna Hawa		#gpio-cells = <2>;
130915c71daSHanna Hawa		reg = <0x21>;
131a5f5c5bbSGregory CLEMENT		/*
132a5f5c5bbSGregory CLEMENT		 * IO0_0: USB3_PWR_EN0	IO1_0: USB_3_1_Dev_Detect
133a5f5c5bbSGregory CLEMENT		 * IO0_1: USB3_PWR_EN1	IO1_1: USB2_1_current_limit
134a5f5c5bbSGregory CLEMENT		 * IO0_2: DDR3_4_Detect	IO1_2: Hcon_IO_RstN
135a5f5c5bbSGregory CLEMENT		 * IO0_3: USB2_DEVICE_DETECT
136a5f5c5bbSGregory CLEMENT		 * IO0_4: GPIO_0	IO1_4: SD_Status
137a5f5c5bbSGregory CLEMENT		 * IO0_5: GPIO_1	IO1_5: LDO_5V_Enable
138a5f5c5bbSGregory CLEMENT		 * IO0_6: IHB_5V_Enable	IO1_6: PWR_EN_eMMC
139a5f5c5bbSGregory CLEMENT		 * IO0_7:		IO1_7: SDIO_Vcntrl
140a5f5c5bbSGregory CLEMENT		 */
141915c71daSHanna Hawa	};
142fea14498SThomas Petazzoni};
143fea14498SThomas Petazzoni
1441e09a73fSMiquel Raynal&cp0_nand_controller {
14573ae5fe8SGregory CLEMENT	/*
14673ae5fe8SGregory CLEMENT	 * SPI on CPM and NAND have common pins on this board. We can
1471e09a73fSMiquel Raynal	 * use only one at a time. To enable the NAND (which will
14873ae5fe8SGregory CLEMENT	 * disable the SPI), the "status = "okay";" line have to be
14973ae5fe8SGregory CLEMENT	 * added here.
15073ae5fe8SGregory CLEMENT	 */
15173ae5fe8SGregory CLEMENT	pinctrl-0 = <&nand_pins>, <&nand_rb>;
15273ae5fe8SGregory CLEMENT	pinctrl-names = "default";
1531e09a73fSMiquel Raynal
1541e09a73fSMiquel Raynal	nand@0 {
1551e09a73fSMiquel Raynal		reg = <0>;
1561e09a73fSMiquel Raynal		label = "pxa3xx_nand-0";
1571e09a73fSMiquel Raynal		nand-rb = <0>;
1581e09a73fSMiquel Raynal		nand-on-flash-bbt;
15973ae5fe8SGregory CLEMENT		nand-ecc-strength = <4>;
16073ae5fe8SGregory CLEMENT		nand-ecc-step-size = <512>;
1611e09a73fSMiquel Raynal
1621e09a73fSMiquel Raynal		partitions {
1631e09a73fSMiquel Raynal			compatible = "fixed-partitions";
1641e09a73fSMiquel Raynal			#address-cells = <1>;
1651e09a73fSMiquel Raynal			#size-cells = <1>;
16673ae5fe8SGregory CLEMENT
16773ae5fe8SGregory CLEMENT			partition@0 {
16873ae5fe8SGregory CLEMENT				label = "U-Boot";
16973ae5fe8SGregory CLEMENT				reg = <0 0x200000>;
17073ae5fe8SGregory CLEMENT			};
1711e09a73fSMiquel Raynal
17273ae5fe8SGregory CLEMENT			partition@200000 {
17373ae5fe8SGregory CLEMENT				label = "Linux";
17473ae5fe8SGregory CLEMENT				reg = <0x200000 0xe00000>;
17573ae5fe8SGregory CLEMENT			};
1761e09a73fSMiquel Raynal
17773ae5fe8SGregory CLEMENT			partition@1000000 {
17873ae5fe8SGregory CLEMENT				label = "Filesystem";
17973ae5fe8SGregory CLEMENT				reg = <0x1000000 0x3f000000>;
18073ae5fe8SGregory CLEMENT			};
18173ae5fe8SGregory CLEMENT
1821e09a73fSMiquel Raynal		};
1831e09a73fSMiquel Raynal	};
1841e09a73fSMiquel Raynal};
18573ae5fe8SGregory CLEMENT
18691f1be92SThomas Petazzoni&cp0_spi1 {
187fea14498SThomas Petazzoni	status = "okay";
188fea14498SThomas Petazzoni
189*2f00bb4aSKrzysztof Kozlowski	flash@0 {
190fea14498SThomas Petazzoni		compatible = "jedec,spi-nor";
191fea14498SThomas Petazzoni		reg = <0x0>;
192fea14498SThomas Petazzoni		spi-max-frequency = <20000000>;
193fea14498SThomas Petazzoni
194fea14498SThomas Petazzoni		partitions {
195fea14498SThomas Petazzoni			compatible = "fixed-partitions";
196fea14498SThomas Petazzoni			#address-cells = <1>;
197fea14498SThomas Petazzoni			#size-cells = <1>;
198fea14498SThomas Petazzoni
199fea14498SThomas Petazzoni			partition@0 {
200fea14498SThomas Petazzoni				label = "U-Boot";
201fea14498SThomas Petazzoni				reg = <0x0 0x200000>;
202fea14498SThomas Petazzoni			};
203fea14498SThomas Petazzoni
204fea14498SThomas Petazzoni			partition@400000 {
205fea14498SThomas Petazzoni				label = "Filesystem";
206fea14498SThomas Petazzoni				reg = <0x200000 0xe00000>;
207fea14498SThomas Petazzoni			};
208fea14498SThomas Petazzoni		};
209fea14498SThomas Petazzoni	};
210fea14498SThomas Petazzoni};
211fea14498SThomas Petazzoni
21291f1be92SThomas Petazzoni&cp0_sata0 {
213fea14498SThomas Petazzoni	status = "okay";
214d04abe99SMiquel Raynal
215d04abe99SMiquel Raynal	sata-port@1 {
216d04abe99SMiquel Raynal		phys = <&cp0_comphy3 1>;
217d04abe99SMiquel Raynal		phy-names = "cp0-sata0-1-phy";
218d04abe99SMiquel Raynal	};
219fea14498SThomas Petazzoni};
220fea14498SThomas Petazzoni
22199fa8ac5SKonstantin Porotchkin&cp0_utmi {
22299fa8ac5SKonstantin Porotchkin	status = "okay";
22399fa8ac5SKonstantin Porotchkin};
22499fa8ac5SKonstantin Porotchkin
22596018a6fSMiquel Raynal&cp0_comphy1 {
22696018a6fSMiquel Raynal	cp0_usbh0_con: connector {
22796018a6fSMiquel Raynal		compatible = "usb-a-connector";
22896018a6fSMiquel Raynal		phy-supply = <&cp0_reg_usb3_0_vbus>;
22996018a6fSMiquel Raynal	};
23096018a6fSMiquel Raynal};
23196018a6fSMiquel Raynal
23291f1be92SThomas Petazzoni&cp0_usb3_0 {
23399fa8ac5SKonstantin Porotchkin	phys = <&cp0_comphy1 0>, <&cp0_utmi0>;
23499fa8ac5SKonstantin Porotchkin	phy-names = "cp0-usb3h0-comphy", "utmi";
23599fa8ac5SKonstantin Porotchkin	dr_mode = "host";
236fea14498SThomas Petazzoni	status = "okay";
237fea14498SThomas Petazzoni};
238fea14498SThomas Petazzoni
23996018a6fSMiquel Raynal&cp0_comphy4 {
24096018a6fSMiquel Raynal	cp0_usbh1_con: connector {
24196018a6fSMiquel Raynal		compatible = "usb-a-connector";
24296018a6fSMiquel Raynal		phy-supply = <&cp0_reg_usb3_1_vbus>;
24396018a6fSMiquel Raynal	};
24496018a6fSMiquel Raynal};
24596018a6fSMiquel Raynal
24691f1be92SThomas Petazzoni&cp0_usb3_1 {
24799fa8ac5SKonstantin Porotchkin	phys = <&cp0_comphy4 1>, <&cp0_utmi1>;
24899fa8ac5SKonstantin Porotchkin	phy-names = "cp0-usb3h1-comphy", "utmi";
24999fa8ac5SKonstantin Porotchkin	dr_mode = "host";
250fea14498SThomas Petazzoni	status = "okay";
251fea14498SThomas Petazzoni};
25260894719SThomas Petazzoni
253910b4c5cSGregory CLEMENT&ap_sdhci0 {
254910b4c5cSGregory CLEMENT	status = "okay";
255910b4c5cSGregory CLEMENT	bus-width = <4>;
256910b4c5cSGregory CLEMENT	no-1-8-v;
257910b4c5cSGregory CLEMENT	non-removable;
258910b4c5cSGregory CLEMENT};
259910b4c5cSGregory CLEMENT
26091f1be92SThomas Petazzoni&cp0_sdhci0 {
261910b4c5cSGregory CLEMENT	status = "okay";
262910b4c5cSGregory CLEMENT	bus-width = <4>;
263910b4c5cSGregory CLEMENT	no-1-8-v;
264c4e3bf29SGregory CLEMENT	cd-gpios = <&expander0 12 GPIO_ACTIVE_LOW>;
265910b4c5cSGregory CLEMENT};
266910b4c5cSGregory CLEMENT
26791f1be92SThomas Petazzoni&cp0_mdio {
2683c6912cdSAntoine Tenart	status = "okay";
2693c6912cdSAntoine Tenart
27060894719SThomas Petazzoni	phy0: ethernet-phy@0 {
27160894719SThomas Petazzoni		reg = <0>;
27260894719SThomas Petazzoni	};
27360894719SThomas Petazzoni	phy1: ethernet-phy@1 {
27460894719SThomas Petazzoni		reg = <1>;
27560894719SThomas Petazzoni	};
27660894719SThomas Petazzoni};
27760894719SThomas Petazzoni
27891f1be92SThomas Petazzoni&cp0_ethernet {
27960894719SThomas Petazzoni	status = "okay";
28060894719SThomas Petazzoni};
28160894719SThomas Petazzoni
28291f1be92SThomas Petazzoni&cp0_eth0 {
28330967cfeSAntoine Tenart	status = "okay";
28430967cfeSAntoine Tenart	/* Network PHY */
28545b25653SKonstantin Porotchkin	phy-mode = "10gbase-r";
28630967cfeSAntoine Tenart	/* Generic PHY, providing serdes lanes */
28791f1be92SThomas Petazzoni	phys = <&cp0_comphy2 0>;
2884640efc0SAntoine Tenart
2894640efc0SAntoine Tenart	fixed-link {
2904640efc0SAntoine Tenart		speed = <10000>;
2914640efc0SAntoine Tenart		full-duplex;
2924640efc0SAntoine Tenart	};
29330967cfeSAntoine Tenart};
29430967cfeSAntoine Tenart
29591f1be92SThomas Petazzoni&cp0_eth1 {
29660894719SThomas Petazzoni	status = "okay";
297723abeedSAntoine Tenart	/* Network PHY */
29860894719SThomas Petazzoni	phy = <&phy0>;
29960894719SThomas Petazzoni	phy-mode = "sgmii";
300723abeedSAntoine Tenart	/* Generic PHY, providing serdes lanes */
30191f1be92SThomas Petazzoni	phys = <&cp0_comphy0 1>;
30260894719SThomas Petazzoni};
30360894719SThomas Petazzoni
30491f1be92SThomas Petazzoni&cp0_eth2 {
30560894719SThomas Petazzoni	status = "okay";
30660894719SThomas Petazzoni	phy = <&phy1>;
30760894719SThomas Petazzoni	phy-mode = "rgmii-id";
30860894719SThomas Petazzoni};
309