// 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 address */
		ethernet1 = &eth0;
		spi1 = &spi1;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
	};


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

&w25q32 {
	status = "okay";
};

&spi1 {
	status = "okay";
};
