// 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>;
				label = "cpu";
				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>;
	};
};

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

