// SPDX-License-Identifier: GPL-2.0
/dts-v1/;
#include "aspeed-g5.dtsi"
#include <dt-bindings/gpio/aspeed-gpio.h>

/ {
	model = "Zaius BMC";
	compatible = "ingrasys,zaius-bmc", "aspeed,ast2500";

	aliases {
		i2c15 = &i2cpcie0;
		i2c16 = &i2cpcie1;
		i2c17 = &i2cpcie2;
		i2c19 = &i2cpcie3;
		i2c20 = &i2cpcie4;
	};

	chosen {
		stdout-path = &uart5;
		bootargs = "console=ttyS4,115200 earlycon";
	};

	memory@80000000 {
		reg = <0x80000000 0x40000000>;
	};

	reserved-memory {
		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		flash_memory: region@98000000 {
			no-map;
			reg = <0x98000000 0x04000000>; /* 64M */
		};
	};

	onewire0 {
		compatible = "w1-gpio";
		gpios = <&gpio ASPEED_GPIO(H, 0) GPIO_ACTIVE_HIGH>;
	};

	onewire1 {
		compatible = "w1-gpio";
		gpios = <&gpio ASPEED_GPIO(H, 1) GPIO_ACTIVE_HIGH>;
	};

	onewire2 {
		compatible = "w1-gpio";
		gpios = <&gpio ASPEED_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
	};

	onewire3 {
		compatible = "w1-gpio";
		gpios = <&gpio ASPEED_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
	};

	gpio-keys {
		compatible = "gpio-keys";

		checkstop {
			label = "checkstop";
			gpios = <&gpio ASPEED_GPIO(F, 7) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(F, 7)>;
		};

		pcie-e2b-present{
			label = "pcie-e2b-present";
			gpios = <&gpio ASPEED_GPIO(E, 7) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(E, 7)>;
		};
	};

	leds {
		compatible = "gpio-leds";

		sys_boot_status {
			label = "System boot status";
			gpios = <&gpio ASPEED_GPIO(D, 5) GPIO_ACTIVE_LOW>;
		};

		attention {
			label = "Attention";
			gpios = <&gpio ASPEED_GPIO(D, 6) GPIO_ACTIVE_LOW>;
		};

		plt_fault {
			label = "Platform fault";
			gpios = <&gpio ASPEED_GPIO(D, 7) GPIO_ACTIVE_LOW>;
		};

		hdd_fault {
			label = "Onboard drive fault";
			gpios = <&gpio ASPEED_GPIO(AA, 2) GPIO_ACTIVE_LOW>;
		};
	};

	fsi: gpio-fsi {
		compatible = "fsi-master-gpio", "fsi-master";
		#address-cells = <2>;
		#size-cells = <0>;
		no-gpio-delays;

		trans-gpios = <&gpio ASPEED_GPIO(O, 6) GPIO_ACTIVE_HIGH>;
		enable-gpios = <&gpio ASPEED_GPIO(D, 0) GPIO_ACTIVE_HIGH>;
		clock-gpios = <&gpio ASPEED_GPIO(G, 0) GPIO_ACTIVE_HIGH>;
		data-gpios = <&gpio ASPEED_GPIO(G, 1) GPIO_ACTIVE_HIGH>;
		mux-gpios = <&gpio ASPEED_GPIO(P, 6) GPIO_ACTIVE_HIGH>;
	};

	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>, <&adc 10>, <&adc 11>,
			<&adc 13>, <&adc 14>, <&adc 15>;
	};

	iio-hwmon-battery {
		compatible = "iio-hwmon";
		io-channels = <&adc 12>;
	};

};

&fmc {
	status = "okay";

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

&spi1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_spi1_default>;

	flash@0 {
		status = "okay";
		label = "pnor";
		m25p,fast-read;
		spi-max-frequency = <100000000>;
	};
};

&spi2 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_spi2ck_default
		     &pinctrl_spi2cs0_default
		     &pinctrl_spi2cs1_default
		     &pinctrl_spi2miso_default
		     &pinctrl_spi2mosi_default>;

	flash@0 {
		status = "okay";
	};
};

&uart1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_txd1_default
		     &pinctrl_rxd1_default>;
};

&lpc_ctrl {
	status = "okay";
	memory-region = <&flash_memory>;
	flash = <&spi1>;
};

&lpc_snoop {
	status = "okay";
	snoop-ports = <0x80>;
};


&uart5 {
	status = "okay";
};

&mac0 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rmii1_default>;
	clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
		 <&syscon ASPEED_CLK_MAC1RCLK>;
	clock-names = "MACCLK", "RCLK";
	use-ncsi;
};

&mac1 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
};

