// SPDX-License-Identifier: GPL-2.0
/*
 * kirkwood-pogoplug-series-4.dts - Device tree file for PogoPlug Series 4
 * inspired by the board files made by Kevin Mihelich for ArchLinux,
 * and their DTS file.
 *
 * Copyright (C) 2015 Linus Walleij <linus.walleij@linaro.org>
 */

/dts-v1/;

#include "kirkwood.dtsi"
#include "kirkwood-6192.dtsi"
#include <dt-bindings/input/linux-event-codes.h>

/ {
	model = "Cloud Engines PogoPlug Series 4";
	compatible = "cloudengines,pogoplugv4", "marvell,kirkwood-88f6192",
		     "marvell,kirkwood";

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

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

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

		eject {
			debounce-interval = <50>;
			wakeup-source;
			linux,code = <KEY_EJECTCD>;
			label = "Eject Button";
			gpios = <&gpio0 29 GPIO_ACTIVE_LOW>;
		};
	};

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

		health {
			label = "pogoplugv4:green:health";
			gpios = <&gpio0 22 GPIO_ACTIVE_LOW>;
			default-state = "on";
		};
		fault {
			label = "pogoplugv4:red:fault";
			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
		};
	};
};

&pinctrl {
	pmx_sata0: pmx-sata0 {
		marvell,pins = "mpp21";
		marvell,function = "sata0";
	};

	pmx_sata1: pmx-sata1 {
		marvell,pins = "mpp20";
		marvell,function = "sata1";
	};

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

	pmx_sdio_wp: pmx-sdio-wp {
		marvell,pins = "mpp28";
		marvell,function = "gpio";
	};

	pmx_button_eject: pmx-button-eject {
		marvell,pins = "mpp29";
		marvell,function = "gpio";
	};

	pmx_led_green: pmx-led-green {
		marvell,pins = "mpp22";
		marvell,function = "gpio";
	};

	pmx_led_red: pmx-led-red {
		marvell,pins = "mpp24";
		marvell,function = "gpio";
	};
};

&uart0 {
	status = "okay";
};

/*
 * This PCIE controller has a USB 3.0 XHCI controller at 1,0
 */
&pciec {
	status = "okay";
};

&pcie0 {
	status = "okay";
};

&sata {
	status = "okay";
	pinctrl-0 = <&pmx_sata0 &pmx_sata1>;
	pinctrl-names = "default";
	nr-ports = <1>;
};

&sdio {
	status = "okay";
	pinctrl-0 = <&pmx_sdio &pmx_sdio_cd &pmx_sdio_wp>;
	pinctrl-names = "default";
	cd-gpios = <&gpio0 27 GPIO_ACTIVE_LOW>;
	wp-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
};

&nand {
	/* 128 MiB of NAND flash */
	chip-delay = <40>;
	status = "okay";
	partitions {
		compatible = "fixed-partitions";
		#address-cells = <1>;
		#size-cells = <1>;

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

		partition@200000 {
			label = "uImage";
			reg = <0x00200000 0x300000>;
		};

		partition@500000 {
			label = "uImage2";
			reg = <0x00500000 0x300000>;
		};

		partition@800000 {
			label = "failsafe";
			reg = <0x00800000 0x800000>;
		};

		partition@1000000 {
			label = "root";
			reg = <0x01000000 0x7000000>;
		};
	};
};

&mdio {
	status = "okay";

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

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