162306a36Sopenharmony_ci// SPDX-License-Identifier: (GPL-2.0 OR MIT)
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Device Tree file for SolidRun Clearfog Pro revision A1 rev 2.0 (88F6828)
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci *  Copyright (C) 2015 Russell King
662306a36Sopenharmony_ci */
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci/dts-v1/;
962306a36Sopenharmony_ci#include "armada-388-clearfog.dtsi"
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci/ {
1262306a36Sopenharmony_ci	model = "SolidRun Clearfog A1";
1362306a36Sopenharmony_ci	compatible = "solidrun,clearfog-a1", "marvell,armada388",
1462306a36Sopenharmony_ci		"marvell,armada385", "marvell,armada380";
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci	soc {
1762306a36Sopenharmony_ci		internal-regs {
1862306a36Sopenharmony_ci			usb3@f0000 {
1962306a36Sopenharmony_ci				/* CON2, nearest CPU, USB2 only. */
2062306a36Sopenharmony_ci				status = "okay";
2162306a36Sopenharmony_ci			};
2262306a36Sopenharmony_ci		};
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci		pcie {
2562306a36Sopenharmony_ci			pcie@3,0 {
2662306a36Sopenharmony_ci				/* Port 2, Lane 0. CON2, nearest CPU. */
2762306a36Sopenharmony_ci				reset-gpios = <&expander0 2 GPIO_ACTIVE_LOW>;
2862306a36Sopenharmony_ci				status = "okay";
2962306a36Sopenharmony_ci			};
3062306a36Sopenharmony_ci		};
3162306a36Sopenharmony_ci	};
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci	gpio-keys {
3462306a36Sopenharmony_ci		compatible = "gpio-keys";
3562306a36Sopenharmony_ci		pinctrl-0 = <&rear_button_pins>;
3662306a36Sopenharmony_ci		pinctrl-names = "default";
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci		button-0 {
3962306a36Sopenharmony_ci			/* The rear SW3 button */
4062306a36Sopenharmony_ci			label = "Rear Button";
4162306a36Sopenharmony_ci			gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
4262306a36Sopenharmony_ci			linux,can-disable;
4362306a36Sopenharmony_ci			linux,code = <BTN_0>;
4462306a36Sopenharmony_ci		};
4562306a36Sopenharmony_ci	};
4662306a36Sopenharmony_ci};
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci&eth1 {
4962306a36Sopenharmony_ci	/* ethernet@30000 */
5062306a36Sopenharmony_ci	phy-mode = "1000base-x";
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	fixed-link {
5362306a36Sopenharmony_ci		speed = <1000>;
5462306a36Sopenharmony_ci		full-duplex;
5562306a36Sopenharmony_ci	};
5662306a36Sopenharmony_ci};
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci&expander0 {
5962306a36Sopenharmony_ci	/*
6062306a36Sopenharmony_ci	 * PCA9655 GPIO expander:
6162306a36Sopenharmony_ci	 *  0-CON3 CLKREQ#
6262306a36Sopenharmony_ci	 *  1-CON3 PERST#
6362306a36Sopenharmony_ci	 *  2-CON2 PERST#
6462306a36Sopenharmony_ci	 *  3-CON3 W_DISABLE
6562306a36Sopenharmony_ci	 *  4-CON2 CLKREQ#
6662306a36Sopenharmony_ci	 *  5-USB3 overcurrent
6762306a36Sopenharmony_ci	 *  6-USB3 power
6862306a36Sopenharmony_ci	 *  7-CON2 W_DISABLE
6962306a36Sopenharmony_ci	 *  8-JP4 P1
7062306a36Sopenharmony_ci	 *  9-JP4 P4
7162306a36Sopenharmony_ci	 * 10-JP4 P5
7262306a36Sopenharmony_ci	 * 11-m.2 DEVSLP
7362306a36Sopenharmony_ci	 * 12-SFP_LOS
7462306a36Sopenharmony_ci	 * 13-SFP_TX_FAULT
7562306a36Sopenharmony_ci	 * 14-SFP_TX_DISABLE
7662306a36Sopenharmony_ci	 * 15-SFP_MOD_DEF0
7762306a36Sopenharmony_ci	 */
7862306a36Sopenharmony_ci	pcie2-0-clkreq-hog {
7962306a36Sopenharmony_ci		gpio-hog;
8062306a36Sopenharmony_ci		gpios = <4 GPIO_ACTIVE_LOW>;
8162306a36Sopenharmony_ci		input;
8262306a36Sopenharmony_ci		line-name = "pcie2.0-clkreq";
8362306a36Sopenharmony_ci	};
8462306a36Sopenharmony_ci	pcie2-0-w-disable-hog {
8562306a36Sopenharmony_ci		gpio-hog;
8662306a36Sopenharmony_ci		gpios = <7 GPIO_ACTIVE_LOW>;
8762306a36Sopenharmony_ci		output-low;
8862306a36Sopenharmony_ci		line-name = "pcie2.0-w-disable";
8962306a36Sopenharmony_ci	};
9062306a36Sopenharmony_ci};
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci&mdio {
9362306a36Sopenharmony_ci	status = "okay";
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci	switch@4 {
9662306a36Sopenharmony_ci		compatible = "marvell,mv88e6085";
9762306a36Sopenharmony_ci		#address-cells = <1>;
9862306a36Sopenharmony_ci		#size-cells = <0>;
9962306a36Sopenharmony_ci		reg = <4>;
10062306a36Sopenharmony_ci		pinctrl-0 = <&clearfog_dsa0_clk_pins &clearfog_dsa0_pins>;
10162306a36Sopenharmony_ci		pinctrl-names = "default";
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci		ports {
10462306a36Sopenharmony_ci			#address-cells = <1>;
10562306a36Sopenharmony_ci			#size-cells = <0>;
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci			port@0 {
10862306a36Sopenharmony_ci				reg = <0>;
10962306a36Sopenharmony_ci				label = "lan5";
11062306a36Sopenharmony_ci			};
11162306a36Sopenharmony_ci
11262306a36Sopenharmony_ci			port@1 {
11362306a36Sopenharmony_ci				reg = <1>;
11462306a36Sopenharmony_ci				label = "lan4";
11562306a36Sopenharmony_ci			};
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci			port@2 {
11862306a36Sopenharmony_ci				reg = <2>;
11962306a36Sopenharmony_ci				label = "lan3";
12062306a36Sopenharmony_ci			};
12162306a36Sopenharmony_ci
12262306a36Sopenharmony_ci			port@3 {
12362306a36Sopenharmony_ci				reg = <3>;
12462306a36Sopenharmony_ci				label = "lan2";
12562306a36Sopenharmony_ci			};
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci			port@4 {
12862306a36Sopenharmony_ci				reg = <4>;
12962306a36Sopenharmony_ci				label = "lan1";
13062306a36Sopenharmony_ci			};
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci			port@5 {
13362306a36Sopenharmony_ci				reg = <5>;
13462306a36Sopenharmony_ci				ethernet = <&eth1>;
13562306a36Sopenharmony_ci				phy-mode = "1000base-x";
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci				fixed-link {
13862306a36Sopenharmony_ci					speed = <1000>;
13962306a36Sopenharmony_ci					full-duplex;
14062306a36Sopenharmony_ci				};
14162306a36Sopenharmony_ci			};
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci			port@6 {
14462306a36Sopenharmony_ci				/* 88E1512 external phy */
14562306a36Sopenharmony_ci				reg = <6>;
14662306a36Sopenharmony_ci				label = "lan6";
14762306a36Sopenharmony_ci				phy-mode = "rgmii-id";
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci				fixed-link {
15062306a36Sopenharmony_ci					speed = <1000>;
15162306a36Sopenharmony_ci					full-duplex;
15262306a36Sopenharmony_ci				};
15362306a36Sopenharmony_ci			};
15462306a36Sopenharmony_ci		};
15562306a36Sopenharmony_ci	};
15662306a36Sopenharmony_ci};
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci&pinctrl {
15962306a36Sopenharmony_ci	clearfog_dsa0_clk_pins: clearfog-dsa0-clk-pins {
16062306a36Sopenharmony_ci		marvell,pins = "mpp46";
16162306a36Sopenharmony_ci		marvell,function = "ref";
16262306a36Sopenharmony_ci	};
16362306a36Sopenharmony_ci	clearfog_dsa0_pins: clearfog-dsa0-pins {
16462306a36Sopenharmony_ci		marvell,pins = "mpp23", "mpp41";
16562306a36Sopenharmony_ci		marvell,function = "gpio";
16662306a36Sopenharmony_ci	};
16762306a36Sopenharmony_ci	clearfog_spi1_cs_pins: spi1-cs-pins {
16862306a36Sopenharmony_ci		marvell,pins = "mpp55";
16962306a36Sopenharmony_ci		marvell,function = "spi1";
17062306a36Sopenharmony_ci	};
17162306a36Sopenharmony_ci	rear_button_pins: rear-button-pins {
17262306a36Sopenharmony_ci		marvell,pins = "mpp34";
17362306a36Sopenharmony_ci		marvell,function = "gpio";
17462306a36Sopenharmony_ci	};
17562306a36Sopenharmony_ci};
17662306a36Sopenharmony_ci
17762306a36Sopenharmony_ci&spi1 {
17862306a36Sopenharmony_ci	/*
17962306a36Sopenharmony_ci	 * Add SPI CS pins for clearfog:
18062306a36Sopenharmony_ci	 * CS0: W25Q32
18162306a36Sopenharmony_ci	 * CS1:
18262306a36Sopenharmony_ci	 * CS2: mikrobus
18362306a36Sopenharmony_ci	 */
18462306a36Sopenharmony_ci	pinctrl-0 = <&spi1_pins &clearfog_spi1_cs_pins &mikro_spi_pins>;
18562306a36Sopenharmony_ci};
186