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

/*
 * Here are some information allowing to identify the device:
 *
 * Product name                 : Seagate NAS 4-Bay
 * Code name (board/PCB)        : Dart 4-Bay
 * Model name (case sticker)    : SRPD40
 * Material desc (product spec) : STCUxxxxxxx
 */

/dts-v1/;
#include "armada-370-seagate-nas-xbay.dtsi"
#include <dt-bindings/leds/leds-ns2.h>

/ {
	model = "Seagate NAS 4-Bay (Dart, SRPD40)";
	compatible = "seagate,dart-4", "marvell,armada370", "marvell,armada-370-xp";

	soc {
		internal-regs {
			ethernet@74000 {
				status = "okay";
				pinctrl-0 = <&ge1_rgmii_pins>;
				pinctrl-names = "default";
				phy = <&phy1>;
				phy-mode = "rgmii-id";
			};

			i2c@11000 {
				/* I2C GPIO expander (PCA9554A) */
				pca9554: pca9554@21 {
					compatible = "nxp,pca9554";
					reg = <0x21>;
					#gpio-cells = <2>;
					gpio-controller;
				};
			};
		};
	};

	regulator-3 {
		compatible = "regulator-fixed";
		regulator-name = "SATA2 power";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		regulator-always-on;
		regulator-boot-on;
		gpio = <&pca9554 6 GPIO_ACTIVE_HIGH>;
	};

	regulator-4 {
		compatible = "regulator-fixed";
		regulator-name = "SATA3 power";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		enable-active-high;
		regulator-always-on;
		regulator-boot-on;
		gpio = <&pca9554 7 GPIO_ACTIVE_HIGH>;
	};

	gpio-leds {
		led-red-sata2 {
			label = "dart:red:sata2";
			gpios = <&pca9554 0 GPIO_ACTIVE_LOW>;
		};
		led-red-sata3 {
			label = "dart:red:sata3";
			gpios = <&pca9554 3 GPIO_ACTIVE_LOW>;
		};
	};

	leds-ns2 {
		compatible = "lacie,ns2-leds";

		white-sata2 {
			label = "dart:white:sata2";
			cmd-gpio = <&pca9554 1 GPIO_ACTIVE_HIGH>;
			slow-gpio = <&pca9554 2 GPIO_ACTIVE_HIGH>;
			num-modes = <4>;
			modes-map = <NS_V2_LED_SATA 0 0
				     NS_V2_LED_OFF  0 1
				     NS_V2_LED_ON   1 0
				     NS_V2_LED_ON   1 1>;
		};
		white-sata3 {
			label = "dart:white:sata3";
			cmd-gpio = <&pca9554 4 GPIO_ACTIVE_HIGH>;
			slow-gpio = <&pca9554 5 GPIO_ACTIVE_HIGH>;
			num-modes = <4>;
			modes-map = <NS_V2_LED_SATA 0 0
				     NS_V2_LED_OFF  0 1
				     NS_V2_LED_ON   1 0
				     NS_V2_LED_ON   1 1>;
		};
	};

	gpio-fan {
		gpio-fan,speed-map =
			<   0 3>,
			< 800 2>,
			<1050 1>,
			<1300 0>;
	};
};

&pciec {
	/* SATA AHCI controller 88SE9170 */
	pcie@1,0 {
		status = "okay";
	};
};

&mdio {
	phy1: ethernet-phy@1 {
		reg = <1>;
	};
};

