1724ba675SRob Herring// SPDX-License-Identifier: GPL-2.0+
2724ba675SRob Herring/dts-v1/;
3724ba675SRob Herring
4724ba675SRob Herring#include "aspeed-g4.dtsi"
5724ba675SRob Herring#include <dt-bindings/gpio/aspeed-gpio.h>
6724ba675SRob Herring
7724ba675SRob Herring#define EFUSE_OUTPUT(n)					\
8724ba675SRob Herring	efuse##n {					\
9724ba675SRob Herring		compatible = "regulator-output";	\
10724ba675SRob Herring		vout-supply = <&efuse##n>;		\
11724ba675SRob Herring	}
12724ba675SRob Herring
13724ba675SRob Herring#define __stringify(x) #x
14724ba675SRob Herring
15724ba675SRob Herring#define EFUSE(hexaddr, num)							\
16724ba675SRob Herring	efuse@##hexaddr {							\
17471c23ecSZev Weiss		compatible = "ti,lm25066";					\
18724ba675SRob Herring		reg = <0x##hexaddr>;						\
19724ba675SRob Herring		shunt-resistor-micro-ohms = <675>;				\
20724ba675SRob Herring		regulators {							\
217af851f2SZev Weiss			efuse##num: vout {					\
22724ba675SRob Herring				regulator-name = __stringify(efuse##num##-reg);	\
23724ba675SRob Herring			};							\
24724ba675SRob Herring		};								\
25724ba675SRob Herring	}
26724ba675SRob Herring
27724ba675SRob Herring/{
28724ba675SRob Herring	model = "Delta Power AHE-50DC";
29724ba675SRob Herring	compatible = "delta,ahe50dc-bmc", "aspeed,ast2400";
30724ba675SRob Herring
31724ba675SRob Herring	aliases {
32724ba675SRob Herring		serial4 = &uart5;
33724ba675SRob Herring
34724ba675SRob Herring		/*
35724ba675SRob Herring		 * pca9541-arbitrated logical i2c buses are numbered as the
36724ba675SRob Herring		 * corresponding physical bus plus 20
37724ba675SRob Herring		 */
38724ba675SRob Herring		i2c20 = &i2carb0;
39724ba675SRob Herring		i2c21 = &i2carb1;
40724ba675SRob Herring		i2c22 = &i2carb2;
41724ba675SRob Herring		i2c23 = &i2carb3;
42724ba675SRob Herring		i2c24 = &i2carb4;
43724ba675SRob Herring		i2c26 = &i2carb6;
44724ba675SRob Herring		i2c27 = &i2carb7;
45724ba675SRob Herring		i2c28 = &i2carb8;
46724ba675SRob Herring		i2c32 = &i2carb12;
47724ba675SRob Herring	};
48724ba675SRob Herring
49724ba675SRob Herring	chosen {
50724ba675SRob Herring		stdout-path = &uart3;
51724ba675SRob Herring		bootargs = "console=ttyS2,115200n8 earlycon";
52724ba675SRob Herring	};
53724ba675SRob Herring
54724ba675SRob Herring	memory@40000000 {
55724ba675SRob Herring		reg = <0x40000000 0x10000000>;
56724ba675SRob Herring	};
57724ba675SRob Herring
58724ba675SRob Herring	leds {
59724ba675SRob Herring		compatible = "gpio-leds";
60724ba675SRob Herring
61724ba675SRob Herring		heartbeat {
62724ba675SRob Herring			gpios = <&gpio ASPEED_GPIO(P, 0) GPIO_ACTIVE_HIGH>;
63724ba675SRob Herring			linux,default-trigger = "heartbeat";
64724ba675SRob Herring		};
65724ba675SRob Herring
66724ba675SRob Herring		panic {
67724ba675SRob Herring			gpios = <&gpio ASPEED_GPIO(P, 2) GPIO_ACTIVE_HIGH>;
68724ba675SRob Herring			linux,default-trigger = "panic";
69724ba675SRob Herring		};
70724ba675SRob Herring	};
71724ba675SRob Herring
72724ba675SRob Herring	iio-hwmon {
73724ba675SRob Herring		compatible = "iio-hwmon";
74724ba675SRob Herring		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>,
75724ba675SRob Herring			<&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>, <&adc 9>;
76724ba675SRob Herring	};
77724ba675SRob Herring
78724ba675SRob Herring	EFUSE_OUTPUT(01);
79724ba675SRob Herring	EFUSE_OUTPUT(02);
80724ba675SRob Herring	EFUSE_OUTPUT(03);
81724ba675SRob Herring	EFUSE_OUTPUT(04);
82724ba675SRob Herring	EFUSE_OUTPUT(05);
83724ba675SRob Herring	EFUSE_OUTPUT(06);
84724ba675SRob Herring	EFUSE_OUTPUT(07);
85724ba675SRob Herring	EFUSE_OUTPUT(08);
86724ba675SRob Herring	EFUSE_OUTPUT(09);
87724ba675SRob Herring	EFUSE_OUTPUT(10);
88724ba675SRob Herring	EFUSE_OUTPUT(11);
89724ba675SRob Herring	EFUSE_OUTPUT(12);
90724ba675SRob Herring	EFUSE_OUTPUT(13);
91724ba675SRob Herring	EFUSE_OUTPUT(14);
92724ba675SRob Herring	EFUSE_OUTPUT(15);
93724ba675SRob Herring	EFUSE_OUTPUT(16);
94724ba675SRob Herring	EFUSE_OUTPUT(17);
95724ba675SRob Herring	EFUSE_OUTPUT(18);
96724ba675SRob Herring	EFUSE_OUTPUT(19);
97724ba675SRob Herring	EFUSE_OUTPUT(20);
98724ba675SRob Herring	EFUSE_OUTPUT(21);
99724ba675SRob Herring	EFUSE_OUTPUT(22);
100724ba675SRob Herring	EFUSE_OUTPUT(23);
101724ba675SRob Herring	EFUSE_OUTPUT(24);
102724ba675SRob Herring	EFUSE_OUTPUT(25);
103724ba675SRob Herring	EFUSE_OUTPUT(26);
104724ba675SRob Herring	EFUSE_OUTPUT(27);
105724ba675SRob Herring	EFUSE_OUTPUT(28);
106724ba675SRob Herring	EFUSE_OUTPUT(29);
107724ba675SRob Herring	EFUSE_OUTPUT(30);
108724ba675SRob Herring	EFUSE_OUTPUT(31);
109724ba675SRob Herring	EFUSE_OUTPUT(32);
110724ba675SRob Herring	EFUSE_OUTPUT(33);
111724ba675SRob Herring	EFUSE_OUTPUT(34);
112724ba675SRob Herring	EFUSE_OUTPUT(35);
113724ba675SRob Herring	EFUSE_OUTPUT(36);
114724ba675SRob Herring	EFUSE_OUTPUT(37);
115724ba675SRob Herring	EFUSE_OUTPUT(38);
116724ba675SRob Herring	EFUSE_OUTPUT(39);
117724ba675SRob Herring	EFUSE_OUTPUT(40);
118724ba675SRob Herring	EFUSE_OUTPUT(41);
119724ba675SRob Herring	EFUSE_OUTPUT(42);
120724ba675SRob Herring	EFUSE_OUTPUT(43);
121724ba675SRob Herring	EFUSE_OUTPUT(44);
122724ba675SRob Herring	EFUSE_OUTPUT(45);
123724ba675SRob Herring	EFUSE_OUTPUT(46);
124724ba675SRob Herring	EFUSE_OUTPUT(47);
125724ba675SRob Herring	EFUSE_OUTPUT(48);
126724ba675SRob Herring	EFUSE_OUTPUT(49);
127724ba675SRob Herring	EFUSE_OUTPUT(50);
128724ba675SRob Herring
129724ba675SRob Herring};
130724ba675SRob Herring
131724ba675SRob Herring&fmc {
132724ba675SRob Herring	status = "okay";
133724ba675SRob Herring
134724ba675SRob Herring	flash@0 {
135724ba675SRob Herring		status = "okay";
136724ba675SRob Herring		m25p,fast-read;
137724ba675SRob Herring		label = "flash0";
138724ba675SRob Herring		spi-max-frequency = <50000000>; // 50 MHz
139724ba675SRob Herring#include "openbmc-flash-layout.dtsi"
140724ba675SRob Herring	};
141724ba675SRob Herring};
142724ba675SRob Herring
143724ba675SRob Herring&uart3 {
144724ba675SRob Herring	status = "okay";
145724ba675SRob Herring};
146724ba675SRob Herring
147724ba675SRob Herring&mac1 {
148724ba675SRob Herring	status = "okay";
149724ba675SRob Herring	pinctrl-names = "default";
150724ba675SRob Herring	pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
151724ba675SRob Herring};
152724ba675SRob Herring
153724ba675SRob Herring&i2c0 {
154724ba675SRob Herring	status = "okay";
155724ba675SRob Herring	bus-frequency = <200000>;
156724ba675SRob Herring
157724ba675SRob Herring	pca9541@79 {
158724ba675SRob Herring		compatible = "nxp,pca9541";
159724ba675SRob Herring		reg = <0x79>;
160724ba675SRob Herring
161724ba675SRob Herring		i2carb0: i2c-arb {
162724ba675SRob Herring			#address-cells = <1>;
163724ba675SRob Herring			#size-cells = <0>;
164724ba675SRob Herring
165724ba675SRob Herring			/* lm25066 efuses @ 10-17, 40-47, 50-57 */
166724ba675SRob Herring			EFUSE(10, 03);
167724ba675SRob Herring			EFUSE(11, 04);
168724ba675SRob Herring			EFUSE(12, 01);
169724ba675SRob Herring			EFUSE(13, 02);
170724ba675SRob Herring			EFUSE(14, 13);
171724ba675SRob Herring			EFUSE(15, 14);
172724ba675SRob Herring			EFUSE(16, 15);
173724ba675SRob Herring			EFUSE(17, 16);
174724ba675SRob Herring			EFUSE(40, 12);
175724ba675SRob Herring			EFUSE(41, 11);
176724ba675SRob Herring			EFUSE(42, 10);
177724ba675SRob Herring			EFUSE(43, 09);
178724ba675SRob Herring			EFUSE(44, 08);
179724ba675SRob Herring			EFUSE(45, 07);
180724ba675SRob Herring			EFUSE(46, 05);
181724ba675SRob Herring			EFUSE(47, 06);
182724ba675SRob Herring			EFUSE(50, 17);
183724ba675SRob Herring			EFUSE(51, 18);
184724ba675SRob Herring			EFUSE(52, 20);
185724ba675SRob Herring			EFUSE(53, 19);
186724ba675SRob Herring			EFUSE(54, 22);
187724ba675SRob Herring			EFUSE(55, 21);
188724ba675SRob Herring			EFUSE(56, 24);
189724ba675SRob Herring			EFUSE(57, 23);
190724ba675SRob Herring		};
191724ba675SRob Herring	};
192724ba675SRob Herring};
193724ba675SRob Herring
194724ba675SRob Herring&i2c1 {
195724ba675SRob Herring	status = "okay";
196724ba675SRob Herring	bus-frequency = <200000>;
197724ba675SRob Herring
198724ba675SRob Herring	pca9541@72 {
199724ba675SRob Herring		compatible = "nxp,pca9541";
200724ba675SRob Herring		reg = <0x72>;
201724ba675SRob Herring
202724ba675SRob Herring		i2carb1: i2c-arb {
203724ba675SRob Herring			#address-cells = <1>;
204724ba675SRob Herring			#size-cells = <0>;
205724ba675SRob Herring		};
206724ba675SRob Herring	};
207724ba675SRob Herring};
208724ba675SRob Herring
209724ba675SRob Herring&i2c2 {
210724ba675SRob Herring	status = "okay";
211724ba675SRob Herring	bus-frequency = <200000>;
212724ba675SRob Herring
213724ba675SRob Herring	pca9541@73 {
214724ba675SRob Herring		compatible = "nxp,pca9541";
215724ba675SRob Herring		reg = <0x73>;
216724ba675SRob Herring
217724ba675SRob Herring		i2carb2: i2c-arb {
218724ba675SRob Herring			#address-cells = <1>;
219724ba675SRob Herring			#size-cells = <0>;
220724ba675SRob Herring		};
221724ba675SRob Herring	};
222724ba675SRob Herring};
223724ba675SRob Herring
224724ba675SRob Herring&i2c3 {
225724ba675SRob Herring	status = "okay";
226724ba675SRob Herring	bus-frequency = <200000>;
227724ba675SRob Herring
228724ba675SRob Herring	pca9541@74 {
229724ba675SRob Herring		compatible = "nxp,pca9541";
230724ba675SRob Herring		reg = <0x74>;
231724ba675SRob Herring
232724ba675SRob Herring		i2carb3: i2c-arb {
233724ba675SRob Herring			#address-cells = <1>;
234724ba675SRob Herring			#size-cells = <0>;
235724ba675SRob Herring		};
236724ba675SRob Herring	};
237724ba675SRob Herring};
238724ba675SRob Herring
239724ba675SRob Herring&i2c4 {
240724ba675SRob Herring	status = "okay";
241724ba675SRob Herring	bus-frequency = <200000>;
242724ba675SRob Herring
243724ba675SRob Herring	pca9541@7a {
244724ba675SRob Herring		compatible = "nxp,pca9541";
245724ba675SRob Herring		reg = <0x7a>;
246724ba675SRob Herring
247724ba675SRob Herring		i2carb4: i2c-arb {
248724ba675SRob Herring			#address-cells = <1>;
249724ba675SRob Herring			#size-cells = <0>;
250724ba675SRob Herring
251724ba675SRob Herring			gpio@20 {
252724ba675SRob Herring				compatible = "nxp,pca9534";
253724ba675SRob Herring				reg = <0x20>;
254724ba675SRob Herring				gpio-controller;
255724ba675SRob Herring				#gpio-cells = <2>;
256724ba675SRob Herring			};
257724ba675SRob Herring
258724ba675SRob Herring			/* lm25066 efuses @ 10-17, 40-47, 50-57, 59, 5a */
259724ba675SRob Herring			EFUSE(10, 27);
260724ba675SRob Herring			EFUSE(11, 28);
261724ba675SRob Herring			EFUSE(12, 25);
262724ba675SRob Herring			EFUSE(13, 26);
263724ba675SRob Herring			EFUSE(14, 37);
264724ba675SRob Herring			EFUSE(15, 38);
265724ba675SRob Herring			EFUSE(16, 39);
266724ba675SRob Herring			EFUSE(17, 40);
267724ba675SRob Herring			EFUSE(40, 36);
268724ba675SRob Herring			EFUSE(41, 35);
269724ba675SRob Herring			EFUSE(42, 34);
270724ba675SRob Herring			EFUSE(43, 33);
271724ba675SRob Herring			EFUSE(44, 32);
272724ba675SRob Herring			EFUSE(45, 31);
273724ba675SRob Herring			EFUSE(46, 29);
274724ba675SRob Herring			EFUSE(47, 30);
275724ba675SRob Herring			EFUSE(50, 41);
276724ba675SRob Herring			EFUSE(51, 42);
277724ba675SRob Herring			EFUSE(52, 44);
278724ba675SRob Herring			EFUSE(53, 43);
279724ba675SRob Herring			EFUSE(54, 46);
280724ba675SRob Herring			EFUSE(55, 45);
281724ba675SRob Herring			EFUSE(56, 48);
282724ba675SRob Herring			EFUSE(57, 47);
283724ba675SRob Herring			EFUSE(59, 49);
284724ba675SRob Herring			EFUSE(5a, 50);
285724ba675SRob Herring		};
286724ba675SRob Herring	};
287724ba675SRob Herring};
288724ba675SRob Herring
289724ba675SRob Herring&i2c6 {
290724ba675SRob Herring	status = "okay";
291724ba675SRob Herring	bus-frequency = <200000>;
292724ba675SRob Herring
293724ba675SRob Herring	pca9541@75 {
294724ba675SRob Herring		compatible = "nxp,pca9541";
295724ba675SRob Herring		reg = <0x75>;
296724ba675SRob Herring
297724ba675SRob Herring		i2carb6: i2c-arb {
298724ba675SRob Herring			#address-cells = <1>;
299724ba675SRob Herring			#size-cells = <0>;
300724ba675SRob Herring		};
301724ba675SRob Herring	};
302724ba675SRob Herring};
303724ba675SRob Herring
304724ba675SRob Herring&i2c7 {
305724ba675SRob Herring	status = "okay";
306724ba675SRob Herring	bus-frequency = <200000>;
307724ba675SRob Herring
308724ba675SRob Herring	pca9541@76 {
309724ba675SRob Herring		compatible = "nxp,pca9541";
310724ba675SRob Herring		reg = <0x76>;
311724ba675SRob Herring
312724ba675SRob Herring		i2carb7: i2c-arb {
313724ba675SRob Herring			#address-cells = <1>;
314724ba675SRob Herring			#size-cells = <0>;
315724ba675SRob Herring		};
316724ba675SRob Herring	};
317724ba675SRob Herring};
318724ba675SRob Herring
319724ba675SRob Herring&i2c8 {
320724ba675SRob Herring	status = "okay";
321724ba675SRob Herring	bus-frequency = <200000>;
322724ba675SRob Herring
323724ba675SRob Herring	pca9541@7c {
324724ba675SRob Herring		compatible = "nxp,pca9541";
325724ba675SRob Herring		reg = <0x7c>;
326724ba675SRob Herring
327724ba675SRob Herring		i2carb8: i2c-arb {
328724ba675SRob Herring			#address-cells = <1>;
329724ba675SRob Herring			#size-cells = <0>;
330724ba675SRob Herring
331724ba675SRob Herring			fancontrol@30 {
332724ba675SRob Herring				compatible = "delta,ahe50dc-fan";
333724ba675SRob Herring				reg = <0x30>;
334724ba675SRob Herring			};
335724ba675SRob Herring
336724ba675SRob Herring			/* Baseboard FRU eeprom */
337724ba675SRob Herring			eeprom@50 {
338724ba675SRob Herring				compatible = "atmel,24c02";
339724ba675SRob Herring				reg = <0x50>;
340724ba675SRob Herring			};
341724ba675SRob Herring		};
342724ba675SRob Herring	};
343724ba675SRob Herring};
344724ba675SRob Herring
345724ba675SRob Herring&i2c12 {
346724ba675SRob Herring	status = "okay";
347724ba675SRob Herring	bus-frequency = <200000>;
348724ba675SRob Herring
349724ba675SRob Herring	pca9541@71 {
350724ba675SRob Herring		compatible = "nxp,pca9541";
351724ba675SRob Herring		reg = <0x71>;
352724ba675SRob Herring
353724ba675SRob Herring		i2carb12: i2c-arb {
354724ba675SRob Herring			#address-cells = <1>;
355724ba675SRob Herring			#size-cells = <0>;
356724ba675SRob Herring		};
357724ba675SRob Herring	};
358724ba675SRob Herring};
359724ba675SRob Herring
360724ba675SRob Herring&gpio {
361724ba675SRob Herring	status = "okay";
362724ba675SRob Herring	gpio-line-names =
363724ba675SRob Herring		/*  A */ "", "", "", "", "", "", "", "",
364724ba675SRob Herring		/*  B */ "", "", "", "", "", "", "", "",
365724ba675SRob Herring		/*  C */ "RESET_PEER_N", "HEARTBEAT_OUT", "", "", "", "", "", "",
366724ba675SRob Herring		/*  D */ "", "", "", "", "", "", "", "",
367724ba675SRob Herring		/*  E */ "DOOM_N", "", "", "", "", "LED_PWR_BLUE", "", "",
368724ba675SRob Herring		/*  F */ "", "", "", "", "", "", "", "",
369724ba675SRob Herring		/*  G */ "", "", "", "", "", "", "", "",
370724ba675SRob Herring		/*  H */ "", "", "", "", "", "", "", "",
371724ba675SRob Herring		/*  I */ "", "", "", "", "", "", "", "",
372724ba675SRob Herring		/*  J */ "", "", "BMC_ID", "", "", "", "", "",
373724ba675SRob Herring		/*  K */ "", "", "", "", "", "", "", "",
374724ba675SRob Herring		/*  L */ "", "", "", "", "", "", "", "",
375724ba675SRob Herring		/*  M */ "", "", "", "", "", "", "", "",
376724ba675SRob Herring		/*  N */ "", "", "", "", "", "", "", "",
377724ba675SRob Herring		/*  O */ "", "", "", "", "", "", "", "",
378724ba675SRob Herring		/*  P */ "LED_GREEN", "", "LED_RED", "", "", "", "", "",
379724ba675SRob Herring		/*  Q */ "", "", "", "", "", "", "", "",
380724ba675SRob Herring		/*  R */ "", "", "", "", "", "", "", "",
381724ba675SRob Herring		/*  S */ "", "", "", "", "", "", "", "",
382724ba675SRob Herring		/*  T */ "", "", "", "", "", "", "", "",
383724ba675SRob Herring		/*  U */ "", "", "", "", "", "", "", "",
384724ba675SRob Herring		/*  V */ "", "", "", "", "", "", "", "",
385724ba675SRob Herring		/*  W */ "", "", "", "", "", "", "", "",
386724ba675SRob Herring		/*  X */ "", "", "", "", "", "", "", "",
387724ba675SRob Herring		/*  Y */ "HEARTBEAT_IN", "BOARDREV0", "BOARDREV1", "",
388724ba675SRob Herring		/*  Z */ "", "", "", "", "", "", "", "",
389724ba675SRob Herring		/* AA */ "", "", "", "", "", "", "", "",
390724ba675SRob Herring		/* AB */ "", "", "", "";
391724ba675SRob Herring
392724ba675SRob Herring	/*
393724ba675SRob Herring	 * I don't rightly know what this GPIO really *is*, but setting it to
394724ba675SRob Herring	 * zero causes the fans to run at full speed, after which setting it
395724ba675SRob Herring	 * back to one causes a power output glitch, so install a hog to keep
396724ba675SRob Herring	 * it at one as a failsafe to ensure nothing accidentally touches it.
397724ba675SRob Herring	 */
398724ba675SRob Herring	doom-guardrail {
399724ba675SRob Herring		gpio-hog;
400724ba675SRob Herring		gpios = <ASPEED_GPIO(E, 0) GPIO_ACTIVE_LOW>;
401724ba675SRob Herring		output-low;
402724ba675SRob Herring	};
403724ba675SRob Herring};
404724ba675SRob Herring
405724ba675SRob Herring&adc {
406724ba675SRob Herring	status = "okay";
407724ba675SRob Herring	pinctrl-names = "default";
408724ba675SRob Herring	pinctrl-0 = <&pinctrl_adc0_default
409724ba675SRob Herring		&pinctrl_adc1_default
410724ba675SRob Herring		&pinctrl_adc2_default
411724ba675SRob Herring		&pinctrl_adc3_default
412724ba675SRob Herring		&pinctrl_adc4_default
413724ba675SRob Herring		&pinctrl_adc5_default
414724ba675SRob Herring		&pinctrl_adc6_default
415724ba675SRob Herring		&pinctrl_adc7_default
416724ba675SRob Herring		&pinctrl_adc8_default
417724ba675SRob Herring		&pinctrl_adc9_default>;
418724ba675SRob Herring};
419