&i2c0 {
	status = "okay";

	eeprom@50 {
		compatible = "atmel,24c64";
		reg = <0x50>;
		pagesize = <32>;
	};

	rtc@68 {
		compatible = "nxp,pcf8523";
		reg = <0x68>;
	};

	ucd90160@64 {
		compatible = "ti,ucd90160";
		reg = <0x64>;
	};

	/* Power sequencer UCD90160 PMBUS @64h
	 * FRU AT24C64D @50h
	 * RTC PCF8523 @68h
	 * Clock buffer 9DBL04 @6dh
	 */
};

&i2c1 {
	status = "okay";

	i2c-switch@71 {
		compatible = "nxp,pca9546";
		reg = <0x71>;
		#address-cells = <1>;
		#size-cells = <0>;

		i2cpcie0: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
		};
		i2cpcie1: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
		};
		i2cpcie2: i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;
		};
		i2ctpm: i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;
		};
	};

	/* MUX1 PCA9546A @71h
	 *   PCIe 0
	 *   PCIe 1
	 *   PCIe 2
	 *   TPM header
	 */
};

&i2c2 {
	status = "disabled";

	/* OCP Mezz Connector A (OOB SMBUS) */
};

&i2c3 {
	status = "disabled";

	/* OCP Mezz Connector A (PCIe slot SMBUS) */
};

&i2c4 {
	status = "okay";

	i2c-switch@71 {
		compatible = "nxp,pca9546";
		reg = <0x71>;
		#address-cells = <1>;
		#size-cells = <0>;

		i2cpcie3: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
		};
		i2cpcie4: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
		};
	};

	/* MUX1 PCA9546A @71h
	 *   PCIe 3
	 *   PCIe 4
	 */
};


&i2c5 {
	status = "disabled";

	/* CPU0 PRM 0.7V */
	/* CPU0 PRM 1.2V CH03 */
	/* CPU0 PRM 0.8V */
	/* CPU0 PRM 1.2V CH47 */
};

&i2c6 {
	status = "disabled";

	/* CPU1 PRM 0.7V */
	/* CPU1 PRM 1.2V CH03 */
	/* CPU1 PRM 0.8V */
	/* CPU1 PRM 1.2V CH47 */
};

&i2c7 {
	status = "okay";

	pca9541a@70 {
		compatible = "nxp,pca9541";
		reg = <0x70>;

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

			hotswap@54 {
				compatible = "ti,lm5066i";
				reg = <0x54>;
			};
		};

	};

	vrm@64 {
		compatible = "isil,isl68137";
		reg = <0x64>;
	};

	vrm@40 {
		compatible = "isil,isl68137";
		reg = <0x40>;
	};

	vrm@60 {
		compatible = "isil,isl68137";
		reg = <0x60>;
	};

	vrm@43 {
		compatible = "infineon,ir38064";
		reg = <0x43>;
	};

	vrm@41 {
		compatible = "isil,isl68137";
		reg = <0x41>;
	};

	/* Master selector PCA9541A @70h (other master: CPU0)
	 *   LM5066I PMBUS @10h
	 */

	/*
	 * Brick will be one of these types/addresses.  Depending
	 * on the board SKU only one is actually present and will successfully
	 * instantiate while the others will fail the probe operation.
	 * These are the PVT (and presumably beyond) addresses:
	 *    12V Quarter Brick DC/DC Converter Q54SJ12050 @6Ah
	 *    12V Quarter Brick DC/DC Converter Q54SH12050 @30h
	 */
	power-brick@6a {
		compatible = "delta,dps800";
		reg = <0x6a>;
	};
	power-brick@30 {
		compatible = "delta,dps800";
		reg = <0x30>;
	};

	/* CPU0 VR ISL68137 0.7V, 0.96V PMBUS @64h */
	/* CPU0 VR ISL68137 1.2V CH03 PMBUS @40h */
	/* CPU0 VR ISL68137 0.8V PMBUS @60h */
	/* CPU0 VR 1.0V IR38064 I2C @11h, PMBUS @43h */
	/* CPU0 VR ISL68137 1.2V CH47 PMBUS @41h */
	/* Master selector PCA9541A @70h (other master: CPU0)
	 *   LM5066I PMBUS @10h
	 */
};

