// 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 {
				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 = <&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";
				};
			};
		};
	};
};
