// 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>;
				};
			};
		};

	};

	regulators {
		compatible = "simple-bus";
		#address-cells = <1>;
		#size-cells = <0>;
		pinctrl-names = "default";

		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 18 GPIO_ACTIVE_HIGH>;
		};
		regulator@2 {
			compatible = "regulator-fixed";
			reg = <2>;
			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>;
			};
		};
	};
};
