1db63e417SZev Weiss// SPDX-License-Identifier: GPL-2.0+
2db63e417SZev Weiss/dts-v1/;
3db63e417SZev Weiss
4db63e417SZev Weiss#include "aspeed-g5.dtsi"
5db63e417SZev Weiss#include <dt-bindings/gpio/aspeed-gpio.h>
6db63e417SZev Weiss#include <dt-bindings/i2c/i2c.h>
7db63e417SZev Weiss#include <dt-bindings/interrupt-controller/irq.h>
8db63e417SZev Weiss
9db63e417SZev Weiss/{
10db63e417SZev Weiss	model = "ASRock SPC621D8HM3 BMC";
11db63e417SZev Weiss	compatible = "asrock,spc621d8hm3-bmc", "aspeed,ast2500";
12db63e417SZev Weiss
13db63e417SZev Weiss	aliases {
14db63e417SZev Weiss		serial4 = &uart5;
15db63e417SZev Weiss
16db63e417SZev Weiss		i2c20 = &i2c1mux0ch0;
17db63e417SZev Weiss		i2c21 = &i2c1mux0ch1;
18db63e417SZev Weiss	};
19db63e417SZev Weiss
20db63e417SZev Weiss	chosen {
21db63e417SZev Weiss		stdout-path = &uart5;
22db63e417SZev Weiss		bootargs = "console=tty0 console=ttyS4,115200 earlycon";
23db63e417SZev Weiss	};
24db63e417SZev Weiss
25db63e417SZev Weiss	memory@80000000 {
26db63e417SZev Weiss		reg = <0x80000000 0x20000000>;
27db63e417SZev Weiss	};
28db63e417SZev Weiss
29db63e417SZev Weiss	leds {
30db63e417SZev Weiss		compatible = "gpio-leds";
31db63e417SZev Weiss
32db63e417SZev Weiss		heartbeat {
33db63e417SZev Weiss			gpios = <&gpio ASPEED_GPIO(H, 6) GPIO_ACTIVE_LOW>;
34db63e417SZev Weiss			linux,default-trigger = "timer";
35db63e417SZev Weiss		};
36db63e417SZev Weiss
37db63e417SZev Weiss		system-fault {
38db63e417SZev Weiss			gpios = <&gpio ASPEED_GPIO(Z, 2) GPIO_ACTIVE_LOW>;
39db63e417SZev Weiss			panic-indicator;
40db63e417SZev Weiss		};
41db63e417SZev Weiss	};
42db63e417SZev Weiss
43db63e417SZev Weiss	iio-hwmon {
44db63e417SZev Weiss		compatible = "iio-hwmon";
45db63e417SZev Weiss		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
46db63e417SZev Weiss			<&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>,
47db63e417SZev Weiss			<&adc 8>, <&adc 9>, <&adc 10>, <&adc 11>,
48db63e417SZev Weiss			<&adc 12>, <&adc 13>, <&adc 14>, <&adc 15>;
49db63e417SZev Weiss	};
50db63e417SZev Weiss};
51db63e417SZev Weiss
52db63e417SZev Weiss&fmc {
53db63e417SZev Weiss	status = "okay";
54db63e417SZev Weiss	flash@0 {
55db63e417SZev Weiss		status = "okay";
56db63e417SZev Weiss		m25p,fast-read;
57db63e417SZev Weiss		label = "bmc";
58db63e417SZev Weiss		spi-max-frequency = <50000000>; /* 50 MHz */
59db63e417SZev Weiss#include "openbmc-flash-layout-64.dtsi"
60db63e417SZev Weiss	};
61db63e417SZev Weiss};
62db63e417SZev Weiss
63cdeefb40SZev Weiss&spi1 {
64cdeefb40SZev Weiss	status = "okay";
65cdeefb40SZev Weiss	pinctrl-names = "default";
66cdeefb40SZev Weiss	pinctrl-0 = <&pinctrl_spi1_default>;
67cdeefb40SZev Weiss	flash@0 {
68cdeefb40SZev Weiss		status = "okay";
69cdeefb40SZev Weiss		label = "bios";
70cdeefb40SZev Weiss		m25p,fast-read;
71cdeefb40SZev Weiss		spi-max-frequency = <17000000>; /* 17 MHz */
72cdeefb40SZev Weiss	};
73cdeefb40SZev Weiss};
74cdeefb40SZev Weiss
75db63e417SZev Weiss&uart5 {
76db63e417SZev Weiss	status = "okay";
77db63e417SZev Weiss};
78db63e417SZev Weiss
79db63e417SZev Weiss&vuart {
80db63e417SZev Weiss	status = "okay";
81db63e417SZev Weiss	aspeed,lpc-io-reg = <0x2f8>;
82db63e417SZev Weiss	aspeed,lpc-interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
83db63e417SZev Weiss};
84db63e417SZev Weiss
85db63e417SZev Weiss&mac0 {
86db63e417SZev Weiss	status = "okay";
87db63e417SZev Weiss
88db63e417SZev Weiss	pinctrl-names = "default";
89db63e417SZev Weiss	pinctrl-0 = <&pinctrl_rgmii1_default &pinctrl_mdio1_default>;
90db63e417SZev Weiss
91db63e417SZev Weiss	nvmem-cells = <&eth0_macaddress>;
92db63e417SZev Weiss	nvmem-cell-names = "mac-address";
93db63e417SZev Weiss};
94db63e417SZev Weiss
95db63e417SZev Weiss&i2c0 {
96db63e417SZev Weiss	status = "okay";
97db63e417SZev Weiss};
98db63e417SZev Weiss
99db63e417SZev Weiss&i2c1 {
100db63e417SZev Weiss	status = "okay";
101db63e417SZev Weiss
102db63e417SZev Weiss	/* hardware monitor/thermal sensor */
103db63e417SZev Weiss	temperature-sensor@29 {
104db63e417SZev Weiss		compatible = "nuvoton,nct7802";
105db63e417SZev Weiss		reg = <0x29>;
106db63e417SZev Weiss	};
107db63e417SZev Weiss
108db63e417SZev Weiss	/* motherboard temp sensor (TMP1, near BMC) */
109db63e417SZev Weiss	temperature-sensor@4c {
110db63e417SZev Weiss		compatible = "nuvoton,w83773g";
111db63e417SZev Weiss		reg = <0x4c>;
112db63e417SZev Weiss	};
113db63e417SZev Weiss
114db63e417SZev Weiss	/* motherboard FRU eeprom */
115db63e417SZev Weiss	eeprom@50 {
116db63e417SZev Weiss		compatible = "st,24c128", "atmel,24c128";
117db63e417SZev Weiss		reg = <0x50>;
118db63e417SZev Weiss		pagesize = <16>;
119db63e417SZev Weiss
120*f4cff445SRafał Miłecki		nvmem-layout {
121*f4cff445SRafał Miłecki			compatible = "fixed-layout";
122*f4cff445SRafał Miłecki			#address-cells = <1>;
123*f4cff445SRafał Miłecki			#size-cells = <1>;
124*f4cff445SRafał Miłecki
125db63e417SZev Weiss			eth0_macaddress: macaddress@3f80 {
126db63e417SZev Weiss				reg = <0x3f80 6>;
127db63e417SZev Weiss			};
128db63e417SZev Weiss		};
129*f4cff445SRafał Miłecki	};
130db63e417SZev Weiss
131db63e417SZev Weiss	/* M.2 slot smbus mux */
132db63e417SZev Weiss	i2c-mux@71 {
133db63e417SZev Weiss		compatible = "nxp,pca9545";
134db63e417SZev Weiss		reg = <0x71>;
135db63e417SZev Weiss		#address-cells = <1>;
136db63e417SZev Weiss		#size-cells = <0>;
137db63e417SZev Weiss
138db63e417SZev Weiss		i2c1mux0ch0: i2c@0 {
139db63e417SZev Weiss			#address-cells = <1>;
140db63e417SZev Weiss			#size-cells = <0>;
141db63e417SZev Weiss			reg = <0>;
142db63e417SZev Weiss		};
143db63e417SZev Weiss
144db63e417SZev Weiss		i2c1mux0ch1: i2c@1 {
145db63e417SZev Weiss			#address-cells = <1>;
146db63e417SZev Weiss			#size-cells = <0>;
147db63e417SZev Weiss			reg = <1>;
148db63e417SZev Weiss		};
149db63e417SZev Weiss	};
150db63e417SZev Weiss};
151db63e417SZev Weiss
152db63e417SZev Weiss&i2c2 {
153db63e417SZev Weiss	status = "okay";
154db63e417SZev Weiss};
155db63e417SZev Weiss
156db63e417SZev Weiss&i2c3 {
157db63e417SZev Weiss	status = "okay";
158db63e417SZev Weiss};
159db63e417SZev Weiss
160db63e417SZev Weiss&i2c4 {
161db63e417SZev Weiss	status = "okay";
162db63e417SZev Weiss};
163db63e417SZev Weiss
164db63e417SZev Weiss&i2c5 {
165db63e417SZev Weiss	status = "okay";
166db63e417SZev Weiss};
167db63e417SZev Weiss
168db63e417SZev Weiss&i2c6 {
169db63e417SZev Weiss	status = "okay";
170db63e417SZev Weiss};
171db63e417SZev Weiss
172db63e417SZev Weiss&i2c7 {
173db63e417SZev Weiss	status = "okay";
174db63e417SZev Weiss};
175db63e417SZev Weiss
176db63e417SZev Weiss&i2c8 {
177db63e417SZev Weiss	status = "okay";
178db63e417SZev Weiss};
179db63e417SZev Weiss
180db63e417SZev Weiss&i2c9 {
181db63e417SZev Weiss	status = "okay";
182db63e417SZev Weiss};
183db63e417SZev Weiss
184db63e417SZev Weiss&i2c10 {
185db63e417SZev Weiss	status = "okay";
186db63e417SZev Weiss};
187db63e417SZev Weiss
188db63e417SZev Weiss&i2c11 {
189db63e417SZev Weiss	status = "okay";
190db63e417SZev Weiss};
191db63e417SZev Weiss
192db63e417SZev Weiss&i2c12 {
193db63e417SZev Weiss	status = "okay";
194db63e417SZev Weiss};
195db63e417SZev Weiss
196db63e417SZev Weiss&i2c13 {
197db63e417SZev Weiss	status = "okay";
198db63e417SZev Weiss};
199db63e417SZev Weiss
200db63e417SZev Weiss&video {
201db63e417SZev Weiss	status = "okay";
202db63e417SZev Weiss};
203db63e417SZev Weiss
204db63e417SZev Weiss&vhub {
205db63e417SZev Weiss	status = "okay";
206db63e417SZev Weiss};
207db63e417SZev Weiss
208db63e417SZev Weiss&lpc_ctrl {
209db63e417SZev Weiss	status = "okay";
210db63e417SZev Weiss};
211db63e417SZev Weiss
212db63e417SZev Weiss&lpc_snoop {
213db63e417SZev Weiss	status = "okay";
214db63e417SZev Weiss	snoop-ports = <0x80>;
215db63e417SZev Weiss};
216db63e417SZev Weiss
217db63e417SZev Weiss&kcs3 {
218db63e417SZev Weiss	status = "okay";
219db63e417SZev Weiss	aspeed,lpc-io-reg = <0xca2>;
220db63e417SZev Weiss};
221db63e417SZev Weiss
222db63e417SZev Weiss&peci0 {
223db63e417SZev Weiss	status = "okay";
224db63e417SZev Weiss};
225db63e417SZev Weiss
226db63e417SZev Weiss&pwm_tacho {
227db63e417SZev Weiss	status = "okay";
228db63e417SZev Weiss	pinctrl-names = "default";
229db63e417SZev Weiss	pinctrl-0 = <&pinctrl_pwm0_default
230db63e417SZev Weiss		&pinctrl_pwm2_default
231db63e417SZev Weiss		&pinctrl_pwm3_default
232db63e417SZev Weiss		&pinctrl_pwm4_default>;
233db63e417SZev Weiss
234db63e417SZev Weiss	fan@0 {
235db63e417SZev Weiss		reg = <0x00>;
236db63e417SZev Weiss		aspeed,fan-tach-ch = /bits/ 8 <0x00>;
237db63e417SZev Weiss	};
238db63e417SZev Weiss
239db63e417SZev Weiss	fan@2 {
240db63e417SZev Weiss		reg = <0x02>;
241db63e417SZev Weiss		aspeed,fan-tach-ch = /bits/ 8 <0x02>;
242db63e417SZev Weiss	};
243db63e417SZev Weiss
244db63e417SZev Weiss	fan@3 {
245db63e417SZev Weiss		reg = <0x03>;
246db63e417SZev Weiss		aspeed,fan-tach-ch = /bits/ 8 <0x03>;
247db63e417SZev Weiss	};
248db63e417SZev Weiss
249db63e417SZev Weiss	fan@4 {
250db63e417SZev Weiss		reg = <0x04>;
251db63e417SZev Weiss		aspeed,fan-tach-ch = /bits/ 8 <0x04>;
252db63e417SZev Weiss	};
253db63e417SZev Weiss};
254db63e417SZev Weiss
255db63e417SZev Weiss&gpio {
256db63e417SZev Weiss	status = "okay";
257db63e417SZev Weiss	gpio-line-names =
258db63e417SZev Weiss		/*  A */ "LOCATORLED_STATUS_N", "LOCATORBTN_N",
259db63e417SZev Weiss			"BMC_READY_N", "FM_SPD_DDRCPU_LVLSHFT_EN",
260db63e417SZev Weiss			"", "", "", "",
261db63e417SZev Weiss		/*  B */ "NODE_ID_1", "NODE_ID_2", "PSU_FAN_FAIL_N", "",
262db63e417SZev Weiss			"", "", "", "GPIO_RST",
263db63e417SZev Weiss		/*  C */ "", "", "", "", "", "", "", "",
264db63e417SZev Weiss		/*  D */ "FP_PWR_BTN_MUX_N", "FM_BMC_PWRBTN_OUT_N",
265db63e417SZev Weiss			"FP_RST_BTN_N", "RST_BMC_RSTBTN_OUT_N",
266db63e417SZev Weiss			"NMI_BTN_N", "BMC_NMI",
267db63e417SZev Weiss			"", "",
268db63e417SZev Weiss		/*  E */ "", "", "", "FM_ME_RCVR_N", "", "", "", "",
269db63e417SZev Weiss		/*  F */ "BMC_SMB_SEL_N", "FM_CPU2_DISABLE_COD_N",
270db63e417SZev Weiss			"FM_REMOTE_DEBUG_BMC_EN", "FM_CPU_ERR0_LVT3_EN",
271db63e417SZev Weiss			"FM_CPU_ERR1_LVT3_EN", "FM_CPU_ERR2_LVT3_EN",
272db63e417SZev Weiss			"FM_MEM_THERM_EVENT_CPU1_LVT3_N", "FM_MEM_THERM_EVENT_CPU2_LVT3_N",
273db63e417SZev Weiss		/*  G */ "HWM_BAT_EN", "", "BMC_PHYRST_N", "FM_BIOS_SPI_BMC_CTRL",
274db63e417SZev Weiss			"BMC_ALERT1_N", "BMC_ALERT2_N", "BMC_ALERT3_N", "IRQ_SML0_ALERT_N",
275db63e417SZev Weiss		/*  H */ "BMC_SMB_PRESENT_1_N", "FM_PCH_CORE_VID_0", "FM_PCH_CORE_VID_1", "",
276db63e417SZev Weiss			"FM_MFG_MODE", "BMC_RTCRST", "BMC_HB_LED_N", "BMC_CASEOPEN",
277db63e417SZev Weiss		/*  I */ "IRQ_PVDDQ_ABCD_CPU1_VRHOT_LVC3_N", "IRQ_PVDDQ_ABCD_CPU2_VRHOT_LVC3_N",
278db63e417SZev Weiss			"IRQ_PVDDQ_EFGH_CPU1_VRHOT_LVC3_N", "IRQ_PVDDQ_EFGH_CPU2_VRHOT_LVC3_N",
279db63e417SZev Weiss			"", "", "", "",
280db63e417SZev Weiss		/*  J */ "", "", "", "", "", "", "", "",
281db63e417SZev Weiss		/*  K */ "", "", "", "", "", "", "", "",
282db63e417SZev Weiss		/*  L */ "", "", "", "", "", "", "", "",
283db63e417SZev Weiss		/*  M */ "FM_PVCCIN_CPU1_PWR_IN_ALERT_N", "FM_PVCCIN_CPU2_PWR_IN_ALERT_N",
284db63e417SZev Weiss			"IRQ_PVCCIN_CPU1_VRHOT_LVC3_N", "IRQ_PVCCIN_CPU2_VRHOT_LVC3_N",
285db63e417SZev Weiss			"FM_CPU1_PROCHOT_BMC_LVC3_N", "",
286db63e417SZev Weiss			"FM_CPU1_MEMHOT_OUT_N", "FM_CPU2_MEMHOT_OUT_N",
287db63e417SZev Weiss		/*  N */ "", "", "", "", "", "", "", "",
288db63e417SZev Weiss		/*  O */ "", "", "", "", "", "", "", "",
289db63e417SZev Weiss		/*  P */ "", "", "", "", "", "", "", "",
290db63e417SZev Weiss		/*  Q */ "", "", "", "", "", "", "RST_GLB_RST_WARN_N", "PCIE_WAKE_N",
291db63e417SZev Weiss		/*  R */ "", "", "FM_BMC_SUSACK_N", "FM_BMC_EUP_LOT6_N",
292db63e417SZev Weiss			"", "FM_BMC_PCH_SCI_LPC_N", "", "",
293db63e417SZev Weiss		/*  S */ "FM_DBP_PRESENT_N", "FM_CPU2_SKTOCC_LCT3_N",
294db63e417SZev Weiss			"FM_CPU1_FIVR_FAULT_LVT3", "FM_CPU2_FIVR_FAULT_LVT3",
295db63e417SZev Weiss			 "", "", "", "",
296db63e417SZev Weiss		/*  T */ "", "", "", "", "", "", "", "",
297db63e417SZev Weiss		/*  U */ "", "", "", "", "", "", "", "",
298db63e417SZev Weiss		/*  V */ "", "", "", "", "", "", "", "",
299db63e417SZev Weiss		/*  W */ "", "", "", "", "", "", "", "",
300db63e417SZev Weiss		/*  X */ "", "", "", "", "", "", "", "",
301db63e417SZev Weiss		/*  Y */ "FM_SLPS3_N", "FM_SLPS4_N", "", "FM_BMC_ONCTL_N_PLD",
302db63e417SZev Weiss			"", "", "", "",
303db63e417SZev Weiss		/*  Z */ "FM_CPU_MSMI_CATERR_LVT3_N", "", "SYSTEM_FAULT_LED_N", "BMC_THROTTLE_N",
304db63e417SZev Weiss			"", "", "", "",
305db63e417SZev Weiss		/* AA */ "FM_CPU1_THERMTRIP_LATCH_LVT3_N", "FM_CPU2_THERMTRIP_LATCH_LVT3_N",
306db63e417SZev Weiss			"FM_BIOS_POST_COMPLT_N", "DBP_BMC_SYSPWROK",
307db63e417SZev Weiss			"", "IRQ_SML0_ALERT_MUX_N",
308db63e417SZev Weiss			"IRQ_SMI_ACTIVE_N", "IRQ_NMI_EVENT_N",
309db63e417SZev Weiss		/* AB */ "FM_PCH_BMC_THERMTRIP_N", "PWRGD_SYS_PWROK",
310db63e417SZev Weiss			"ME_OVERRIDE", "IRQ_BMC_PCH_SMI_LPC_N",
311db63e417SZev Weiss			"", "", "", "",
312db63e417SZev Weiss		/* AC */ "", "", "", "", "", "", "", "";
313db63e417SZev Weiss};
314db63e417SZev Weiss
315db63e417SZev Weiss&adc {
316db63e417SZev Weiss	status = "okay";
317db63e417SZev Weiss	pinctrl-names = "default";
318db63e417SZev Weiss	pinctrl-0 = <&pinctrl_adc0_default /* 3VSB */
319db63e417SZev Weiss		&pinctrl_adc1_default	   /* 5VSB */
320db63e417SZev Weiss		&pinctrl_adc2_default	   /* CPU1 */
321db63e417SZev Weiss		&pinctrl_adc3_default	   /* NC */
322db63e417SZev Weiss		&pinctrl_adc4_default	   /* VCCMABCD */
323db63e417SZev Weiss		&pinctrl_adc5_default	   /* VCCMEFGH */
324db63e417SZev Weiss		&pinctrl_adc6_default	   /* NC */
325db63e417SZev Weiss		&pinctrl_adc7_default	   /* NC */
326db63e417SZev Weiss		&pinctrl_adc8_default	   /* PVNN_PCH */
327db63e417SZev Weiss		&pinctrl_adc9_default	   /* 1P05PCH */
328db63e417SZev Weiss		&pinctrl_adc10_default	   /* 1P8PCH */
329db63e417SZev Weiss		&pinctrl_adc11_default	   /* BAT */
330db63e417SZev Weiss		&pinctrl_adc12_default	   /* 3V */
331db63e417SZev Weiss		&pinctrl_adc13_default	   /* 5V */
332db63e417SZev Weiss		&pinctrl_adc14_default	   /* 12V */
333db63e417SZev Weiss		&pinctrl_adc15_default>;   /* GND */
334db63e417SZev Weiss};
335