// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright 2023 Inventec Corp.

/dts-v1/;

#include "aspeed-g6.dtsi"
#include "aspeed-g6-pinctrl.dtsi"
#include <dt-bindings/i2c/i2c.h>
#include <dt-bindings/gpio/aspeed-gpio.h>

/ {
	model = "STARSCREAM BMC";
	compatible = "inventec,starscream-bmc", "aspeed,ast2600";

	aliases {
		serial4 = &uart5;
	};

	chosen {
		stdout-path = &uart5;
	};

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

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

		video_engine_memory: video {
			size = <0x04000000>;
			alignment = <0x01000000>;
			compatible = "shared-dma-pool";
			reusable;
		};
	};

	leds {
		compatible = "gpio-leds";

		led-uid {
			label = "UID_LED";
			gpios = <&gpio0 186 GPIO_ACTIVE_LOW>;
		};

		led-heartbeat {
			label = "HB_LED";
			gpios = <&gpio0 127 GPIO_ACTIVE_LOW>;
		};
	};
};

&mdio0 {
	status = "okay";

	ethphy0: ethernet-phy@0 {
		compatible = "ethernet-phy-ieee802.3-c22";
		reg = <1>;
	};
};

&mac2 {
	status = "okay";
	pinctrl-names = "default";
	phy-mode = "rmii";
	pinctrl-0 = <&pinctrl_rmii3_default>;
	use-ncsi;
};

&mac3 {
	status = "okay";
	phy-mode = "rgmii";
	phy-handle = <&ethphy0>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rgmii4_default>;
};

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

	flash@1 {
		status = "okay";
		m25p,fast-read;
		label = "bmc2";
		spi-max-frequency = <50000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
	};
};

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

	flash@0 {
		status = "okay";
		m25p,fast-read;
		label = "bios";
		spi-max-frequency = <50000000>;
		spi-tx-bus-width = <4>;
		spi-rx-bus-width = <4>;
	};
};

&vuart1 {
	status = "okay";
};

&uart1 {
	status = "okay";
};

&uart3 {
	status = "okay";
};

&uart5 {
	status = "okay";
};

&kcs3 {
	aspeed,lpc-io-reg = <0xca2>;
	status = "okay";
};

&uart_routing {
	status = "okay";
};

&i2c0 {
	status = "okay";
};
&i2c1 {
	status = "okay";
};
&i2c2 {
	status = "okay";
};
&i2c3 {
	status = "okay";
};

&i2c4 {
	status = "okay";

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

		i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
			// AMD SB-TSI CPU1
			sbtsi@4c {
				compatible = "amd,sbtsi";
				reg = <0x4c>;
			};
		};

		i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
			// AMD SB-TSI CPU2
			sbtsi@48 {
				compatible = "amd,sbtsi";
				reg = <0x48>;
			};
		};
	};
};

&i2c5 {
	status = "okay";

	// I2C EXPANDER U153
	i2c-mux@70 {
		compatible = "nxp,pca9546";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x70>;

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

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

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

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

&i2c6 {
	status = "okay";

	// Motherboard Temp_U89
	temperature-sensor@4e {
		compatible = "ti,tmp421";
		reg = <0x4e>;
	};

	// RunBMC Temp_U6
	temperature-sensor@49 {
		compatible = "ti,tmp75";
		reg = <0x49>;
	};
};

&i2c7 {
	status = "okay";
	// I2C EXPANDER U40
	i2c-mux@70 {
		compatible = "nxp,pca9545";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x70>;

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

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

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

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

&i2c8 {
	status = "okay";
	// FRU RunBMC
	eeprom@51 {
		compatible = "atmel,24c512";
		reg = <0x51>;
		pagesize = <128>;
	};
};

&i2c9 {
	status = "okay";
};

&i2c10 {
	status = "okay";
};

&i2c11 {
	status = "okay";
};

&i2c12 {
	status = "okay";
	// FRU SCM
	eeprom@51 {
		compatible = "atmel,24c512";
		reg = <0x51>;
		pagesize = <128>;
	};

	// SCM Temp_U17
	temperature-sensor@4f {
		compatible = "ti,tmp75";
		reg = <0x4f>;
	};
};

&gpio0 {
	status = "okay";
	gpio-line-names =
	/*A0-A7*/   "","","","","","","","",
	/*B0-B7*/   "alert-psu0-smb-r-n","bmc-ready","","assert-cpu0-prochot-r-n",
	"","","","",
	/*C0-C7*/   "","","","","","","","",
	/*D0-D7*/   "","","","","","","","",
	/*E0-E7*/   "","","","","","","","",
	/*F0-F7*/   "","","","","reset-sgpio-r-n","","","",
	/*G0-G7*/   "","","scm-jtag-mux-select","","","","","",
	/*H0-H7*/   "","","","","reset-out","power-out","","",
	/*I0-I7*/   "","","","","","","irq-bmc-cpu0-buf-nmi-n","",
	/*J0-J7*/   "","","","","","","","",
	/*K0-K7*/   "","","","","","","","",
	/*L0-L7*/   "","","","","","","","",
	/*M0-M7*/   "","","","","","","","",
	/*N0-N7*/   "","","ncsi-ocp-clk-en-n","","","","","",
	/*O0-O7*/   "","","","","","","cpu1-thermal-trip-n","",
	/*P0-P7*/   "","","","","","","","",
	/*Q0-Q7*/   "cpu0-prochot-n","","cpu1-prochot-n","","cpu0-pe-rst0","","","",
	/*R0-R7*/   "","","","","","","","",
	/*S0-S7*/   "","","","",
	"","PCH_SLP_S4_BMC_N","cpu0-thermtrip-n","alert-psu1-smb-r-n",
	/*T0-T7*/   "","","","","","","","",
	/*U0-U7*/   "","","","","","","","",
	/*V0-V7*/   "bios-recovery-buf-n","","assert-cpu1-prochot-r-n","",
	"power-chassis-good","","","",
	/*W0-W7*/   "","","","","","","","",
	/*X0-X7*/   "","","","","platform-type","","","",
	/*Y0-Y7*/   "","","","","","","","",
	/*Z0-Z7*/   "","cpld-power-break-n","","","","","","",
	/*AA0-AA7*/ "","","","","","","","",
	/*AB0-AB7*/ "","","","","","","","",
	/*AC0-AC7*/ "","","","","","","","";
};

&sgpiom0 {
	status = "okay";
	ngpios = <64>;
	bus-frequency = <1000000>;
};

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

&emmc_controller {
	status = "okay";
};

&emmc {
	status = "okay";
	non-removable;
	max-frequency = <52000000>;
	bus-width = <8>;
};

&video {
	status = "okay";
	memory-region = <&video_engine_memory>;
};

&vhub {
	status = "okay";
	aspeed,vhub-downstream-ports = <7>;
	aspeed,vhub-generic-endpoints = <21>;
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_usb2ad_default>;
};

&rtc {
	status = "okay";
};
