// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2020 Quanta Computer Inc. George.Hung@quantatw.com

/dts-v1/;
#include "nuvoton-npcm730.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "Quanta GBS Board (Device Tree)";
	compatible = "quanta,gbs-bmc","nuvoton,npcm730";

	aliases {
		ethernet1 = &gmac0;
		serial0 = &serial0;
		serial1 = &serial1;
		serial2 = &serial2;
		serial3 = &serial3;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c4 = &i2c4;
		i2c5 = &i2c5;
		i2c6 = &i2c6;
		i2c7 = &i2c7;
		i2c8 = &i2c8;
		i2c9 = &i2c9;
		i2c10 = &i2c10;
		i2c11 = &i2c11;
		i2c12 = &i2c12;
		i2c13 = &i2c13;
		i2c14 = &i2c14;
		i2c15 = &i2c15;
		i2c16 = &i2c0_slotPE0_0;
		i2c17 = &i2c0_slotPE1_1;
		i2c18 = &i2c0_slotUSB_2;
		i2c19 = &i2c0_3;
		i2c20 = &i2c5_i2cool_0;
		i2c21 = &i2c5_i2cool_1;
		i2c22 = &i2c5_i2cool_2;
		i2c23 = &i2c5_hsbp_fru_3;
		i2c24 = &i2c6_u2_15_0;
		i2c25 = &i2c6_u2_14_1;
		i2c26 = &i2c6_u2_13_2;
		i2c27 = &i2c6_u2_12_3;
		i2c28 = &i2c7_u2_11_0;
		i2c29 = &i2c7_u2_10_1;
		i2c30 = &i2c7_u2_9_2;
		i2c31 = &i2c7_u2_8_3;
		i2c32 = &i2c9_vddcr_cpu;
		i2c33 = &i2c9_vddcr_soc;
		i2c34 = &i2c9_vddio_efgh;
		i2c35 = &i2c9_vddio_abcd;
		i2c36 = &i2c10_u2_7_0;
		i2c37 = &i2c10_u2_6_1;
		i2c38 = &i2c10_u2_5_2;
		i2c39 = &i2c10_u2_4_3;
		i2c40 = &i2c11_clk_buf0_0;
		i2c41 = &i2c11_clk_buf1_1;
		i2c42 = &i2c11_clk_buf2_2;
		i2c43 = &i2c11_clk_buf3_3;
		i2c44 = &i2c14_u2_3_0;
		i2c45 = &i2c14_u2_2_1;
		i2c46 = &i2c14_u2_1_2;
		i2c47 = &i2c14_u2_0_3;
		fiu0 = &fiu0;
		fiu1 = &fiu3;
	};

	chosen {
		stdout-path = &serial0;
	};

	memory {
		reg = <0 0x40000000>;
	};

	gpio-keys {
		compatible = "gpio-keys";
		sas-cable0 {
			label = "sas-cable0";
			gpios = <&gpio2 9 GPIO_ACTIVE_LOW>;
			linux,code = <73>;
		};

		sas-cable1 {
			label = "sas-cable1";
			gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
			linux,code = <72>;
		};

		sas-cable2 {
			label = "sas-cable2";
			gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
			linux,code = <71>;
		};

		sas-cable3 {
			label = "sas-cable3";
			gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
			linux,code = <70>;
		};

		sata0 {
			label = "sata0";
			gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
			linux,code = <5>;
		};

		hsbp-cable {
			label = "hsbp-cable";
			gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
			linux,code = <57>;
		};

		fanbd-cable {
			label = "fanbd-cable";
			gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
			linux,code = <58>;
		};

		bp12v-cable {
			label = "bp12v-cable";
			gpios = <&gpio2 5 GPIO_ACTIVE_HIGH>;
			linux,code = <69>;
		};

		pe-slot0 {
			label = "pe-slot0";
			gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
			linux,code = <120>;
		};

		pe-slot1 {
			label = "pe-slot1";
			gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
			linux,code = <121>;
		};
	};

	iio-hwmon {
		compatible = "iio-hwmon";
		io-channels = <&adc 1>, <&adc 2>;
	};

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

	leds {
		compatible = "gpio-leds";

		heartbeat { /* gpio153 */
			gpios = <&gpio4 25 GPIO_ACTIVE_LOW>;
			linux,default-trigger = "heartbeat";
		};

		attention { /* gpio215 */
			gpios = <&gpio6 23 GPIO_ACTIVE_HIGH>;
			default-state = "off";
		};

		sys_boot_status { /* gpio216 */
			gpios = <&gpio6 24 GPIO_ACTIVE_HIGH>;
			default-state = "keep";
			retain-state-shutdown;
		};

		bmc_fault { /* gpio217 */
			gpios = <&gpio6 25 GPIO_ACTIVE_HIGH>;
			default-state = "off";
			linux,default-trigger = "panic";
			panic-indicator;
		};

		led_u2_0_locate {
			gpios = <&pca9535_ledlocate 3 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_1_locate {
			gpios = <&pca9535_ledlocate 2 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_2_locate {
			gpios = <&pca9535_ledlocate 1 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_3_locate {
			gpios = <&pca9535_ledlocate 0 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_4_locate {
			gpios = <&pca9535_ledlocate 7 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_5_locate {
			gpios = <&pca9535_ledlocate 6 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_6_locate {
			gpios = <&pca9535_ledlocate 5 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_7_locate {
			gpios = <&pca9535_ledlocate 4 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_8_locate {
			gpios = <&pca9535_ledlocate 11 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_9_locate {
			gpios = <&pca9535_ledlocate 10 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_10_locate {
			gpios = <&pca9535_ledlocate 9 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_11_locate {
			gpios = <&pca9535_ledlocate 8 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_12_locate {
			gpios = <&pca9535_ledlocate 15 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_13_locate {
			gpios = <&pca9535_ledlocate 14 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_14_locate {
			gpios = <&pca9535_ledlocate 13 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_15_locate {
			gpios = <&pca9535_ledlocate 12 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_0_fault {
			gpios = <&pca9535_ledfault 3 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_1_fault {
			gpios = <&pca9535_ledfault 2 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_2_fault {
			gpios = <&pca9535_ledfault 1 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_3_fault {
			gpios = <&pca9535_ledfault 0 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_4_fault {
			gpios = <&pca9535_ledfault 7 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_5_fault {
			gpios = <&pca9535_ledfault 6 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_6_fault {
			gpios = <&pca9535_ledfault 5 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_7_fault {
			gpios = <&pca9535_ledfault 4 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_8_fault {
			gpios = <&pca9535_ledfault 11 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_9_fault {
			gpios = <&pca9535_ledfault 10 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_10_fault {
			gpios = <&pca9535_ledfault 9 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_11_fault {
			gpios = <&pca9535_ledfault 8 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_12_fault {
			gpios = <&pca9535_ledfault 15 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_13_fault {
			gpios = <&pca9535_ledfault 14 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_14_fault {
			gpios = <&pca9535_ledfault 13 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

		led_u2_15_fault {
			gpios = <&pca9535_ledfault 12 GPIO_ACTIVE_LOW>;
			default-state = "off";
		};

	};

	seven-seg-disp {
		compatible = "seven-seg-gpio-dev";
		refresh-interval-ms = /bits/ 16 <600>;
		clock-gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
		data-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
		clear-gpios = <&gpio0 1 GPIO_ACTIVE_HIGH>;
	};

	pcie-slot {
		pcie1: pcie-slot@1 {
			label = "PE0";
		};
		pcie2: pcie-slot@2 {
			label = "PE1";
		};
	};
};

&fiu0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0cs1_pins>;
	status = "okay";
	flash@0 {
		compatible = "jedec,spi-nor";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0>;
		spi-max-frequency = <20000000>;
		spi-rx-bus-width = <2>;
		label = "bmc";
		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;
			u-boot@0 {
				label = "u-boot";
				reg = <0x0000000 0xf0000>;
			};
			image-descriptor@f0000 {
				label = "image-descriptor";
				reg = <0xf0000 0x10000>;
			};
			hoth-update@100000 {
				label = "hoth-update";
				reg = <0x100000 0x100000>;
			};
			kernel@200000 {
				label = "kernel";
				reg = <0x200000 0x500000>;
			};
			rofs@700000 {
				label = "rofs";
				reg = <0x700000 0x35f0000>;
			};
			rwfs@3cf0000 {
				label = "rwfs";
				reg = <0x3cf0000 0x300000>;
			};
			hoth-mailbox@3ff0000 {
				label = "hoth-mailbox";
				reg = <0x3ff0000 0x10000>;
			};
		};
	};
};

&fiu3 {
	pinctrl-0 = <&spi3_pins>, <&spi3cs1_pins>;
	status = "okay";

	flash@0 {
		compatible = "jedec,spi-nor";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <0>;
		spi-max-frequency = <50000000>;
		spi-rx-bus-width = <2>;
		m25p,fast-read;
		label = "pnor";
	};
	flash@1 {
		compatible = "jedec,spi-nor";
		#address-cells = <1>;
		#size-cells = <1>;
		reg = <1>;
		spi-max-frequency = <50000000>;
		spi-rx-bus-width = <2>;
		m25p,fast-read;
	};
};

&gcr {
	serial_port_mux: uart-mux-controller {
		compatible = "mmio-mux";
		#mux-control-cells = <1>;
		mux-reg-masks = <0x38 0x07>;
		idle-states = <2>; /* Serial port mode 3 (takeover) */
	};

	uart1_mode_mux: uart1-mode-mux-controller {
		compatible = "mmio-mux";
		#mux-control-cells = <1>;
		mux-reg-masks = <0x64 0x01000000>;
		idle-states = <0>; /* Set UART1 mode to normal (follow SPMOD) */
	};
};

&gmac0 {
	status = "okay";
	phy-mode = "rgmii-id";
	snps,eee-force-disable;
};

&ehci1 {
	status = "okay";
};

&watchdog1 {
	status = "okay";
};

&rng {
	status = "okay";
};

&serial0 {
	status = "okay";
};

&serial1 {
	status = "okay";
};

&serial2 {
	status = "okay";
};

&serial3 {
	status = "okay";
};

&adc {
	#io-channel-cells = <1>;
	status = "okay";
};

&lpc_kcs {
	kcs1: kcs1@0 {
		status = "okay";
	};

	kcs2: kcs2@0 {
		status = "okay";
	};

	kcs3: kcs3@0 {
		status = "okay";
	};
};

&spi1 {
	cs-gpios = <&gpio4 19 GPIO_ACTIVE_HIGH>; /* dummy - gpio147 */
	pinctrl-names = "default";
	pinctrl-0 = <&gpio224ol_pins &gpio227o_pins
			&gpio228_pins>;
	status = "okay";

	jtag_master@0 {
		compatible = "nuvoton,npcm750-jtag-master";
		spi-max-frequency = <25000000>;
		reg = <0>;
		status = "okay";

		pinctrl-names = "pspi", "gpio";
		pinctrl-0 = <&pspi2_pins>;
		pinctrl-1 = <&gpio224ol_pins &gpio227o_pins
				&gpio228_pins>;

		tck-gpios = <&gpio7 0 GPIO_ACTIVE_HIGH>;
		tdi-gpios = <&gpio7 3 GPIO_ACTIVE_HIGH>;
		tdo-gpios = <&gpio7 4 GPIO_ACTIVE_HIGH>;
		tms-gpios = <&gpio7 6 GPIO_ACTIVE_HIGH>;
	};
};

&i2c0 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@71 {
		compatible = "nxp,pca9546";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x71>;
		i2c-mux-idle-disconnect;
		reset-gpios = <&gpio2 20 GPIO_ACTIVE_LOW>;

		i2c0_slotPE0_0: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
			pcie-slot = &pcie1;
		};

		i2c0_slotPE1_1: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
			pcie-slot = &pcie2;
		};

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

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

&i2c1 {
	clock-frequency = <100000>;
	status = "okay";

	pca9535_ifdet: pca9535-ifdet@24 {
		compatible = "nxp,pca9535";
		reg = <0x24>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	pca9535_pwren: pca9535-pwren@20 {
		compatible = "nxp,pca9535";
		reg = <0x20>;
		gpio-controller;
		#gpio-cells = <2>;

		gpio-line-names =
			"pwr_u2_3_en","pwr_u2_2_en",
			"pwr_u2_1_en","pwr_u2_0_en",
			"pwr_u2_7_en","pwr_u2_6_en",
			"pwr_u2_5_en","pwr_u2_4_en",
			"pwr_u2_11_en","pwr_u2_10_en",
			"pwr_u2_9_en","pwr_u2_8_en",
			"pwr_u2_15_en","pwr_u2_14_en",
			"pwr_u2_13_en","pwr_u2_12_en";
	};

	pca9535_pwrgd: pca9535-pwrgd@21 {
		compatible = "nxp,pca9535";
		reg = <0x21>;
		gpio-controller;
		#gpio-cells = <2>;
	};

	pca9535_ledlocate: pca9535-ledlocate@22 {
		compatible = "nxp,pca9535";
		reg = <0x22>;
		gpio-controller;
		#gpio-cells = <2>;

	};

	pca9535_ledfault: pca9535-ledfault@23 {
		compatible = "nxp,pca9535";
		reg = <0x23>;
		gpio-controller;
		#gpio-cells = <2>;

	};

	pca9535_pwrdisable: pca9535-pwrdisable@25 {
		compatible = "nxp,pca9535";
		reg = <0x25>;
		gpio-controller;
		#gpio-cells = <2>;

		gpio-line-names =
			"u2_3_pwr_dis","u2_2_pwr_dis",
			"u2_1_pwr_dis","u2_0_pwr_dis",
			"u2_7_pwr_dis","u2_6_pwr_dis",
			"u2_5_pwr_dis","u2_4_pwr_dis",
			"u2_11_pwr_dis","u2_10_pwr_dis",
			"u2_9_pwr_dis","u2_8_pwr_dis",
			"u2_15_pwr_dis","u2_14_pwr_dis",
			"u2_13_pwr_dis","u2_12_pwr_dis";
	};

	pca9535_perst: pca9535-perst@26 {
		compatible = "nxp,pca9535";
		reg = <0x26>;
		gpio-controller;
		#gpio-cells = <2>;

		gpio-line-names =
			"u2_15_perst","u2_14_perst",
			"u2_13_perst","u2_12_perst",
			"u2_11_perst","u2_10_perst",
			"u2_9_perst","u2_8_perst",
			"u2_7_perst","u2_6_perst",
			"u2_5_perst","u2_4_perst",
			"u2_3_perst","u2_2_perst",
			"u2_1_perst","u2_0_perst";
	};
};

&i2c2 {
	clock-frequency = <100000>;
	status = "okay";

	sbtsi@4c {
		compatible = "amd,sbtsi";
		reg = <0x4c>;
	};
};

&i2c5 {
	clock-frequency = <100000>;
	status = "okay";

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

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

		i2c5_i2cool_0: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
			max31725@54 {
				compatible = "maxim,max31725";
				reg = <0x54>;
				status = "okay";
			};
		};

		i2c5_i2cool_1: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
			max31725@55 {
				compatible = "maxim,max31725";
				reg = <0x55>;
				status = "okay";
			};
		};

		i2c5_i2cool_2: i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;
			max31725@5d {
				compatible = "maxim,max31725";
				reg = <0x5d>;
				status = "okay";
			};
			fan_fru@51 {
				compatible = "atmel,24c64";
				reg = <0x51>;
			};
		};

		i2c5_hsbp_fru_3: i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;
			hsbp_fru@52 {
				compatible = "atmel,24c64";
				reg = <0x52>;
				status = "okay";
			};
		};
	};
};

&i2c6 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@73 {
		compatible = "nxp,pca9545";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x73>;
		i2c-mux-idle-disconnect;

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

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

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

&i2c7 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@72 {
		compatible = "nxp,pca9545";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x72>;
		i2c-mux-idle-disconnect;

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

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

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

&i2c8 {
	clock-frequency = <100000>;
	status = "okay";

	i2c8_adm1272: adm1272@10 {
		compatible = "adi,adm1272";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x10>;
		shunt-resistor-micro-ohms = <300>;
	};
};

&i2c9 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@71 {
		compatible = "nxp,pca9546";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x71>;
		i2c-mux-idle-disconnect;
		reset-gpios = <&gpio2 22 GPIO_ACTIVE_LOW>;

		i2c9_vddcr_cpu: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;
			vrm@60 {
				compatible = "isil,isl68137";
				reg = <0x60>;
			};
		};

		i2c9_vddcr_soc: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;
			vrm@61 {
				compatible = "isil,isl68137";
				reg = <0x61>;
			};
		};

		i2c9_vddio_efgh: i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;
			vrm@63 {
				compatible = "isil,isl68137";
				reg = <0x63>;
			};
		};

		i2c9_vddio_abcd: i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;
			vrm@45 {
				compatible = "isil,isl68137";
				reg = <0x45>;
			};
		};
	};
};

&i2c10 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@71 {
		compatible = "nxp,pca9545";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x71>;
		i2c-mux-idle-disconnect;

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

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

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

&i2c11 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@76 {
		compatible = "nxp,pca9545";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x76>;
		i2c-mux-idle-disconnect;

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

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

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

&i2c12 {
	clock-frequency = <100000>;
	status = "okay";

	max34451@4e {
		compatible = "maxim,max34451";
		reg = <0x4e>;
	};
	vrm@5d {
		compatible = "isil,isl68137";
		reg = <0x5d>;
	};
	vrm@5e {
		compatible = "isil,isl68137";
		reg = <0x5e>;
	};
};

&i2c13 {
	clock-frequency = <100000>;
	status = "okay";
};

&i2c14 {
	clock-frequency = <100000>;
	status = "okay";

	i2c-mux@70 {
		compatible = "nxp,pca9545";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x70>;
		i2c-mux-idle-disconnect;

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

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

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

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

&pwm_fan {
	pinctrl-names = "default";
	pinctrl-0 = <
		&pwm0_pins &pwm1_pins
		&pwm2_pins &pwm3_pins
		&pwm4_pins
		&fanin0_pins &fanin1_pins
		&fanin2_pins &fanin3_pins
		&fanin4_pins
	>;
	status = "okay";

	fan@0 {
		reg = <0x00>;
		fan-tach-ch = /bits/ 8 <0x00>;
	};
	fan@1 {
		reg = <0x01>;
		fan-tach-ch = /bits/ 8 <0x01>;
	};
	fan@2 {
		reg = <0x02>;
		fan-tach-ch = /bits/ 8 <0x02>;
	};
	fan@3 {
		reg = <0x04>;
		fan-tach-ch = /bits/ 8 <0x04>;
	};
	fan@4 {
		reg = <0x03>;
		fan-tach-ch = /bits/ 8 <0x03>;
	};
};

&pinctrl {
	pinctrl-names = "default";

	gpio0: gpio@f0010000 {
		/* POWER_OUT=gpio07, RESET_OUT=gpio06, PS_PWROK=gpio13 */
		gpio-line-names =
		/*0-31*/
		"","","","","","","RESET_OUT","POWER_OUT",
		"","","","","","PS_PWROK","","",
		"","","","","","","","",
		"","","","","","","","";
	};
	gpio1: gpio@f0011000 {
		/* SIO_POWER_GOOD=gpio59 */
		gpio-line-names =
		/*32-63*/
		"","","","","","","","",
		"","","","","","","","",
		"","","","","","","","",
		"","","","SIO_POWER_GOOD","","","","";
	};
	gpio2: gpio@f0012000 {
		bmc_usb_mux_oe_n {
			gpio-hog;
			gpios = <25 GPIO_ACTIVE_HIGH>;
			output-low;
			line-name = "bmc-usb-mux-oe-n";
		};
		bmc_usb_mux_sel {
			gpio-hog;
			gpios = <26 GPIO_ACTIVE_HIGH>;
			output-low;
			line-name = "bmc-usb-mux-sel";
		};
		bmc_usb2517_reset_n {
			gpio-hog;
			gpios = <27 GPIO_ACTIVE_LOW>;
			output-low;
			line-name = "bmc-usb2517-reset-n";
		};
	};
	gpio3: gpio@f0013000 {
		assert_cpu0_reset {
			gpio-hog;
			gpios = <14 GPIO_ACTIVE_HIGH>;
			output-low;
			line-name = "assert-cpu0-reset";
		};
		assert_pwrok_cpu0_n {
			gpio-hog;
			gpios = <15 GPIO_ACTIVE_HIGH>;
			output-low;
			line-name = "assert-pwrok-cpu0-n";
		};
		assert_cpu0_prochot {
			gpio-hog;
			gpios = <16 GPIO_ACTIVE_HIGH>;
			output-low;
			line-name = "assert-cpu0-prochot";
		};
	};
	gpio4: gpio@f0014000 {
		/* POST_COMPLETE=gpio143 */
		gpio-line-names =
			/*128-159*/
			"","","","","","","","",
			"","","","","","","","POST_COMPLETE",
			"","","","","","","","",
			"","","","","","","","";
	};
	gpio5: gpio@f0015000 {
		/* POWER_BUTTON=gpio177 */
		gpio-line-names =
			/*160-191*/
			"","","","","","","","",
			"","","","","","","","",
			"","POWER_BUTTON","","","","","","",
			"","","","","","","","";
	};
	gpio6: gpio@f0016000 {
		/* SIO_S5=gpio199, RESET_BUTTON=gpio203 */
		gpio-line-names =
			/*192-223*/
			"","","","","","","","SIO_S5",
			"","","","RESET_BUTTON","","","","",
			"","","","","","","","",
			"","","","","","","","";
	};

	gpio224ol_pins: gpio224ol-pins {
		pins = "GPIO224/SPIXCK";
		bias-disable;
		output-low;
	};
	gpio227o_pins: gpio227o-pins {
		pins = "GPIO227/nSPIXCS0";
		bias-disable;
		output-high;
	};
	gpio228_pins: gpio228-pins {
		pins = "GPIO228/nSPIXCS1";
		bias-disable;
		input-enable;
	};
};
