// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Device Tree file for Globalscale Marvell ESPRESSOBin Board
 * Copyright (C) 2016 Marvell
 *
 * Romain Perier <romain.perier@free-electrons.com>
 *
 */

#include <dt-bindings/gpio/gpio.h>
#include "armada-372x.dtsi"

/ {
	aliases {
		ethernet0 = &eth0;
		/* for dsa slave device */
		ethernet1 = &switch0port1;
		ethernet2 = &switch0port2;
		ethernet3 = &switch0port3;
		serial0 = &uart0;
		serial1 = &uart1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	memory@0 {
		device_type = "memory";
		reg = <0x00000000 0x00000000 0x00000000 0x20000000>;
	};

	vcc_sd_reg1: regulator {
		compatible = "regulator-gpio";
		regulator-name = "vcc_sd1";
		regulator-min-microvolt = <1800000>;
		regulator-max-microvolt = <3300000>;
		regulator-boot-on;

		gpios = <&gpionb 4 GPIO_ACTIVE_HIGH>;
		gpios-states = <0>;
		states = <1800000 0x1
			  3300000 0x0>;
		enable-active-high;
	};
};

/* J9 */
&pcie0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
	reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
};

/* J6 */
&sata {
	status = "okay";
	phys = <&comphy2 0>;
	phy-names = "sata-phy";
};

/* J1 */
&sdhci1 {
	wp-inverted;
	bus-width = <4>;
	cd-gpios = <&gpionb 3 GPIO_ACTIVE_LOW>;
	marvell,pad-type = "sd";
	vqmmc-supply = <&vcc_sd_reg1>;

	pinctrl-names = "default";
	pinctrl-0 = <&sdio_pins>;
	status = "okay";
};

&spi0 {
	status = "okay";

	flash@0 {
		reg = <0>;
		compatible = "jedec,spi-nor";
		spi-max-frequency = <104000000>;
		m25p,fast-read;
	};
};

/* Exported on the micro USB connector J5 through an FTDI */
&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart1_pins>;
	status = "okay";
};

/*
 * Connector J17 and J18 expose a number of different features. Some pins are
 * multiplexed. This is the case for instance for the following features:
 * - UART1 (pin 24 = RX, pin 26 = TX). See armada-3720-db.dts for an example of
 *   how to enable it. Beware that the signals are 1.8V TTL.
 * - I2C
 * - SPI
 * - MMC
 */

/* J7 */
&usb3 {
	status = "okay";
};

/* J8 */
&usb2 {
	status = "okay";
};

&mdio {
	switch0: switch0@1 {
		compatible = "marvell,mv88e6085";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <1>;

		dsa,member = <0 0>;

		ports {
			#address-cells = <1>;
			#size-cells = <0>;

			switch0port0: port@0 {
				reg = <0>;
				label = "cpu";
				ethernet = <&eth0>;
				phy-mode = "rgmii-id";
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};

			switch0port1: port@1 {
				reg = <1>;
				label = "wan";
				phy-handle = <&switch0phy0>;
			};

			switch0port2: port@2 {
				reg = <2>;
				label = "lan0";
				phy-handle = <&switch0phy1>;
			};

			switch0port3: port@3 {
				reg = <3>;
				label = "lan1";
				phy-handle = <&switch0phy2>;
			};

		};

		mdio {
			#address-cells = <1>;
			#size-cells = <0>;

			switch0phy0: switch0phy0@11 {
				reg = <0x11>;
			};
			switch0phy1: switch0phy1@12 {
				reg = <0x12>;
			};
			switch0phy2: switch0phy2@13 {
				reg = <0x13>;
			};
		};
	};
};

&eth0 {
	pinctrl-names = "default";
	pinctrl-0 = <&rgmii_pins>, <&smi_pins>;
	phy-mode = "rgmii-id";
	status = "okay";

	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};
