// SPDX-License-Identifier: GPL-2.0
/*
 * Device Tree common file for the Seagate NAS 2 and 4-bay (Armada 370 SoC).
 *
 * Copyright (C) 2015 Seagate
 *
 * Author: Vincent Donnefort <vdonnefort@gmail.com>
 */

/*
 * TODO: add support for the white SATA LEDs associated with HDD 0 and 1.
 */

#include "armada-370.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

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

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

	soc {
		ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
			  MBUS_ID(0x01, 0xe0) 0 0xfff00000 0x100000>;

		internal-regs {
			serial@12000 {
				status = "okay";
			};

			sata@a0000 {
				nr-ports = <2>;
				status = "okay";
			};

			ethernet@70000 {
				status = "okay";
				pinctrl-0 = <&ge0_rgmii_pins>;
				pinctrl-names = "default";
				phy = <&phy0>;
				phy-mode = "rgmii-id";
			};

			i2c@11000 {
				status = "okay";
				pinctrl-0 = <&i2c0_pins>;
				pinctrl-names = "default";
				clock-frequency = <100000>;

				/* RTC - NXP 8563T (second source) */
				rtc@51 {
					compatible = "nxp,pcf8563";
					reg = <0x51>;
					interrupts = <110>;
				};
				/* RTC - MCP7940NT */
				rtc@6f {
					compatible = "microchip,mcp7941x";
					reg = <0x6f>;
					interrupts = <110>;
				};
			};
		};

	};

	regulator-1 {
		compatible = "regulator-fixed";
		regulator-name = "SATA0 power";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		regulator-always-on;
		regulator-boot-on;
		gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>;
	};

	regulator-2 {
		compatible = "regulator-fixed";
		regulator-name = "SATA1 power";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		regulator-always-on;
		regulator-boot-on;
		gpio = <&gpio1 22 GPIO_ACTIVE_HIGH>;
	};

	gpio-fan {
		compatible = "gpio-fan";
		gpios = <&gpio2 0 GPIO_ACTIVE_HIGH
			 &gpio2 1 GPIO_ACTIVE_HIGH>;
	};

	gpio-keys {
		compatible = "gpio-keys";

		button-power {
			label = "Power button";
			linux,code = <KEY_POWER>;
			gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
			debounce-interval = <100>;
		};
		button-backup {
			label = "Backup button";
			linux,code = <KEY_OPTION>;
			gpios = <&gpio0 31 GPIO_ACTIVE_LOW>;
			debounce-interval = <100>;
		};
		button-reset {
			label = "Reset Button";
			linux,code = <KEY_RESTART>;
			gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
			debounce-interval = <100>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";

		led-white-power {
			label = "dart:white:power";
			gpios = <&gpio1 28 GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "timer";

		};
		led-red-power {
			label = "dart:red:power";
			gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
		};
		led-red-sata0 {
			label = "dart:red:sata0";
			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
		};
		led-red-sata1 {
			label = "dart:red:sata1";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
		};
	};

	gpio_poweroff {
		compatible = "gpio-poweroff";
		gpios = <&gpio1 30 GPIO_ACTIVE_LOW>;
	};
};

&pciec {
	status = "okay";

	/* USB 3.0 bridge ASM1042A */
	pcie@2,0 {
		status = "okay";
	};
};


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

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

&pinctrl {
	pinctrl-0 = <&hdd0_led_sata_pin>, <&hdd1_led_sata_pin>;
	pinctrl-names = "default";

	hdd0_led_sata_pin: hdd0-led-sata-pin {
		marvell,pins = "mpp48";
		marvell,function = "sata1";
	};
	hdd0_led_gpio_pin: hdd0-led-gpio-pin {
		marvell,pins = "mpp48";
		marvell,function = "gpio";
	};
	hdd1_led_sata_pin: hdd1-led-sata-pin {
		marvell,pins = "mpp57";
		marvell,function = "sata0";
	};
	hdd1_led_gpio_pin: hdd1-led-gpio-pin {
		marvell,pins = "mpp57";
		marvell,function = "gpio";
	};
};

&nand_controller {
	status = "okay";

	nand@0 {
		reg = <0>;
		label = "pxa3xx_nand-0";
		nand-rb = <0>;
		marvell,nand-keep-config;
		nand-on-flash-bbt;
		nand-ecc-strength = <4>;
		nand-ecc-step-size = <512>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			partition@0 {
				label = "u-boot";
				reg = <0x0 0x300000>;
			};
			partition@300000 {
				label = "device-tree";
				reg = <0x300000 0x20000>;
			};
			partition@320000 {
				label = "linux";
				reg = <0x320000 0x2000000>;
			};
			partition@2320000 {
				label = "rootfs";
				reg = <0x2320000 0xdce0000>;
			};
		};
	};
};
