1// SPDX-License-Identifier: GPL-2.0+
2// Copyright (c) 2018 Facebook Inc.
3// Author: Vijay Khemka <vijaykhemka@fb.com>
4/dts-v1/;
5
6#include "aspeed-g5.dtsi"
7#include <dt-bindings/gpio/aspeed-gpio.h>
8#include <dt-bindings/i2c/i2c.h>
9
10/ {
11	model = "Facebook TiogaPass BMC";
12	compatible = "facebook,tiogapass-bmc", "aspeed,ast2500";
13	aliases {
14		serial0 = &uart1;
15		serial4 = &uart5;
16
17		/*
18		 * Hardcode the bus number of i2c switches' channels to
19		 * avoid breaking the legacy applications.
20		 */
21		i2c16 = &imux16;
22		i2c17 = &imux17;
23		i2c18 = &imux18;
24		i2c19 = &imux19;
25		i2c20 = &imux20;
26		i2c21 = &imux21;
27		i2c22 = &imux22;
28		i2c23 = &imux23;
29		i2c24 = &imux24;
30		i2c25 = &imux25;
31		i2c26 = &imux26;
32		i2c27 = &imux27;
33		i2c28 = &imux28;
34		i2c29 = &imux29;
35		i2c30 = &imux30;
36		i2c31 = &imux31;
37	};
38	chosen {
39		stdout-path = &uart5;
40		bootargs = "console=ttyS4,115200 earlycon";
41	};
42
43	memory@80000000 {
44		reg = <0x80000000 0x20000000>;
45	};
46
47	iio-hwmon {
48		compatible = "iio-hwmon";
49		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
50			      <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>;
51	};
52
53};
54
55&fmc {
56	status = "okay";
57	flash@0 {
58		status = "okay";
59		m25p,fast-read;
60#include "openbmc-flash-layout.dtsi"
61	};
62};
63
64&spi1 {
65	status = "okay";
66	pinctrl-names = "default";
67	pinctrl-0 = <&pinctrl_spi1_default>;
68	flash@0 {
69		status = "okay";
70		m25p,fast-read;
71		label = "pnor";
72	};
73};
74
75&lpc_snoop {
76	status = "okay";
77	snoop-ports = <0x80>;
78};
79
80&lpc_ctrl {
81	// Enable lpc clock
82	status = "okay";
83};
84
85&uart1 {
86	// Host Console
87	status = "okay";
88	pinctrl-names = "default";
89	pinctrl-0 = <&pinctrl_txd1_default
90		     &pinctrl_rxd1_default>;
91};
92
93&uart2 {
94	// SoL Host Console
95	status = "okay";
96};
97
98&uart3 {
99	// SoL BMC Console
100	status = "okay";
101};
102
103&uart5 {
104	// BMC Console
105	status = "okay";
106};
107
108&kcs2 {
109	// BMC KCS channel 2
110	status = "okay";
111	aspeed,lpc-io-reg = <0xca8>;
112};
113
114&kcs3 {
115	// BMC KCS channel 3
116	status = "okay";
117	aspeed,lpc-io-reg = <0xca2>;
118};
119
120&gpio {
121	status = "okay";
122	gpio-line-names =
123	/*A0-A7*/	"BMC_CPLD_FPGA_SEL","","","","","","","",
124	/*B0-B7*/	"","BMC_DEBUG_EN","","","","BMC_PPIN","PS_PWROK",
125			"IRQ_PVDDQ_GHJ_VRHOT_LVT3",
126	/*C0-C7*/	"","","","","","","","",
127	/*D0-D7*/	"BIOS_MRC_DEBUG_MSG_DIS","BOARD_REV_ID0","",
128			"BOARD_REV_ID1","IRQ_DIMM_SAVE_LVT3","BOARD_REV_ID2",
129			"CPU_ERR0_LVT3_BMC","CPU_ERR1_LVT3_BMC",
130	/*E0-E7*/	"RESET_BUTTON","RESET_OUT","POWER_BUTTON",
131			"POWER_OUT","NMI_BUTTON","","CPU0_PROCHOT_LVT3_ BMC",
132			"CPU1_PROCHOT_LVT3_ BMC",
133	/*F0-F7*/	"IRQ_PVDDQ_ABC_VRHOT_LVT3","",
134			"IRQ_PVCCIN_CPU0_VRHOT_LVC3",
135			"IRQ_PVCCIN_CPU1_VRHOT_LVC3",
136			"IRQ_PVDDQ_KLM_VRHOT_LVT3","","P3VBAT_BRIDGE_EN","",
137	/*G0-G7*/	"CPU_ERR2_LVT3","CPU_CATERR_LVT3","PCH_BMC_THERMTRIP",
138			"CPU0_SKTOCC_LVT3","","","","BIOS_SMI_ACTIVE",
139	/*H0-H7*/	"LED_POST_CODE_0","LED_POST_CODE_1","LED_POST_CODE_2",
140			"LED_POST_CODE_3","LED_POST_CODE_4","LED_POST_CODE_5",
141			"LED_POST_CODE_6","LED_POST_CODE_7",
142	/*I0-I7*/	"CPU0_FIVR_FAULT_LVT3","CPU1_FIVR_FAULT_LVT3",
143			"FORCE_ADR","UV_ADR_TRIGGER_EN","","","","",
144	/*J0-J7*/	"","","","","","","","",
145	/*K0-K7*/	"","","","","","","","",
146	/*L0-L7*/	"IRQ_UV_DETECT","IRQ_OC_DETECT","HSC_TIMER_EXP","",
147			"MEM_THERM_EVENT_PCH","PMBUS_ALERT_BUF_EN","","",
148	/*M0-M7*/	"CPU0_RC_ERROR","CPU1_RC_ERROR","","OC_DETECT_EN",
149			"CPU0_THERMTRIP_LATCH_LVT3",
150			"CPU1_THERMTRIP_LATCH_LVT3","","",
151	/*N0-N7*/	"","","","CPU_MSMI_LVT3","","BIOS_SPI_BMC_CTRL","","",
152	/*O0-O7*/	"","","","","","","","",
153	/*P0-P7*/	"BOARD_SKU_ID0","BOARD_SKU_ID1","BOARD_SKU_ID2",
154			"BOARD_SKU_ID3","BOARD_SKU_ID4","BMC_PREQ",
155			"BMC_PWR_DEBUG","RST_RSMRST",
156	/*Q0-Q7*/	"","","","","UARTSW_LSB","UARTSW_MSB",
157			"POST_CARD_PRES_BMC","PE_BMC_WAKE",
158	/*R0-R7*/	"","","BMC_TCK_MUX_SEL","BMC_PRDY",
159			"BMC_XDP_PRSNT_IN","RST_BMC_PLTRST_BUF","SLT_CFG0",
160			"SLT_CFG1",
161	/*S0-S7*/	"THROTTLE","BMC_READY","","HSC_SMBUS_SWITCH_EN","",
162			"","","",
163	/*T0-T7*/	"","","","","","","","",
164	/*U0-U7*/	"","","","","","BMC_FAULT","","",
165	/*V0-V7*/	"","","","FAST_PROCHOT_EN","","","","",
166	/*W0-W7*/	"","","","","","","","",
167	/*X0-X7*/	"","","","GLOBAL_RST_WARN",
168			"CPU0_MEMABC_MEMHOT_LVT3_BMC",
169			"CPU0_MEMDEF_MEMHOT_LVT3_BMC",
170			"CPU1_MEMGHJ_MEMHOT_LVT3_BMC",
171			"CPU1_MEMKLM_MEMHOT_LVT3_BMC",
172	/*Y0-Y7*/	"SIO_S3","SIO_S5","BMC_JTAG_SEL","SIO_ONCONTROL","",
173			"","","",
174	/*Z0-Z7*/	"","SIO_POWER_GOOD","IRQ_PVDDQ_DEF_VRHOT_LVT3","",
175			"","","","",
176	/*AA0-AA7*/	"CPU1_SKTOCC_LVT3","IRQ_SML1_PMBUS_ALERT",
177			"SERVER_POWER_LED","","PECI_MUX_SELECT","UV_HIGH_SET",
178			"","POST_COMPLETE",
179	/*AB0-AB7*/	"IRQ_HSC_FAULT","OCP_MEZZA_PRES","","","","","","",
180	/*AC0-AC7*/	"","","","","","","","";
181};
182
183&mac0 {
184	status = "okay";
185
186	pinctrl-names = "default";
187	pinctrl-0 = <&pinctrl_rmii1_default>;
188	clocks = <&syscon ASPEED_CLK_GATE_MAC1CLK>,
189		 <&syscon ASPEED_CLK_MAC1RCLK>;
190	clock-names = "MACCLK", "RCLK";
191	use-ncsi;
192};
193
194&mac1 {
195	status = "okay";
196
197	pinctrl-names = "default";
198	pinctrl-0 = <&pinctrl_rmii2_default>;
199	use-ncsi;
200};
201
202&adc {
203	status = "okay";
204};
205
206&i2c0 {
207	status = "okay";
208	//Airmax Conn B, CPU0 PIROM, CPU1 PIROM
209};
210
211&i2c1 {
212	status = "okay";
213	//X24 Riser
214	i2c-switch@71 {
215		compatible = "nxp,pca9544";
216		#address-cells = <1>;
217		#size-cells = <0>;
218		reg = <0x71>;
219
220		imux16: i2c@0 {
221			#address-cells = <1>;
222			#size-cells = <0>;
223			reg = <0>;
224
225			ina230@45 {
226				compatible = "ti,ina230";
227				reg = <0x45>;
228			};
229
230			tmp75@48 {
231				compatible = "ti,tmp75";
232				reg = <0x48>;
233			};
234
235			tmp421@49 {
236				compatible = "ti,tmp75";
237				reg = <0x49>;
238			};
239
240			eeprom@50 {
241				compatible = "atmel,24c64";
242				reg = <0x50>;
243				pagesize = <32>;
244			};
245
246			i2c-switch@73 {
247				compatible = "nxp,pca9546";
248				#address-cells = <1>;
249				#size-cells = <0>;
250				reg = <0x73>;
251
252				imux20: i2c@0 {
253					#address-cells = <1>;
254					#size-cells = <0>;
255					reg = <0>;
256				};
257
258				imux21: i2c@1 {
259					#address-cells = <1>;
260					#size-cells = <0>;
261					reg = <1>;
262				};
263
264				imux22: i2c@2 {
265					#address-cells = <1>;
266					#size-cells = <0>;
267					reg = <2>;
268				};
269
270				imux23: i2c@3 {
271					#address-cells = <1>;
272					#size-cells = <0>;
273					reg = <3>;
274				};
275
276			};
277
278		};
279
280		imux17: i2c@1 {
281			#address-cells = <1>;
282			#size-cells = <0>;
283			reg = <1>;
284
285			ina230@45 {
286				compatible = "ti,ina230";
287				reg = <0x45>;
288			};
289
290			tmp421@48 {
291				compatible = "ti,tmp75";
292				reg = <0x48>;
293			};
294
295			tmp421@49 {
296				compatible = "ti,tmp75";
297				reg = <0x49>;
298			};
299
300			eeprom@50 {
301				compatible = "atmel,24c64";
302				reg = <0x50>;
303				pagesize = <32>;
304			};
305
306			i2c-switch@73 {
307				compatible = "nxp,pca9546";
308				#address-cells = <1>;
309				#size-cells = <0>;
310				reg = <0x73>;
311
312				imux24: i2c@0 {
313					#address-cells = <1>;
314					#size-cells = <0>;
315					reg = <0>;
316				};
317
318				imux25: i2c@1 {
319					#address-cells = <1>;
320					#size-cells = <0>;
321					reg = <1>;
322				};
323
324				imux26: i2c@2 {
325					#address-cells = <1>;
326					#size-cells = <0>;
327					reg = <2>;
328				};
329
330				imux27: i2c@3 {
331					#address-cells = <1>;
332					#size-cells = <0>;
333					reg = <3>;
334				};
335
336			};
337
338		};
339
340		imux18: i2c@2 {
341			#address-cells = <1>;
342			#size-cells = <0>;
343			reg = <2>;
344
345			ina230@45 {
346				compatible = "ti,ina230";
347				reg = <0x45>;
348			};
349
350			tmp421@48 {
351				compatible = "ti,tmp75";
352				reg = <0x48>;
353			};
354
355			tmp421@49 {
356				compatible = "ti,tmp75";
357				reg = <0x49>;
358			};
359
360			eeprom@50 {
361				compatible = "atmel,24c64";
362				reg = <0x50>;
363				pagesize = <32>;
364			};
365
366			i2c-switch@73 {
367				compatible = "nxp,pca9546";
368				#address-cells = <1>;
369				#size-cells = <0>;
370				reg = <0x73>;
371
372				imux28: i2c@0 {
373					#address-cells = <1>;
374					#size-cells = <0>;
375					reg = <0>;
376				};
377
378				imux29: i2c@1 {
379					#address-cells = <1>;
380					#size-cells = <0>;
381					reg = <1>;
382				};
383
384				imux30: i2c@2 {
385					#address-cells = <1>;
386					#size-cells = <0>;
387					reg = <2>;
388				};
389
390				imux31: i2c@3 {
391					#address-cells = <1>;
392					#size-cells = <0>;
393					reg = <3>;
394				};
395
396			};
397
398		};
399
400		imux19: i2c@3 {
401			#address-cells = <1>;
402			#size-cells = <0>;
403			reg = <3>;
404
405			i2c-switch@40 {
406				compatible = "ti,ina230";
407				reg = <0x40>;
408			};
409
410			i2c-switch@41 {
411				compatible = "ti,ina230";
412				reg = <0x41>;
413			};
414
415			i2c-switch@45 {
416				compatible = "ti,ina230";
417				reg = <0x45>;
418			};
419
420		};
421
422	};
423};
424
425&i2c2 {
426	status = "okay";
427	// Mezz Management SMBus
428};
429
430&i2c3 {
431	status = "okay";
432	// SMBus to Board ID EEPROM
433};
434
435&i2c4 {
436	status = "okay";
437	// BMC Debug Header
438	ipmb0@10 {
439		compatible = "ipmb-dev";
440		reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
441		i2c-protocol;
442	};
443};
444
445&i2c5 {
446	status = "okay";
447	// CPU Voltage regulators
448	regulator@48 {
449		compatible = "infineon,pxe1610";
450		reg = <0x48>;
451	};
452	regulator@4a {
453		compatible = "infineon,pxe1610";
454		reg = <0x4a>;
455	};
456	regulator@50 {
457		compatible = "infineon,pxe1610";
458		reg = <0x50>;
459	};
460	regulator@52 {
461		compatible = "infineon,pxe1610";
462		reg = <0x52>;
463	};
464	regulator@58 {
465		compatible = "infineon,pxe1610";
466		reg = <0x58>;
467	};
468	regulator@5a {
469		compatible = "infineon,pxe1610";
470		reg = <0x5a>;
471	};
472	regulator@68 {
473		compatible = "infineon,pxe1610";
474		reg = <0x68>;
475	};
476	regulator@70 {
477		compatible = "infineon,pxe1610";
478		reg = <0x70>;
479	};
480	regulator@72 {
481		compatible = "infineon,pxe1610";
482		reg = <0x72>;
483	};
484};
485
486&i2c6 {
487	status = "okay";
488	tpm@20 {
489		compatible = "infineon,slb9645tt";
490		reg = <0x20>;
491	};
492	tmp421@4e {
493		compatible = "ti,tmp421";
494		reg = <0x4e>;
495	};
496	tmp421@4f {
497		compatible = "ti,tmp421";
498		reg = <0x4f>;
499	};
500	eeprom@54 {
501		compatible = "atmel,24c64";
502		reg = <0x54>;
503		pagesize = <32>;
504	};
505};
506
507&i2c7 {
508	status = "okay";
509	//HSC, AirMax Conn A
510	adm1278@45 {
511		compatible = "adm1275";
512		reg = <0x45>;
513		shunt-resistor-micro-ohms = <250>;
514	};
515};
516
517&i2c8 {
518	status = "okay";
519	tmp421@1f {
520		compatible = "ti,tmp421";
521		reg = <0x1f>;
522	};
523	//Mezz Sensor SMBus
524};
525
526&i2c9 {
527	status = "okay";
528	//USB Debug Connector
529	ipmb0@10 {
530		compatible = "ipmb-dev";
531		reg = <(0x10 | I2C_OWN_SLAVE_ADDRESS)>;
532		i2c-protocol;
533	};
534};
535
536&pwm_tacho {
537	status = "okay";
538	pinctrl-names = "default";
539	pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
540	fan@0 {
541		reg = <0x00>;
542		aspeed,fan-tach-ch = /bits/ 8 <0x00>;
543	};
544
545	fan@1 {
546		reg = <0x01>;
547		aspeed,fan-tach-ch = /bits/ 8 <0x02>;
548	};
549};
550