1// SPDX-License-Identifier: GPL-2.0+
2/dts-v1/;
3
4#include "aspeed-g4.dtsi"
5#include <dt-bindings/gpio/aspeed-gpio.h>
6
7#define EFUSE_OUTPUT(n)					\
8	efuse##n {					\
9		compatible = "regulator-output";	\
10		vout-supply = <&efuse##n>;		\
11	}
12
13#define __stringify(x) #x
14
15#define EFUSE(hexaddr, num)							\
16	efuse@##hexaddr {							\
17		compatible = "lm25066";						\
18		reg = <0x##hexaddr>;						\
19		shunt-resistor-micro-ohms = <675>;				\
20		regulators {							\
21			efuse##num: vout0 {					\
22				regulator-name = __stringify(efuse##num##-reg);	\
23			};							\
24		};								\
25	}
26
27/{
28	model = "Delta Power AHE-50DC";
29	compatible = "delta,ahe50dc-bmc", "aspeed,ast2400";
30
31	aliases {
32		serial4 = &uart5;
33
34		/*
35		 * pca9541-arbitrated logical i2c buses are numbered as the
36		 * corresponding physical bus plus 20
37		 */
38		i2c20 = &i2carb0;
39		i2c21 = &i2carb1;
40		i2c22 = &i2carb2;
41		i2c23 = &i2carb3;
42		i2c24 = &i2carb4;
43		i2c26 = &i2carb6;
44		i2c27 = &i2carb7;
45		i2c28 = &i2carb8;
46		i2c32 = &i2carb12;
47	};
48
49	chosen {
50		stdout-path = &uart3;
51		bootargs = "console=ttyS2,115200n8 earlycon";
52	};
53
54	memory@40000000 {
55		reg = <0x40000000 0x10000000>;
56	};
57
58	leds {
59		compatible = "gpio-leds";
60
61		heartbeat {
62			gpios = <&gpio ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
63			linux,default-trigger = "heartbeat";
64		};
65
66		panic {
67			gpios = <&gpio ASPEED_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
68			linux,default-trigger = "panic";
69		};
70	};
71
72	iio-hwmon {
73		compatible = "iio-hwmon";
74		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>,
75			<&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>, <&adc 9>;
76	};
77
78	EFUSE_OUTPUT(01);
79	EFUSE_OUTPUT(02);
80	EFUSE_OUTPUT(03);
81	EFUSE_OUTPUT(04);
82	EFUSE_OUTPUT(05);
83	EFUSE_OUTPUT(06);
84	EFUSE_OUTPUT(07);
85	EFUSE_OUTPUT(08);
86	EFUSE_OUTPUT(09);
87	EFUSE_OUTPUT(10);
88	EFUSE_OUTPUT(11);
89	EFUSE_OUTPUT(12);
90	EFUSE_OUTPUT(13);
91	EFUSE_OUTPUT(14);
92	EFUSE_OUTPUT(15);
93	EFUSE_OUTPUT(16);
94	EFUSE_OUTPUT(17);
95	EFUSE_OUTPUT(18);
96	EFUSE_OUTPUT(19);
97	EFUSE_OUTPUT(20);
98	EFUSE_OUTPUT(21);
99	EFUSE_OUTPUT(22);
100	EFUSE_OUTPUT(23);
101	EFUSE_OUTPUT(24);
102	EFUSE_OUTPUT(25);
103	EFUSE_OUTPUT(26);
104	EFUSE_OUTPUT(27);
105	EFUSE_OUTPUT(28);
106	EFUSE_OUTPUT(29);
107	EFUSE_OUTPUT(30);
108	EFUSE_OUTPUT(31);
109	EFUSE_OUTPUT(32);
110	EFUSE_OUTPUT(33);
111	EFUSE_OUTPUT(34);
112	EFUSE_OUTPUT(35);
113	EFUSE_OUTPUT(36);
114	EFUSE_OUTPUT(37);
115	EFUSE_OUTPUT(38);
116	EFUSE_OUTPUT(39);
117	EFUSE_OUTPUT(40);
118	EFUSE_OUTPUT(41);
119	EFUSE_OUTPUT(42);
120	EFUSE_OUTPUT(43);
121	EFUSE_OUTPUT(44);
122	EFUSE_OUTPUT(45);
123	EFUSE_OUTPUT(46);
124	EFUSE_OUTPUT(47);
125	EFUSE_OUTPUT(48);
126	EFUSE_OUTPUT(49);
127	EFUSE_OUTPUT(50);
128
129};
130
131&fmc {
132	status = "okay";
133
134	flash@0 {
135		status = "okay";
136		m25p,fast-read;
137		label = "flash0";
138		spi-max-frequency = <50000000>; // 50 MHz
139#include "openbmc-flash-layout.dtsi"
140	};
141};
142
143&uart3 {
144	status = "okay";
145};
146
147&mac1 {
148	status = "okay";
149	pinctrl-names = "default";
150	pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
151};
152
153&i2c0 {
154	status = "okay";
155	bus-frequency = <200000>;
156
157	pca9541@79 {
158		compatible = "nxp,pca9541";
159		reg = <0x79>;
160
161		i2carb0: i2c-arb {
162			#address-cells = <1>;
163			#size-cells = <0>;
164
165			/* lm25066 efuses @ 10-17, 40-47, 50-57 */
166			EFUSE(10, 03);
167			EFUSE(11, 04);
168			EFUSE(12, 01);
169			EFUSE(13, 02);
170			EFUSE(14, 13);
171			EFUSE(15, 14);
172			EFUSE(16, 15);
173			EFUSE(17, 16);
174			EFUSE(40, 12);
175			EFUSE(41, 11);
176			EFUSE(42, 10);
177			EFUSE(43, 09);
178			EFUSE(44, 08);
179			EFUSE(45, 07);
180			EFUSE(46, 05);
181			EFUSE(47, 06);
182			EFUSE(50, 17);
183			EFUSE(51, 18);
184			EFUSE(52, 20);
185			EFUSE(53, 19);
186			EFUSE(54, 22);
187			EFUSE(55, 21);
188			EFUSE(56, 24);
189			EFUSE(57, 23);
190		};
191	};
192};
193
194&i2c1 {
195	status = "okay";
196	bus-frequency = <200000>;
197
198	pca9541@72 {
199		compatible = "nxp,pca9541";
200		reg = <0x72>;
201
202		i2carb1: i2c-arb {
203			#address-cells = <1>;
204			#size-cells = <0>;
205		};
206	};
207};
208
209&i2c2 {
210	status = "okay";
211	bus-frequency = <200000>;
212
213	pca9541@73 {
214		compatible = "nxp,pca9541";
215		reg = <0x73>;
216
217		i2carb2: i2c-arb {
218			#address-cells = <1>;
219			#size-cells = <0>;
220		};
221	};
222};
223
224&i2c3 {
225	status = "okay";
226	bus-frequency = <200000>;
227
228	pca9541@74 {
229		compatible = "nxp,pca9541";
230		reg = <0x74>;
231
232		i2carb3: i2c-arb {
233			#address-cells = <1>;
234			#size-cells = <0>;
235		};
236	};
237};
238
239&i2c4 {
240	status = "okay";
241	bus-frequency = <200000>;
242
243	pca9541@7a {
244		compatible = "nxp,pca9541";
245		reg = <0x7a>;
246
247		i2carb4: i2c-arb {
248			#address-cells = <1>;
249			#size-cells = <0>;
250
251			gpio@20 {
252				compatible = "nxp,pca9534";
253				reg = <0x20>;
254				gpio-controller;
255				#gpio-cells = <2>;
256			};
257
258			/* lm25066 efuses @ 10-17, 40-47, 50-57, 59, 5a */
259			EFUSE(10, 27);
260			EFUSE(11, 28);
261			EFUSE(12, 25);
262			EFUSE(13, 26);
263			EFUSE(14, 37);
264			EFUSE(15, 38);
265			EFUSE(16, 39);
266			EFUSE(17, 40);
267			EFUSE(40, 36);
268			EFUSE(41, 35);
269			EFUSE(42, 34);
270			EFUSE(43, 33);
271			EFUSE(44, 32);
272			EFUSE(45, 31);
273			EFUSE(46, 29);
274			EFUSE(47, 30);
275			EFUSE(50, 41);
276			EFUSE(51, 42);
277			EFUSE(52, 44);
278			EFUSE(53, 43);
279			EFUSE(54, 46);
280			EFUSE(55, 45);
281			EFUSE(56, 48);
282			EFUSE(57, 47);
283			EFUSE(59, 49);
284			EFUSE(5a, 50);
285		};
286	};
287};
288
289&i2c6 {
290	status = "okay";
291	bus-frequency = <200000>;
292
293	pca9541@75 {
294		compatible = "nxp,pca9541";
295		reg = <0x75>;
296
297		i2carb6: i2c-arb {
298			#address-cells = <1>;
299			#size-cells = <0>;
300		};
301	};
302};
303
304&i2c7 {
305	status = "okay";
306	bus-frequency = <200000>;
307
308	pca9541@76 {
309		compatible = "nxp,pca9541";
310		reg = <0x76>;
311
312		i2carb7: i2c-arb {
313			#address-cells = <1>;
314			#size-cells = <0>;
315		};
316	};
317};
318
319&i2c8 {
320	status = "okay";
321	bus-frequency = <200000>;
322
323	pca9541@7c {
324		compatible = "nxp,pca9541";
325		reg = <0x7c>;
326
327		i2carb8: i2c-arb {
328			#address-cells = <1>;
329			#size-cells = <0>;
330
331			fancontrol@30 {
332				compatible = "delta,ahe50dc-fan";
333				reg = <0x30>;
334			};
335
336			/* Baseboard FRU eeprom */
337			eeprom@50 {
338				compatible = "atmel,24c02";
339				reg = <0x50>;
340			};
341		};
342	};
343};
344
345&i2c12 {
346	status = "okay";
347	bus-frequency = <200000>;
348
349	pca9541@71 {
350		compatible = "nxp,pca9541";
351		reg = <0x71>;
352
353		i2carb12: i2c-arb {
354			#address-cells = <1>;
355			#size-cells = <0>;
356		};
357	};
358};
359
360&gpio {
361	status = "okay";
362	gpio-line-names =
363		/*  A */ "", "", "", "", "", "", "", "",
364		/*  B */ "", "", "", "", "", "", "", "",
365		/*  C */ "RESET_PEER_N", "HEARTBEAT_OUT", "", "", "", "", "", "",
366		/*  D */ "", "", "", "", "", "", "", "",
367		/*  E */ "DOOM_N", "", "", "", "", "LED_PWR_BLUE", "", "",
368		/*  F */ "", "", "", "", "", "", "", "",
369		/*  G */ "", "", "", "", "", "", "", "",
370		/*  H */ "", "", "", "", "", "", "", "",
371		/*  I */ "", "", "", "", "", "", "", "",
372		/*  J */ "", "", "BMC_ID", "", "", "", "", "",
373		/*  K */ "", "", "", "", "", "", "", "",
374		/*  L */ "", "", "", "", "", "", "", "",
375		/*  M */ "", "", "", "", "", "", "", "",
376		/*  N */ "", "", "", "", "", "", "", "",
377		/*  O */ "", "", "", "", "", "", "", "",
378		/*  P */ "LED_GREEN", "", "LED_RED", "", "", "", "", "",
379		/*  Q */ "", "", "", "", "", "", "", "",
380		/*  R */ "", "", "", "", "", "", "", "",
381		/*  S */ "", "", "", "", "", "", "", "",
382		/*  T */ "", "", "", "", "", "", "", "",
383		/*  U */ "", "", "", "", "", "", "", "",
384		/*  V */ "", "", "", "", "", "", "", "",
385		/*  W */ "", "", "", "", "", "", "", "",
386		/*  X */ "", "", "", "", "", "", "", "",
387		/*  Y */ "HEARTBEAT_IN", "BOARDREV0", "BOARDREV1", "",
388		/*  Z */ "", "", "", "", "", "", "", "",
389		/* AA */ "", "", "", "", "", "", "", "",
390		/* AB */ "", "", "", "";
391
392	/*
393	 * I don't rightly know what this GPIO really *is*, but setting it to
394	 * zero causes the fans to run at full speed, after which setting it
395	 * back to one causes a power output glitch, so install a hog to keep
396	 * it at one as a failsafe to ensure nothing accidentally touches it.
397	 */
398	doom-guardrail {
399		gpio-hog;
400		gpios = <ASPEED_GPIO(E, 0) GPIO_ACTIVE_LOW>;
401		output-low;
402	};
403};
404
405&adc {
406	status = "okay";
407	pinctrl-names = "default";
408	pinctrl-0 = <&pinctrl_adc0_default
409		&pinctrl_adc1_default
410		&pinctrl_adc2_default
411		&pinctrl_adc3_default
412		&pinctrl_adc4_default
413		&pinctrl_adc5_default
414		&pinctrl_adc6_default
415		&pinctrl_adc7_default
416		&pinctrl_adc8_default
417		&pinctrl_adc9_default>;
418};
419