// SPDX-License-Identifier: GPL-2.0-only
/*
 * kirkwood-linksys-audi.dts - Device Tree file for Linksys EA3500
 *
 * (c) 2013 Jonas Gorski <jogo@openwrt.org>
 * (c) 2013 Deutsche Telekom Innovation Laboratories
 * (c) 2014 Luka Perkov <luka@openwrt.org>
 * (c) 2014 Dan Walters <dan@walters.io>
 *
 */

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6282.dtsi"

/ {
	model = "Linksys EA3500 (Audi)";
	compatible = "linksys,ea3500", "linksys,audi", "marvell,kirkwood-88f6282", "marvell,kirkwood";

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

	aliases {
		led-boot = &led_power;
		led-failsafe = &led_power;
		led-running = &led_power;
		led-upgrade = &led_power;
		serial0 = &uart0;
	};

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

	gpio-keys {
		compatible = "gpio-keys";

		pinctrl-0 = <&pmx_btn_wps &pmx_btn_reset>;
		pinctrl-names = "default";

		wps {
			label = "WPS Button";
			linux,code = <KEY_WPS_BUTTON>;
			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
		};

		reset {
			label = "Reset Button";
			linux,code = <KEY_RESTART>;
			gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";

		pinctrl-0 = <&pmx_led_green_power>;
		pinctrl-names = "default";

		led_power: power {
			label = "audi:green:power";
			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
			default-state = "on";
		};
	};
};

&pinctrl {
	pmx_led_green_power: pmx-led-green-power {
		marvell,pins = "mpp7";
		marvell,function = "gpo";
	};

	pmx_btn_wps: pmx-btn-wps {
		marvell,pins = "mpp47";
		marvell,function = "gpio";
	};

	pmx_btn_reset: pmx-btn-reset {
		marvell,pins = "mpp48";
		marvell,function = "gpio";
	};
};

&mdio {
	status = "okay";

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

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

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

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

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

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

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

			port@5 {
				reg = <5>;
				phy-mode = "rgmii-id";
				ethernet = <&eth0port>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};
		};
	};
};

&nand {
	status = "okay";

	pinctrl-0 = <&pmx_nand>;
	pinctrl-names = "default";

	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

		partition@0 {
			label = "u-boot";
			reg = <0x0 0x80000>;
			read-only;
		};

		partition@80000 {
			label = "u_env";
			reg = <0x80000 0x4000>;
		};

		partition@84000 {
			label = "s_env";
			reg = <0x84000 0x4000>;
		};

		partition@200000 {
			label = "kernel1";
			reg = <0x200000 0x1400000>;
		};

		partition@600000 {
			label = "rootfs1";
			reg = <0x600000 0x1000000>;
		};

		partition@1600000 {
			label = "kernel2";
			reg = <0x1600000 0x1400000>;
		};

		partition@1a00000 {
			label = "rootfs2";
			reg = <0x1a00000 0x1000000>;
		};

		partition@2a00000 {
			label = "syscfg";
			reg = <0x2a00000  0x1600000>;
		};

		partition@88000 {
			label = "unused";
			reg = <0x88000 0x178000>;
		};
	};
};

&pciec {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&pcie1 {
	status = "okay";
};

&mdio {
	status = "okay";
};

&uart0 {
	status = "okay";
};

/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set
 * fixed speed and duplex.
 */
&eth0 {
	status = "okay";

	ethernet0-port@0 {
		speed = <1000>;
		duplex = <1>;
		phy-mode = "rgmii";
	};
};

/* eth1 is connected to the switch at port 6. However DSA only supports a
 * single CPU port. This port is disabled to avoid confusion.
 */
&eth1 {
	status = "disabled";
};

/* There is no battery on the board, so the RTC does not keep
 * time when there is no power, making it useless.
 */
&rtc {
	status = "disabled";
};
