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