// SPDX-License-Identifier: GPL-2.0+
/dts-v1/;

#include "aspeed-g4.dtsi"
#include <dt-bindings/gpio/aspeed-gpio.h>

#define EFUSE_OUTPUT(n)					\
	efuse##n {					\
		compatible = "regulator-output";	\
		vout-supply = <&efuse##n>;		\
	}

#define __stringify(x) #x

#define EFUSE(hexaddr, num)							\
	efuse@##hexaddr {							\
		compatible = "lm25066";						\
		reg = <0x##hexaddr>;						\
		shunt-resistor-micro-ohms = <675>;				\
		regulators {							\
			efuse##num: vout0 {					\
				regulator-name = __stringify(efuse##num##-reg);	\
			};							\
		};								\
	}

/{
	model = "Delta Power AHE-50DC";
	compatible = "delta,ahe50dc-bmc", "aspeed,ast2400";

	aliases {
		serial4 = &uart5;

		/*
		 * pca9541-arbitrated logical i2c buses are numbered as the
		 * corresponding physical bus plus 20
		 */
		i2c20 = &i2carb0;
		i2c21 = &i2carb1;
		i2c22 = &i2carb2;
		i2c23 = &i2carb3;
		i2c24 = &i2carb4;
		i2c26 = &i2carb6;
		i2c27 = &i2carb7;
		i2c28 = &i2carb8;
		i2c32 = &i2carb12;
	};

	chosen {
		stdout-path = &uart3;
		bootargs = "console=ttyS2,115200n8 earlycon";
	};

	memory@40000000 {
		reg = <0x40000000 0x10000000>;
	};

	leds {
		compatible = "gpio-leds";

		heartbeat {
			gpios = <&gpio ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "heartbeat";
		};

		panic {
			gpios = <&gpio ASPEED_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
			linux,default-trigger = "panic";
		};
	};

	iio-hwmon {
		compatible = "iio-hwmon";
		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>,
			<&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>, <&adc 9>;
	};

	EFUSE_OUTPUT(01);
	EFUSE_OUTPUT(02);
	EFUSE_OUTPUT(03);
	EFUSE_OUTPUT(04);
	EFUSE_OUTPUT(05);
	EFUSE_OUTPUT(06);
	EFUSE_OUTPUT(07);
	EFUSE_OUTPUT(08);
	EFUSE_OUTPUT(09);
	EFUSE_OUTPUT(10);
	EFUSE_OUTPUT(11);
	EFUSE_OUTPUT(12);
	EFUSE_OUTPUT(13);
	EFUSE_OUTPUT(14);
	EFUSE_OUTPUT(15);
	EFUSE_OUTPUT(16);
	EFUSE_OUTPUT(17);
	EFUSE_OUTPUT(18);
	EFUSE_OUTPUT(19);
	EFUSE_OUTPUT(20);
	EFUSE_OUTPUT(21);
	EFUSE_OUTPUT(22);
	EFUSE_OUTPUT(23);
	EFUSE_OUTPUT(24);
	EFUSE_OUTPUT(25);
	EFUSE_OUTPUT(26);
	EFUSE_OUTPUT(27);
	EFUSE_OUTPUT(28);
	EFUSE_OUTPUT(29);
	EFUSE_OUTPUT(30);
	EFUSE_OUTPUT(31);
	EFUSE_OUTPUT(32);
	EFUSE_OUTPUT(33);
	EFUSE_OUTPUT(34);
	EFUSE_OUTPUT(35);
	EFUSE_OUTPUT(36);
	EFUSE_OUTPUT(37);
	EFUSE_OUTPUT(38);
	EFUSE_OUTPUT(39);
	EFUSE_OUTPUT(40);
	EFUSE_OUTPUT(41);
	EFUSE_OUTPUT(42);
	EFUSE_OUTPUT(43);
	EFUSE_OUTPUT(44);
	EFUSE_OUTPUT(45);
	EFUSE_OUTPUT(46);
	EFUSE_OUTPUT(47);
	EFUSE_OUTPUT(48);
	EFUSE_OUTPUT(49);
	EFUSE_OUTPUT(50);

};

&fmc {
	status = "okay";

	flash@0 {
		status = "okay";
		m25p,fast-read;
		label = "flash0";
		spi-max-frequency = <50000000>; // 50 MHz
#include "openbmc-flash-layout.dtsi"
	};
};

&uart3 {
	status = "okay";
};

&mac1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
};

&i2c0 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@79 {
		compatible = "nxp,pca9541";
		reg = <0x79>;

		i2carb0: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;

			/* lm25066 efuses @ 10-17, 40-47, 50-57 */
			EFUSE(10, 03);
			EFUSE(11, 04);
			EFUSE(12, 01);
			EFUSE(13, 02);
			EFUSE(14, 13);
			EFUSE(15, 14);
			EFUSE(16, 15);
			EFUSE(17, 16);
			EFUSE(40, 12);
			EFUSE(41, 11);
			EFUSE(42, 10);
			EFUSE(43, 09);
			EFUSE(44, 08);
			EFUSE(45, 07);
			EFUSE(46, 05);
			EFUSE(47, 06);
			EFUSE(50, 17);
			EFUSE(51, 18);
			EFUSE(52, 20);
			EFUSE(53, 19);
			EFUSE(54, 22);
			EFUSE(55, 21);
			EFUSE(56, 24);
			EFUSE(57, 23);
		};
	};
};

