// SPDX-License-Identifier: GPL-2.0
/dts-v1/;

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

/ {
	model = "Universal Scientific Industrial Co. Topkick-1281P2";
	compatible = "usi,topkick-1281P2", "usi,topkick", "marvell,kirkwood-88f6282", "marvell,kirkwood";

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

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

	ocp@f1000000 {
		pinctrl: pin-controller@10000 {
			/*
			 * Switch positions
			 *
			 *     /-SW_LEFT(2)
			 *     |
			 *     |   /-SW_IDLE
			 *     |   |
			 *     |   |   /-SW_RIGHT
			 *     |   |   |
			 * PS [L] [I] [R] LEDS
			 */
			pinctrl-0 = <&pmx_sw_left &pmx_sw_right
				     &pmx_sw_idle &pmx_sw_left2>;
			pinctrl-names = "default";

			pmx_led_disk_yellow: pmx-led-disk-yellow {
				marvell,pins = "mpp21";
				marvell,function = "gpio";
			};

			pmx_sata0_pwr_enable: pmx-sata0-pwr-enable {
				marvell,pins = "mpp36";
				marvell,function = "gpio";
			};

			pmx_led_sys_red: pmx-led-sys-red {
				marvell,pins = "mpp37";
				marvell,function = "gpio";
			};

			pmx_led_sys_blue: pmx-led-sys-blue {
				marvell,pins = "mpp38";
				marvell,function = "gpio";
			};

			pmx_led_wifi_green: pmx-led-wifi-green {
				marvell,pins = "mpp39";
				marvell,function = "gpio";
			};

			pmx_sw_left: pmx-sw-left {
				marvell,pins = "mpp43";
				marvell,function = "gpio";
			};

			pmx_sw_right: pmx-sw-right {
				marvell,pins = "mpp44";
				marvell,function = "gpio";
			};

			pmx_sw_idle: pmx-sw-idle {
				marvell,pins = "mpp45";
				marvell,function = "gpio";
			};

			pmx_sw_left2: pmx-sw-left2 {
				marvell,pins = "mpp46";
				marvell,function = "gpio";
			};

			pmx_led_wifi_yellow: pmx-led-wifi-yellow {
				marvell,pins = "mpp48";
				marvell,function = "gpio";
			};
		};

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

		sata@80000 {
			status = "okay";
			nr-ports = <1>;
		};

		i2c@11000 {
			status = "okay";
		};

		mvsdio@90000 {
			pinctrl-0 = <&pmx_sdio>;
			pinctrl-names = "default";
			status = "okay";
			/* No CD or WP GPIOs */
			broken-cd;
		};
	};

	gpio-leds {
		/*
		 * GPIO LED layout
		 *
		 *       /-SYS_LED(2)
		 *       |
		 *       |   /-DISK_LED
		 *       |   |
		 *       |   |   /-WLAN_LED(2)
		 *       |   |   |
		 * [SW] [*] [*] [*]
		 */

		compatible = "gpio-leds";
		pinctrl-0 = <&pmx_led_disk_yellow &pmx_led_sys_red
			     &pmx_led_sys_blue &pmx_led_wifi_green
			     &pmx_led_wifi_yellow>;
		pinctrl-names = "default";

		disk {
			label = "topkick:yellow:disk";
			gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "disk-activity";
		};
		system2 {
			label = "topkick:red:system";
			gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
		};
		system {
			label = "topkick:blue:system";
			gpios = <&gpio1 6 GPIO_ACTIVE_LOW>;
			default-state = "on";
		};
		wifi {
			label = "topkick:green:wifi";
			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
		};
		wifi2 {
			label = "topkick:yellow:wifi";
			gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
		};
	};
	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-0 = <&pmx_sata0_pwr_enable>;
		pinctrl-names = "default";

		sata0_power: regulator@1 {
			compatible = "regulator-fixed";
			reg = <1>;
			regulator-name = "SATA0 Power";
			regulator-min-microvolt = <5000000>;
			regulator-max-microvolt = <5000000>;
			enable-active-high;
			regulator-always-on;
			regulator-boot-on;
			gpio = <&gpio1 4 0>;
		};
	};
};

&nand {
	status = "okay";

	partition@0 {
		label = "u-boot";
		reg = <0x0000000 0x180000>;
	};

	partition@180000 {
		label = "u-boot env";
		reg = <0x0180000 0x20000>;
	};

	partition@200000 {
		label = "uImage";
		reg = <0x0200000 0x600000>;
	};

	partition@800000 {
		label = "uInitrd";
		reg = <0x0800000 0x1000000>;
	};

	partition@1800000 {
		label = "rootfs";
		reg = <0x1800000 0xe800000>;
	};
};

&mdio {
	status = "okay";

	ethphy0: ethernet-phy@0 {
		reg = <0>;
	};
};

&eth0 {
	status = "okay";
	ethernet0-port@0 {
		phy-handle = <&ethphy0>;
	};
};