&i2c8 {
	status = "okay";

	vrm@64 {
		compatible = "isil,isl68137";
		reg = <0x64>;
	};

	vrm@40 {
		compatible = "isil,isl68137";
		reg = <0x40>;
	};

	vrm@41 {
		compatible = "isil,isl68137";
		reg = <0x41>;
	};

	vrm@42 {
		compatible = "infineon,ir38064";
		reg = <0x42>;
	};

	vrm@60 {
		compatible = "isil,isl68137";
		reg = <0x60>;
	};

	/* CPU1 VR ISL68137 0.7V, 0.96V PMBUS @64h */
	/* CPU1 VR ISL68137 1.2V CH03 PMBUS @40h */
	/* CPU1 VR ISL68137 1.2V CH47 PMBUS @41h */
	/* CPU1 VR 1.0V IR38064 I2C @12h, PMBUS @42h */
	/* CPU1 VR ISL68137 0.8V PMBUS @60h */
};


&i2c9 {
	status = "disabled";

	/* Fan board */
};

&i2c10 {
	status = "disabled";
};

&i2c11 {
	status = "disabled";

	/* GPU sideband */
};

&i2c12 {
	status = "disabled";
};

&i2c13 {
	status = "disabled";

	/* MUX PI3USB102
	 *   CPU0 debug
	 *   CPU1 debug
	 */
};

&pinctrl {
	aspeed,external-nodes = <&gfx &lhc>;

	pinctrl_gpioh_unbiased: gpioi_unbiased {
		pins = "A8", "C7", "B7", "A7", "D7", "B6", "A6", "E7";
		bias-disable;
	};
};

&gpio {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_gpioh_unbiased>;

	gpio-line-names =
	/*A0-A7*/	"","cfam-reset","","","","","","",
	/*B0-B7*/	"","","","","","","","",
	/*C0-C7*/	"","","","","","","","",
	/*D0-D7*/	"fsi-enable","","","","","led-sys-boot-status","led-attention",
				"led-fault",
	/*E0-E7*/	"","","","","","","","presence-pcie-e2b",
	/*F0-F7*/	"","","","","","","","checkstop",
	/*G0-G7*/	"fsi-clock","fsi-data","","","","","","",
	/*H0-H7*/	"onewire0","onewire1","onewire2","onewire3","","","","",
	/*I0-I7*/	"","","","power-button","","","","",
	/*J0-J7*/	"","","","","","","","",
	/*K0-K7*/	"","","","","","","","",
	/*L0-L7*/	"","","","","","","","",
	/*M0-M7*/	"","","","","","","","",
	/*N0-N7*/	"","","","","","","","",
	/*O0-O7*/	"","","","","iso_u164_en","","fsi-trans","",
	/*P0-P7*/	"ncsi_mux_en_n","bmc_i2c2_sw_rst_n","","bmc_i2c5_sw_rst_n","",
				"","fsi-mux","",
	/*Q0-Q7*/	"","","","","","","","",
	/*R0-R7*/	"","","","","","","","",
	/*S0-S7*/	"","","","","","","","",
	/*T0-T7*/	"","","","","","","","",
	/*U0-U7*/	"","","","","","","","",
	/*V0-V7*/	"","","","","","","","",
	/*W0-W7*/	"","","","","","","","",
	/*X0-X7*/	"","","","","","","","",
	/*Y0-Y7*/	"","","","","","","","",
	/*Z0-Z7*/	"","","","","","","","",
	/*AA0-AA7*/	"","","led-hdd-fault","","","","","",
	/*AB0-AB7*/	"","","","","","","","",
	/*AC0-AC7*/	"","","","","","","","";

	line_iso_u146_en {
		gpio-hog;
		gpios = <ASPEED_GPIO(O, 4) GPIO_ACTIVE_HIGH>;
		output-high;
	};

	ncsi_mux_en_n {
		gpio-hog;
		gpios = <ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
		output-low;
	};

	line_bmc_i2c2_sw_rst_n {
		gpio-hog;
		gpios = <ASPEED_GPIO(P, 1) GPIO_ACTIVE_HIGH>;
		output-high;
	};

	line_bmc_i2c5_sw_rst_n {
		gpio-hog;
		gpios = <ASPEED_GPIO(P, 3) GPIO_ACTIVE_HIGH>;
		output-high;
	};
};

&vuart {
	status = "okay";
};

&gfx {
	status = "okay";
};

&pwm_tacho {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default
		&pinctrl_pwm2_default &pinctrl_pwm3_default>;

	fan@0 {
		reg = <0x00>;
		aspeed,fan-tach-ch = /bits/ 8 <0x00>;
	};

	fan@1 {
		reg = <0x01>;
		aspeed,fan-tach-ch = /bits/ 8 <0x01>;
	};

	fan@2 {
		reg = <0x02>;
		aspeed,fan-tach-ch = /bits/ 8 <0x02>;
	};

	fan@3 {
		reg = <0x03>;
		aspeed,fan-tach-ch = /bits/ 8 <0x03>;
	};
};

&ibt {
	status = "okay";
};

#include "ibm-power9-dual.dtsi"
