// SPDX-License-Identifier: GPL-2.0
/*
 * kirkwood-viper.dts - Device Tree file for Linksys viper (E4200v2 / EA4500)
 *
 * (c) 2013 Jonas Gorski <jogo@openwrt.org>
 * (c) 2013 Deutsche Telekom Innovation Laboratories
 * (c) 2014 Luka Perkov <luka@openwrt.org>
 * (c) 2014 Randy C. Will <randall.will@gmail.com>
 *
 */

/dts-v1/;

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

/ {
	model = "Linksys Viper (E4200v2 / EA4500)";
	compatible = "linksys,viper", "marvell,kirkwood-88f6282", "marvell,kirkwood";

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

	aliases {
		serial0 = &uart0;
	};

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

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		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_white_health &pmx_led_white_pulse >;
		pinctrl-names = "default";

		white-health {
			label = "viper:white:health";
			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
		};

		white-pulse {
			label = "viper:white:pulse";
			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
		};
	};
};

&pinctrl {
	pmx_led_white_health: pmx-led-white-health {
		marvell,pins = "mpp7";
		marvell,function = "gpo";
	};
	pmx_led_white_pulse: pmx-led-white-pulse {
		marvell,pins = "mpp14";
		marvell,function = "gpio";
	};
	pmx_btn_wps: pmx-btn-wps {
		marvell,pins = "mpp47";
		marvell,function = "gpio";
	};
	pmx_btn_reset: pmx-btn-reset {
		marvell,pins = "mpp48";
		marvell,function = "gpio";
	};
};

&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 0x20000>;
		};

		partition@a0000 {
			label = "s_env";
			reg = <0xA0000 0x20000>;
		};

		partition@200000 {
			label = "kernel";
			reg = <0x200000 0x2A0000>;
		};

		partition@4a0000 {
			label = "rootfs";
			reg = <0x4A0000 0x1760000>;
		};

		partition@1c00000 {
			label = "alt_kernel";
			reg = <0x1C00000 0x2A0000>;
		};

		partition@1ea0000 {
			label = "alt_rootfs";
			reg = <0x1EA0000 0x1760000>;
		};

		partition@3600000 {
			label = "syscfg";
			reg = <0x3600000 0x4A00000>;
		};

		partition@c0000 {
			label = "unused";
			reg = <0xC0000 0x140000>;
		};

	};
};

&pciec {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&pcie1 {
	status = "okay";
};

&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;
				};
			};
		};
	};
};

&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. So leave this port 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";
};

