// SPDX-License-Identifier: (GPL-2.0 OR MIT)
/*
 * Device Tree file for Helios4
 * based on SolidRun Clearfog revision A1 rev 2.0 (88F6828)
 *
 *  Copyright (C) 2017 Aditya Prayoga <aditya@kobol.io>
 *
 */

/dts-v1/;
#include "armada-388.dtsi"
#include "armada-38x-solidrun-microsom.dtsi"

/ {
	model = "Helios4";
	compatible = "kobol,helios4", "marvell,armada388",
		"marvell,armada385", "marvell,armada380";

	memory {
		device_type = "memory";
		reg = <0x00000000 0x80000000>; /* 2 GB */
	};

	aliases {
		/* So that mvebu u-boot can update the MAC addresses */
		ethernet1 = &eth0;
	};

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

	reg_12v: regulator-12v {
		compatible = "regulator-fixed";
		regulator-name = "power_brick_12V";
		regulator-min-microvolt = <12000000>;
		regulator-max-microvolt = <12000000>;
		regulator-always-on;
	};

	reg_3p3v: regulator-3p3v {
		compatible = "regulator-fixed";
		regulator-name = "3P3V";
		regulator-min-microvolt = <3300000>;
		regulator-max-microvolt = <3300000>;
		regulator-always-on;
		vin-supply = <&reg_12v>;
	};

	reg_5p0v_hdd: regulator-5v-hdd {
		compatible = "regulator-fixed";
		regulator-name = "5V_HDD";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-always-on;
		vin-supply = <&reg_12v>;
	};

	reg_5p0v_usb: regulator-5v-usb {
		compatible = "regulator-fixed";
		regulator-name = "USB-PWR";
		regulator-min-microvolt = <5000000>;
		regulator-max-microvolt = <5000000>;
		regulator-boot-on;
		regulator-always-on;
		enable-active-high;
		gpio = <&expander0 6 GPIO_ACTIVE_HIGH>;
		vin-supply = <&reg_12v>;
	};

	system-leds {
		compatible = "gpio-leds";
		status-led {
			label = "helios4:green:status";
			gpios = <&gpio0 24 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
			default-state = "on";
		};

		fault-led {
			label = "helios4:red:fault";
			gpios = <&gpio0 25 GPIO_ACTIVE_LOW>;
			default-state = "keep";
		};
	};

	io-leds {
		compatible = "gpio-leds";
		sata1-led {
			label = "helios4:green:ata1";
			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "ata1";
			default-state = "off";
		};
		sata2-led {
			label = "helios4:green:ata2";
			gpios = <&gpio1 18 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "ata2";
			default-state = "off";
		};
		sata3-led {
			label = "helios4:green:ata3";
			gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "ata3";
			default-state = "off";
		};
		sata4-led {
			label = "helios4:green:ata4";
			gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "ata4";
			default-state = "off";
		};
		usb-led {
			label = "helios4:green:usb";
			gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "usb-host";
			default-state = "off";
		};
	};

	fan1: j10-pwm {
		compatible = "pwm-fan";
		pwms = <&gpio1 9 40000>;	/* Target freq:25 kHz */
	};

	fan2: j17-pwm {
		compatible = "pwm-fan";
		pwms = <&gpio1 23 40000>;	/* Target freq:25 kHz */
	};

	usb2_phy: usb2-phy {
		compatible = "usb-nop-xceiv";
		vbus-regulator = <&reg_5p0v_usb>;
	};

	usb3_phy: usb3-phy {
		compatible = "usb-nop-xceiv";
	};

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

				/*
				 * PCA9655 GPIO expander, up to 1MHz clock.
				 *  0-Board Revision bit 0 #
				 *  1-Board Revision bit 1 #
				 *  5-USB3 overcurrent
				 *  6-USB3 power
				 */
				expander0: gpio-expander@20 {
					/*
					 * This is how it should be:
					 * compatible = "onnn,pca9655",
					 *	 "nxp,pca9555";
					 * but you can't do this because of
					 * the way I2C works.
					 */
					compatible = "nxp,pca9555";
					gpio-controller;
					#gpio-cells = <2>;
					reg = <0x20>;
					pinctrl-names = "default";
					pinctrl-0 = <&pca0_pins>;
					interrupt-parent = <&gpio0>;
					interrupts = <23 IRQ_TYPE_EDGE_FALLING>;
					interrupt-controller;
					#interrupt-cells = <2>;

					board_rev_bit_0 {
						gpio-hog;
						gpios = <0 GPIO_ACTIVE_LOW>;
						input;
						line-name = "board-rev-0";
					};
					board_rev_bit_1 {
						gpio-hog;
						gpios = <1 GPIO_ACTIVE_LOW>;
						input;
						line-name = "board-rev-1";
					};
					usb3_ilimit {
						gpio-hog;
						gpios = <5 GPIO_ACTIVE_HIGH>;
						input;
						line-name =
						"usb-overcurrent-status";
					};
				};

				temp_sensor: temp@4c {
					compatible = "ti,lm75";
					reg = <0x4c>;
					vcc-supply = <&reg_3p3v>;
				};
			};

			i2c@11100 {
				/*
				 * External I2C Bus for user peripheral
				 */
				clock-frequency = <400000>;
				pinctrl-0 = <&helios_i2c1_pins>;
				pinctrl-names = "default";
				status = "okay";
			};

			sata@a8000 {
				status = "okay";
				#address-cells = <1>;
				#size-cells = <0>;

				sata0: sata-port@0 {
					reg = <0>;
				};

				sata1: sata-port@1 {
					reg = <1>;
				};
			};

			sata@e0000 {
				status = "okay";
				#address-cells = <1>;
				#size-cells = <0>;

				sata2: sata-port@0 {
					reg = <0>;
				};

				sata3: sata-port@1 {
					reg = <1>;
				};
			};

			spi@10680 {
				pinctrl-0 = <&spi1_pins
					     &microsom_spi1_cs_pins>;
				pinctrl-names = "default";
				status = "okay";
			};

			sdhci@d8000 {
				bus-width = <4>;
				cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
				no-1-8-v;
				pinctrl-0 = <&microsom_sdhci_pins
					     &helios_sdhci_cd_pins>;
				pinctrl-names = "default";
				status = "okay";
				vmmc = <&reg_3p3v>;
				wp-inverted;
			};

			usb@58000 {
				usb-phy = <&usb2_phy>;
				status = "okay";
			};

			usb3@f0000 {
				status = "okay";
			};

			usb3@f8000 {
				status = "okay";
			};

			pinctrl@18000 {
				pca0_pins: pca0-pins {
					marvell,pins = "mpp23";
					marvell,function = "gpio";
				};
				microsom_phy0_int_pins: microsom-phy0-int-pins {
					marvell,pins = "mpp18";
					marvell,function = "gpio";
				};
				helios_i2c1_pins: i2c1-pins {
					marvell,pins = "mpp26", "mpp27";
					marvell,function = "i2c1";
				};
				helios_sdhci_cd_pins: helios-sdhci-cd-pins {
					marvell,pins = "mpp20";
					marvell,function = "gpio";
				};
				helios_led_pins: helios-led-pins {
					marvell,pins = "mpp24", "mpp25",
						       "mpp49", "mpp50",
						       "mpp52", "mpp53",
						       "mpp54";
					marvell,function = "gpio";
				};
				helios_fan_pins: helios-fan-pins {
					marvell,pins = "mpp41", "mpp43",
						       "mpp48", "mpp55";
					marvell,function = "gpio";
				};
				microsom_spi1_cs_pins: spi1-cs-pins {
					marvell,pins = "mpp59";
					marvell,function = "spi1";
				};
			};
		};
	};
};
