// 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";
		pinctrl-names = "default";
		pinctrl-0 = <&helios_system_led_pins>;

		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";
		pinctrl-names = "default";
		pinctrl-0 = <&helios_io_led_pins>;

		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 */
		pinctrl-names = "default";
		pinctrl-0 = <&helios_fan1_pins>;
	};

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

	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 {
				/*
				 * 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-hog {
						gpio-hog;
						gpios = <0 GPIO_ACTIVE_LOW>;
						input;
						line-name = "board-rev-0";
					};
					board-rev-bit-1-hog {
						gpio-hog;
						gpios = <1 GPIO_ACTIVE_LOW>;
						input;
						line-name = "board-rev-1";
					};
					usb3-ilimit-hog {
						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 = <&helios_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_sdhci_pins: helios-sdhci-pins {
					marvell,pins = "mpp21", "mpp28",
						       "mpp37", "mpp38",
						       "mpp39", "mpp40";
					marvell,function = "sd0";
				};
				helios_system_led_pins: helios-system-led-pins {
					marvell,pins = "mpp24", "mpp25";
					marvell,function = "gpio";
				};
				helios_io_led_pins: helios-io-led-pins {
					marvell,pins = "mpp49", "mpp50",
						       "mpp52", "mpp53",
						       "mpp54";
					marvell,function = "gpio";
				};
				helios_fan1_pins: helios_fan1_pins {
					marvell,pins = "mpp41", "mpp43";
					marvell,function = "gpio";
				};
				helios_fan2_pins: helios_fan2_pins {
					marvell,pins = "mpp48", "mpp55";
					marvell,function = "gpio";
				};
				microsom_spi1_cs_pins: spi1-cs-pins {
					marvell,pins = "mpp59";
					marvell,function = "spi1";
				};
			};
		};
	};
};
