// SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
// Copyright 2021 Jonathan Neuschäfer

/dts-v1/;

/* The last 16 MiB are dedicated to the GPU */
/memreserve/ 0x07000000 0x01000000;

#include "nuvoton-wpcm450.dtsi"

#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Supermicro X9SCi-LN4F BMC";
	compatible = "supermicro,x9sci-ln4f-bmc", "nuvoton,wpcm450";

	aliases {
		serial0 = &serial0;
		serial1 = &serial1;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	memory@0 {
		device_type = "memory";
		reg = <0 0x08000000>; /* 128 MiB */
	};

	gpio-keys {
		compatible = "gpio-keys";
		pinctrl-names = "default";
		pinctrl-0 = <&key_pins>;

		button-uid {
			label = "UID button";
			linux,code = <KEY_HOME>;
			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
		};
	};

	gpio-leds {
		compatible = "gpio-leds";
		pinctrl-names = "default";
		pinctrl-0 = <&led_pins>;

		led-uid {
			label = "UID";
			gpios = <&gpio1 7 GPIO_ACTIVE_HIGH>;
		};

		led-heartbeat {
			label = "heartbeat";
			gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
		};
	};
};

&fiu {
	status = "okay";

	flash@0 {
		reg = <0>;
		compatible = "jedec,spi-nor";
	};
};

&gpio0 {
	gpio-line-names =
		/* 0 */ "", "host-reset-control-n", "", "", "", "", "", "",
		/* 8 */ "", "", "", "", "power-chassis-control-n", "", "uid-button", "";
};

&gpio1 {
	gpio-line-names =
		/* 0 */ "", "", "", "", "led-heartbeat", "", "", "led-uid",
		/* 8 */ "", "", "", "", "", "", "", "";
};

&gpio4 {
	gpio-line-names =
		/* 0 */ "", "", "", "", "", "", "", "",
		/* 8 */ "", "", "", "", "", "", "", "power-chassis-good";
};

&pinctrl {
	key_pins: mux-keys {
		groups = "gspi", "sspi";
		function = "gpio";
	};

	led_pins: mux-leds {
		groups = "hg3", "hg0", "pwm4";
		function = "gpio";
	};
};

&serial0 {
	/*
	 * Debug serial port. TX is exposed on the right pad of unpopulated
	 * resistor R1247, RX on the right pad of R1162.
	 */
	status = "okay";
};

&serial1 {
	/* "Serial over LAN" port. Connected to ttyS2 of the host system. */
	status = "okay";
};
