// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Device Tree include file for Armada 385 based Linksys boards
 *
 * Copyright (C) 2015 Imre Kaloz <kaloz@openwrt.org>
 */

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>
#include "armada-385.dtsi"

/ {
	model = "Linksys boards based on Armada 385";
	compatible = "linksys,armada385", "marvell,armada385",
		     "marvell,armada380";

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

	memory {
		device_type = "memory";
		reg = <0x00000000 0x20000000>; /* 512 MiB */
	};

	soc {
		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
			  MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
			  MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
			  MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000
			  MBUS_ID(0x0c, 0x04) 0 0xf1200000 0x100000>;
	};

	usb3_1_phy: usb3_1-phy {
		compatible = "usb-nop-xceiv";
		vcc-supply = <&usb3_1_vbus>;
		#phy-cells = <0>;
	};

	usb3_1_vbus: usb3_1-vbus {
		compatible = "regulator-fixed";
		pinctrl-names = "default";
		pinctrl-0 = <&usb3_1_vbus_pins>;
		regulator-name = "usb3_1-vbus";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>;
	};

	gpio_keys: gpio-keys {
		compatible = "gpio-keys";
		pinctrl-0 = <&gpio_keys_pins>;
		pinctrl-names = "default";

		button-wps {
			label = "WPS";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
		};

		button-reset {
			label = "Factory Reset Button";
			linux,code = <KEY_RESTART>;
			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
		};
	};

	gpio_leds: gpio-leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&gpio_leds_pins>;
		pinctrl-names = "default";

		led-power {
			gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};

		led-sata {
			gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
			default-state = "off";
			linux,default-trigger = "disk-activity";
		};
	};
};

&ahci0 {
	status = "okay";
};

&bm {
	status = "okay";
};

&bm_bppi {
	status = "okay";
};

&eth0 {
	status = "okay";
	phy-mode = "rgmii-id";
	buffer-manager = <&bm>;
	bm,pool-long = <0>;
	bm,pool-short = <1>;
	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};

&eth2 {
	status = "okay";
	phy-mode = "sgmii";
	buffer-manager = <&bm>;
	bm,pool-long = <2>;
	bm,pool-short = <3>;
	fixed-link {
		speed = <1000>;
		full-duplex;
	};
};

&i2c0 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "okay";

	tmp421@4c {
		compatible = "ti,tmp421";
		reg = <0x4c>;
	};

	expander0: pca9635@68 {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "nxp,pca9635";
		reg = <0x68>;
	};
};

&nand_controller {
	/* 128MiB or 256MiB */
	status = "okay";
	#address-cells = <1>;
	#size-cells = <0>;

	nand: nand@0 {
		reg = <0>;
		label = "pxa3xx_nand-0";
		nand-rb = <0>;
		nand-ecc-strength = <4>;
		nand-ecc-step-size = <512>;
		marvell,nand-keep-config;
		nand-on-flash-bbt;
	};
};

&mdio {
	status = "okay";

	ethernet-switch@0 {
		compatible = "marvell,mv88e6085";
		reg = <0>;

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

			ethernet-port@0 {
				reg = <0>;
				label = "lan4";
			};

			ethernet-port@1 {
				reg = <1>;
				label = "lan3";
			};

			ethernet-port@2 {
				reg = <2>;
				label = "lan2";
			};

			ethernet-port@3 {
				reg = <3>;
				label = "lan1";
			};

			ethernet-port@4 {
				reg = <4>;
				label = "wan";
			};

			ethernet-port@5 {
				reg = <5>;
				phy-mode = "sgmii";
				ethernet = <&eth2>;

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

&pciec {
	status = "okay";
};

&pcie1 {
	/* Marvell 88W8864, 5GHz-only */
	status = "okay";
};

&pcie2 {
	/* Marvell 88W8864, 2GHz-only */
	status = "okay";
};

&pinctrl {
	gpio_keys_pins: gpio-keys-pins {
		/* mpp24: wps, mpp29: reset */
		marvell,pins = "mpp24", "mpp29";
		marvell,function = "gpio";
	};

	gpio_leds_pins: gpio-leds-pins {
		/* mpp54: sata, mpp55: power */
		marvell,pins = "mpp54", "mpp55";
		marvell,function = "gpio";
	};

	usb3_1_vbus_pins: usb3_1-vbus-pins {
		marvell,pins = "mpp50";
		marvell,function = "gpio";
	};
};

&spi0 {
	status = "disabled";
};

&uart0 {
	/* J10: VCC, NC, RX, NC, TX, GND  */
	status = "okay";
};

&usb0 {
	/* USB part of the eSATA/USB 2.0 port */
	status = "okay";
};

&usb3_1 {
	status = "okay";
	usb-phy = <&usb3_1_phy>;
};

&rtc {
	/* No crystal connected to the internal RTC */
	status = "disabled";
};
