// 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";

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

		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";

	switch@0 {
		compatible = "marvell,mv88e6085";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0>;

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

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

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

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

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

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

			port@5 {
				reg = <5>;
				label = "cpu";
				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";
};
