// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
 * Endian 4i Edge 200 Board Description
 * Note: Endian UTM Mini is hardware clone of Endian Edge 200
 * Copyright 2021-2022 Pawel Dembicki <paweldembicki@gmail.com>
 */

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6281.dtsi"
#include <dt-bindings/leds/common.h>

/ {
	model = "Endian 4i Edge 200";
	compatible = "endian,4i-edge-200", "marvell,kirkwood-88f6281", "marvell,kirkwood";

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

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

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

		led-1 {
			function = LED_FUNCTION_SD;
			color = <LED_COLOR_ID_AMBER>;
			gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "mmc0";
		};

		led-2 {
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_AMBER>;
			gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
		};

		led-3 {
			function = LED_FUNCTION_STATUS;
			color = <LED_COLOR_ID_GREEN>;
			gpios = <&gpio1 17 GPIO_ACTIVE_HIGH>;
		};
	};
};

&eth0 {
	status = "okay";
};

&eth0port {
	speed = <1000>;
	duplex = <1>;
};

&eth1 {
	status = "okay";
};

&eth1port {
	phy-handle = <&ethphyb>;
};

&mdio {
	status = "okay";

	ethphyb: ethernet-phy@b {
		reg = <0x0b>;

		marvell,reg-init =
			/* link-activity, bi-color mode 4 */
			<3 0x10 0xfff0 0xf>; /* Reg 3,16 <- 0xzzzf */
	};

	switch0: switch@11 {
		compatible = "marvell,mv88e6085";
		reg = <0x11>;

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

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

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

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

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

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

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

	partition@a0000 {
		label = "u-boot-env";
		reg = <0x000a0000 0x00060000>;
		read-only;
	};

	partition@100000 {
		label = "kernel";
		reg = <0x00100000 0x00400000>;
	};

	partition@500000 {
		label = "ubi";
		reg = <0x00500000 0x1fb00000>;
	};
};

&pciec {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&pinctrl {
	pinctrl-0 = <&pmx_sysrst>;
	pinctrl-names = "default";

	pmx_sysrst: pmx-sysrst {
		marvell,pins = "mpp6";
		marvell,function = "sysrst";
	};

	pmx_sdio_cd: pmx-sdio-cd {
		marvell,pins = "mpp28";
		marvell,function = "gpio";
	};

	pmx_led: pmx-led {
		marvell,pins = "mpp34", "mpp35", "mpp49";
		marvell,function = "gpio";
	};
};

&rtc {
	status = "okay";
};

&sata_phy0 {
	status = "disabled";
};

&sata_phy1 {
	status = "disabled";
};

&sdio {
	pinctrl-0 = <&pmx_sdio_cd>;
	pinctrl-names = "default";
	status = "okay";
	cd-gpios = <&gpio0 28 9>;
};

&uart0 {
	status = "okay";
};

&usb0 {
	status = "okay";
};