&i2c1 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@72 {
		compatible = "nxp,pca9541";
		reg = <0x72>;

		i2carb1: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&i2c2 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@73 {
		compatible = "nxp,pca9541";
		reg = <0x73>;

		i2carb2: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&i2c3 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@74 {
		compatible = "nxp,pca9541";
		reg = <0x74>;

		i2carb3: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&i2c4 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@7a {
		compatible = "nxp,pca9541";
		reg = <0x7a>;

		i2carb4: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;

			gpio@20 {
				compatible = "nxp,pca9534";
				reg = <0x20>;
				gpio-controller;
				#gpio-cells = <2>;
			};

			/* lm25066 efuses @ 10-17, 40-47, 50-57, 59, 5a */
			EFUSE(10, 27);
			EFUSE(11, 28);
			EFUSE(12, 25);
			EFUSE(13, 26);
			EFUSE(14, 37);
			EFUSE(15, 38);
			EFUSE(16, 39);
			EFUSE(17, 40);
			EFUSE(40, 36);
			EFUSE(41, 35);
			EFUSE(42, 34);
			EFUSE(43, 33);
			EFUSE(44, 32);
			EFUSE(45, 31);
			EFUSE(46, 29);
			EFUSE(47, 30);
			EFUSE(50, 41);
			EFUSE(51, 42);
			EFUSE(52, 44);
			EFUSE(53, 43);
			EFUSE(54, 46);
			EFUSE(55, 45);
			EFUSE(56, 48);
			EFUSE(57, 47);
			EFUSE(59, 49);
			EFUSE(5a, 50);
		};
	};
};

&i2c6 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@75 {
		compatible = "nxp,pca9541";
		reg = <0x75>;

		i2carb6: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&i2c7 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@76 {
		compatible = "nxp,pca9541";
		reg = <0x76>;

		i2carb7: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&i2c8 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@7c {
		compatible = "nxp,pca9541";
		reg = <0x7c>;

		i2carb8: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;

			fancontrol@30 {
				compatible = "delta,ahe50dc-fan";
				reg = <0x30>;
			};

			/* Baseboard FRU eeprom */
			eeprom@50 {
				compatible = "atmel,24c02";
				reg = <0x50>;
			};
		};
	};
};

&i2c12 {
	status = "okay";
	bus-frequency = <200000>;

	pca9541@71 {
		compatible = "nxp,pca9541";
		reg = <0x71>;

		i2carb12: i2c-arb {
			#address-cells = <1>;
			#size-cells = <0>;
		};
	};
};

&gpio {
	status = "okay";
	gpio-line-names =
		/*  A */ "", "", "", "", "", "", "", "",
		/*  B */ "", "", "", "", "", "", "", "",
		/*  C */ "RESET_PEER_N", "HEARTBEAT_OUT", "", "", "", "", "", "",
		/*  D */ "", "", "", "", "", "", "", "",
		/*  E */ "DOOM_N", "", "", "", "", "LED_PWR_BLUE", "", "",
		/*  F */ "", "", "", "", "", "", "", "",
		/*  G */ "", "", "", "", "", "", "", "",
		/*  H */ "", "", "", "", "", "", "", "",
		/*  I */ "", "", "", "", "", "", "", "",
		/*  J */ "", "", "BMC_ID", "", "", "", "", "",
		/*  K */ "", "", "", "", "", "", "", "",
		/*  L */ "", "", "", "", "", "", "", "",
		/*  M */ "", "", "", "", "", "", "", "",
		/*  N */ "", "", "", "", "", "", "", "",
		/*  O */ "", "", "", "", "", "", "", "",
		/*  P */ "LED_GREEN", "", "LED_RED", "", "", "", "", "",
		/*  Q */ "", "", "", "", "", "", "", "",
		/*  R */ "", "", "", "", "", "", "", "",
		/*  S */ "", "", "", "", "", "", "", "",
		/*  T */ "", "", "", "", "", "", "", "",
		/*  U */ "", "", "", "", "", "", "", "",
		/*  V */ "", "", "", "", "", "", "", "",
		/*  W */ "", "", "", "", "", "", "", "",
		/*  X */ "", "", "", "", "", "", "", "",
		/*  Y */ "HEARTBEAT_IN", "BOARDREV0", "BOARDREV1", "",
		/*  Z */ "", "", "", "", "", "", "", "",
		/* AA */ "", "", "", "", "", "", "", "",
		/* AB */ "", "", "", "";

	/*
	 * I don't rightly know what this GPIO really *is*, but setting it to
	 * zero causes the fans to run at full speed, after which setting it
	 * back to one causes a power output glitch, so install a hog to keep
	 * it at one as a failsafe to ensure nothing accidentally touches it.
	 */
	doom-guardrail {
		gpio-hog;
		gpios = <ASPEED_GPIO(E, 0) GPIO_ACTIVE_LOW>;
		output-low;
	};
};

&adc {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_adc0_default
		&pinctrl_adc1_default
		&pinctrl_adc2_default
		&pinctrl_adc3_default
		&pinctrl_adc4_default
		&pinctrl_adc5_default
		&pinctrl_adc6_default
		&pinctrl_adc7_default
		&pinctrl_adc8_default
		&pinctrl_adc9_default>;
};
