// SPDX-License-Identifier: GPL-2.0-or-later
// Copyright (c) 2022 Ufispace Co., Ltd.
/dts-v1/;

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

/ {
	model = "Ufispace NCPLite BMC";
	compatible = "ufispace,ncplite-bmc", "aspeed,ast2600";

	aliases {
		serial4 = &uart5;
	};

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

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

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

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

		fan-status-int-l {
			label = "fan-status-int-l";
			gpios = <&gpio0 ASPEED_GPIO(M, 2) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(M, 2)>;
		};

		allpwr-good {
			label = "allpwr-good";
			gpios = <&gpio0 ASPEED_GPIO(V, 4) GPIO_ACTIVE_HIGH>;
			linux,code = <ASPEED_GPIO(V, 4)>;
		};

		psu0-alert-n {
			label = "psu0-alert-n";
			gpios = <&gpio0 ASPEED_GPIO(V, 1) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(V, 1)>;
		};

		psu1-alert-n {
			label = "psu1-alert-n";
			gpios = <&gpio0 ASPEED_GPIO(V, 2) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(V, 2)>;
		};

		int-thermal-alert {
			label = "int-thermal-alert";
			gpios = <&gpio0 ASPEED_GPIO(P, 2) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(P, 2)>;
		};

		cpu-caterr-l {
			label = "cpu-caterr-l";
			gpios = <&gpio0 ASPEED_GPIO(N, 3) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(N, 3)>;
		};

		cpu-thermtrip-l {
			label = "cpu-thermtrip-l";
			gpios = <&gpio0 ASPEED_GPIO(V, 5) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(V, 5)>;
		};

		psu0-presence-l {
			label = "psu0-presence-l";
			gpios = <&gpio0 ASPEED_GPIO(F, 6) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(F, 6)>;
		};

		psu1-presence-l {
			label = "psu1-presence-l";
			gpios = <&gpio0 ASPEED_GPIO(F, 7) GPIO_ACTIVE_LOW>;
			linux,code = <ASPEED_GPIO(F, 7)>;
		};

		psu0-power-ok {
			label = "psu0-power-ok";
			gpios = <&gpio0 ASPEED_GPIO(M, 4) GPIO_ACTIVE_HIGH>;
			linux,code = <ASPEED_GPIO(M, 4)>;
		};

		psu1-power-ok {
			label = "psu1-power-ok";
			gpios = <&gpio0 ASPEED_GPIO(M, 5) GPIO_ACTIVE_HIGH>;
			linux,code = <ASPEED_GPIO(M, 5)>;
		};
	};

	gpio-keys-polled {
		compatible = "gpio-keys-polled";
		#address-cells = <1>;
		#size-cells = <0>;
		poll-interval = <1000>;

		fan0-presence {
			label = "fan0-presence";
			gpios = <&fan_ioexp 2 GPIO_ACTIVE_LOW>;
			linux,code = <2>;
		};

		fan1-presence {
			label = "fan1-presence";
			gpios = <&fan_ioexp 6 GPIO_ACTIVE_LOW>;
			linux,code = <6>;
		};

		fan2-presence {
			label = "fan2-presence";
			gpios = <&fan_ioexp 10 GPIO_ACTIVE_LOW>;
			linux,code = <10>;
		};

		fan3-presence {
			label = "fan3-presence";
			gpios = <&fan_ioexp 14 GPIO_ACTIVE_LOW>;
			linux,code = <14>;
		};
	};
};

&mac2 {
	status = "okay";
	use-ncsi;

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rmii3_default>;
	clocks = <&syscon ASPEED_CLK_GATE_MAC3CLK>,
		 <&syscon ASPEED_CLK_MAC3RCLK>;
	clock-names = "MACCLK", "RCLK";
};

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

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

&uart1 {
	status = "okay";
};

&uart4 {
	status = "okay";
};

&uart5 {
	status = "okay";
};

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

&lpc_reset {
	status = "okay";
};

&lpc_ctrl {
	status = "okay";
};

&uart_routing {
	status = "okay";
};

&wdt1 {
	status = "okay";
};

&wdt2 {
	status = "okay";
};

&peci0 {
	status = "okay";
};

&udc {
	status = "okay";
};

&adc0 {
	vref = <2500>;
	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>;
};

&adc1 {
	vref = <2500>;
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_adc8_default &pinctrl_adc9_default
		&pinctrl_adc10_default &pinctrl_adc11_default
		&pinctrl_adc12_default &pinctrl_adc13_default
		&pinctrl_adc14_default &pinctrl_adc15_default>;
};

&i2c0 {
	status = "okay";
};

&i2c1 {
	status = "okay";

	lm75@48 {
		compatible = "national,lm75";
		reg = <0x48>;
	};

	lm75@49 {
		compatible = "national,lm75";
		reg = <0x49>;
	};

	lm86@4c {
		compatible = "national,lm86";
		reg = <0x4c>;
	};
};

&i2c2 {
	status = "okay";

	lm75@4f {
		cpmpatible = "national,lm75";
		reg = <0x4f>;
	};

	fan_ioexp: pca9535@20 {
		compatible = "nxp,pca9535";
		reg = <0x20>;
		#address-cells = <1>;
		#size-cells = <0>;
		gpio-controller;
		#gpio-cells = <2>;

		gpio-line-names =
		"","","presence-fan0","",
		"","","presence-fan1","",
		"","","presence-fan2","",
		"","","presence-fan3","";
	};
};

&i2c3 {
	status = "okay";

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

&i2c4 {
	status = "okay";

	psu@58 {
		compatible = "pmbus";
		reg = <0x58>;
	};

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

&i2c5 {
	status = "okay";

	psu@58 {
		compatible = "pmbus";
		reg = <0x58>;
	};

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

&i2c8 {
	status = "okay";
};

&i2c10 {
	status = "okay";

	lm75@4d {
		compatible = "national,lm75";
		reg = <0x4d>;
	};
};

&gpio0 {
	status = "okay";

	gpio-line-names =
	/*A0-A7*/	"","","","","","","","",
	/*B0-B7*/	"","","","","","","","",
	/*C0-C7*/	"","","","","","","","",
	/*D0-D7*/	"","","","","","","","",
	/*E0-E7*/	"","","","","","","","",
	/*F0-F7*/	"CPU_PWRGD","","","power-button","host0-ready","","presence-ps0","presence-ps1",
	/*G0-G7*/	"","","","","","","","",
	/*H0-H7*/	"","","","","","","","",
	/*I0-I7*/	"","","","","","reset-button","","",
	/*J0-J7*/	"","","","","","","","",
	/*K0-K7*/	"","","","","","","","",
	/*L0-L7*/	"","","","","","","","",
	/*M0-M7*/	"","","","","","","","",
	/*N0-N7*/	"power-chassis-control0","power-chassis-control1","","","","","","",
	/*O0-O7*/	"","","","","","","","",
	/*P0-P7*/	"","","","","","","","",
	/*Q0-Q7*/	"","","","","","","","",
	/*R0-R7*/	"","","","","","","","",
	/*S0-S7*/	"","","","","","","","",
	/*T0-T7*/	"","","","","","","","",
	/*U0-U7*/	"","","","","","","","",
	/*V0-V7*/	"","","","","power-chassis-good","","","";
};
