// SPDX-License-Identifier: GPL-2.0
/*
 * Marvell 88F6281 GTW GE Board
 *
 * Lennert Buytenhek <buytenh@marvell.com>
 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
 *
 * This file contains the definitions that are common between the 6281
 * and 6282 variants of the Marvell Kirkwood Development Board.
 */

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"

/ {
	model = "Marvell 88F6281 GTW GE Board";
	compatible = "marvell,mv88f6281gtw-ge", "marvell,kirkwood-88f6281", "marvell,kirkwood";

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

	chosen {
		bootargs = "console=ttyS0,115200n8 earlyprintk";
		stdout-path = &uart0;
	};

	ocp@f1000000 {
		pin-controller@10000 {
			pmx_usb_led: pmx-usb-led {
				marvell,pins = "mpp12";
				marvell,function = "gpo";
			};

			pmx_leds: pmx-leds {
				marvell,pins = "mpp20", "mpp21";
				marvell,function = "gpio";
			};

			pmx_keys: pmx-keys {
				marvell,pins = "mpp46", "mpp47";
				marvell,function = "gpio";
			};
		};

		spi@10600 {
			status = "okay";

			flash@0 {
				#address-cells = <1>;
				#size-cells = <1>;
				compatible = "mxicy,mx25l12805d", "jedec,spi-nor";
				reg = <0>;
				spi-max-frequency = <50000000>;
				mode = <0>;
			};
		};

		serial@12000 {
			status = "okay";
		};

		ehci@50000 {
			status = "okay";
		};
	};

	gpio-leds {
		compatible = "gpio-leds";
		pinctrl-0 = <&pmx_leds &pmx_usb_led>;
		pinctrl-names = "default";

		green-status {
			label = "gtw:green:Status";
			gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
		};

		red-status {
			label = "gtw:red:Status";
			gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
		};

		green-usb {
			label = "gtw:green:USB";
			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio_keys {
		compatible = "gpio-keys";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_keys>;
		pinctrl-names = "default";

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

&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 = "lan1";
			};

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

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

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

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

			port@5 {
				reg = <5>;
				label = "cpu";
				ethernet = <&eth0port>;
				fixed-link {
					speed = <1000>;
					full-duplex;
				};
			};
		};
	};
};

&eth0 {
	status = "okay";

	ethernet0-port@0 {
		speed = <1000>;
		duplex = <1>;
	};
};

&pciec {
        status = "okay";
};

&pcie0 {
	status = "okay";
};
