xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/aspeed-bmc-facebook-wedge400.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0+
2*4882a593Smuzhiyun// Copyright (c) 2019 Facebook Inc.
3*4882a593Smuzhiyun/dts-v1/;
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun#include <dt-bindings/gpio/aspeed-gpio.h>
6*4882a593Smuzhiyun#include "ast2500-facebook-netbmc-common.dtsi"
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun/ {
9*4882a593Smuzhiyun	model = "Facebook Wedge 400 BMC";
10*4882a593Smuzhiyun	compatible = "facebook,wedge400-bmc", "aspeed,ast2500";
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	aliases {
13*4882a593Smuzhiyun		/*
14*4882a593Smuzhiyun		 * PCA9548 (2-0070) provides 8 channels connecting to
15*4882a593Smuzhiyun		 * SCM (System Controller Module).
16*4882a593Smuzhiyun		 */
17*4882a593Smuzhiyun		i2c16 = &imux16;
18*4882a593Smuzhiyun		i2c17 = &imux17;
19*4882a593Smuzhiyun		i2c18 = &imux18;
20*4882a593Smuzhiyun		i2c19 = &imux19;
21*4882a593Smuzhiyun		i2c20 = &imux20;
22*4882a593Smuzhiyun		i2c21 = &imux21;
23*4882a593Smuzhiyun		i2c22 = &imux22;
24*4882a593Smuzhiyun		i2c23 = &imux23;
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun		/*
27*4882a593Smuzhiyun		 * PCA9548 (8-0070) provides 8 channels connecting to
28*4882a593Smuzhiyun		 * SMB (Switch Main Board).
29*4882a593Smuzhiyun		 */
30*4882a593Smuzhiyun		i2c24 = &imux24;
31*4882a593Smuzhiyun		i2c25 = &imux25;
32*4882a593Smuzhiyun		i2c26 = &imux26;
33*4882a593Smuzhiyun		i2c27 = &imux27;
34*4882a593Smuzhiyun		i2c28 = &imux28;
35*4882a593Smuzhiyun		i2c29 = &imux29;
36*4882a593Smuzhiyun		i2c30 = &imux30;
37*4882a593Smuzhiyun		i2c31 = &imux31;
38*4882a593Smuzhiyun
39*4882a593Smuzhiyun		/*
40*4882a593Smuzhiyun		 * PCA9548 (11-0076) provides 8 channels connecting to
41*4882a593Smuzhiyun		 * FCM (Fan Controller Module).
42*4882a593Smuzhiyun		 */
43*4882a593Smuzhiyun		i2c32 = &imux32;
44*4882a593Smuzhiyun		i2c33 = &imux33;
45*4882a593Smuzhiyun		i2c34 = &imux34;
46*4882a593Smuzhiyun		i2c35 = &imux35;
47*4882a593Smuzhiyun		i2c36 = &imux36;
48*4882a593Smuzhiyun		i2c37 = &imux37;
49*4882a593Smuzhiyun		i2c38 = &imux38;
50*4882a593Smuzhiyun		i2c39 = &imux39;
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun		spi2 = &spi_gpio;
53*4882a593Smuzhiyun	};
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun	chosen {
56*4882a593Smuzhiyun		stdout-path = &uart1;
57*4882a593Smuzhiyun		bootargs = "console=ttyS0,9600n8 root=/dev/ram rw";
58*4882a593Smuzhiyun	};
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun	ast-adc-hwmon {
61*4882a593Smuzhiyun		compatible = "iio-hwmon";
62*4882a593Smuzhiyun		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>;
63*4882a593Smuzhiyun	};
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun	/*
66*4882a593Smuzhiyun	 * GPIO-based SPI Master is required to access SPI TPM, because
67*4882a593Smuzhiyun	 * full-duplex SPI transactions are not supported by ASPEED SPI
68*4882a593Smuzhiyun	 * Controllers.
69*4882a593Smuzhiyun	 */
70*4882a593Smuzhiyun	spi_gpio: spi-gpio {
71*4882a593Smuzhiyun		status = "okay";
72*4882a593Smuzhiyun		compatible = "spi-gpio";
73*4882a593Smuzhiyun		#address-cells = <1>;
74*4882a593Smuzhiyun		#size-cells = <0>;
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun		cs-gpios = <&gpio ASPEED_GPIO(R, 2) GPIO_ACTIVE_LOW>;
77*4882a593Smuzhiyun		gpio-sck = <&gpio ASPEED_GPIO(R, 3) GPIO_ACTIVE_HIGH>;
78*4882a593Smuzhiyun		gpio-mosi = <&gpio ASPEED_GPIO(R, 4) GPIO_ACTIVE_HIGH>;
79*4882a593Smuzhiyun		gpio-miso = <&gpio ASPEED_GPIO(R, 5) GPIO_ACTIVE_HIGH>;
80*4882a593Smuzhiyun		num-chipselects = <1>;
81*4882a593Smuzhiyun
82*4882a593Smuzhiyun		tpmdev@0 {
83*4882a593Smuzhiyun			compatible = "tcg,tpm_tis-spi";
84*4882a593Smuzhiyun			spi-max-frequency = <33000000>;
85*4882a593Smuzhiyun			reg = <0>;
86*4882a593Smuzhiyun		};
87*4882a593Smuzhiyun	};
88*4882a593Smuzhiyun};
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun/*
91*4882a593Smuzhiyun * Both firmware flashes are 128MB on Wedge400 BMC.
92*4882a593Smuzhiyun */
93*4882a593Smuzhiyun&fmc_flash0 {
94*4882a593Smuzhiyun	partitions {
95*4882a593Smuzhiyun		compatible = "fixed-partitions";
96*4882a593Smuzhiyun		#address-cells = <1>;
97*4882a593Smuzhiyun		#size-cells = <1>;
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun		/*
100*4882a593Smuzhiyun		 * u-boot partition: 384KB.
101*4882a593Smuzhiyun		 */
102*4882a593Smuzhiyun		u-boot@0 {
103*4882a593Smuzhiyun			reg = <0x0 0x60000>;
104*4882a593Smuzhiyun			label = "u-boot";
105*4882a593Smuzhiyun		};
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun		/*
108*4882a593Smuzhiyun		 * u-boot environment variables: 128KB.
109*4882a593Smuzhiyun		 */
110*4882a593Smuzhiyun		u-boot-env@60000 {
111*4882a593Smuzhiyun			reg = <0x60000 0x20000>;
112*4882a593Smuzhiyun			label = "env";
113*4882a593Smuzhiyun		};
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun		/*
116*4882a593Smuzhiyun		 * FIT image: 123.5 MB.
117*4882a593Smuzhiyun		 */
118*4882a593Smuzhiyun		fit@80000 {
119*4882a593Smuzhiyun			reg = <0x80000 0x7b80000>;
120*4882a593Smuzhiyun			label = "fit";
121*4882a593Smuzhiyun		};
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun		/*
124*4882a593Smuzhiyun		 * "data0" partition (4MB) is reserved for persistent
125*4882a593Smuzhiyun		 * data store.
126*4882a593Smuzhiyun		 */
127*4882a593Smuzhiyun		data0@3800000 {
128*4882a593Smuzhiyun			reg = <0x7c00000 0x800000>;
129*4882a593Smuzhiyun			label = "data0";
130*4882a593Smuzhiyun		};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun		/*
133*4882a593Smuzhiyun		 * "flash0" partition (covering the entire flash) is
134*4882a593Smuzhiyun		 * explicitly created to avoid breaking legacy applications.
135*4882a593Smuzhiyun		 */
136*4882a593Smuzhiyun		flash0@0 {
137*4882a593Smuzhiyun			reg = <0x0 0x8000000>;
138*4882a593Smuzhiyun			label = "flash0";
139*4882a593Smuzhiyun		};
140*4882a593Smuzhiyun	};
141*4882a593Smuzhiyun};
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun&fmc_flash1 {
144*4882a593Smuzhiyun	partitions {
145*4882a593Smuzhiyun		compatible = "fixed-partitions";
146*4882a593Smuzhiyun		#address-cells = <1>;
147*4882a593Smuzhiyun		#size-cells = <1>;
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun		flash1@0 {
150*4882a593Smuzhiyun			reg = <0x0 0x8000000>;
151*4882a593Smuzhiyun			label = "flash1";
152*4882a593Smuzhiyun		};
153*4882a593Smuzhiyun	};
154*4882a593Smuzhiyun};
155*4882a593Smuzhiyun
156*4882a593Smuzhiyun&uart2 {
157*4882a593Smuzhiyun	status = "okay";
158*4882a593Smuzhiyun	pinctrl-names = "default";
159*4882a593Smuzhiyun	pinctrl-0 = <&pinctrl_txd2_default
160*4882a593Smuzhiyun		     &pinctrl_rxd2_default>;
161*4882a593Smuzhiyun};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun&uart4 {
164*4882a593Smuzhiyun	status = "okay";
165*4882a593Smuzhiyun	pinctrl-names = "default";
166*4882a593Smuzhiyun	pinctrl-0 = <&pinctrl_txd4_default
167*4882a593Smuzhiyun		     &pinctrl_rxd4_default>;
168*4882a593Smuzhiyun};
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun/*
171*4882a593Smuzhiyun * I2C bus #0 is multi-master environment dedicated for BMC and Bridge IC
172*4882a593Smuzhiyun * communication.
173*4882a593Smuzhiyun */
174*4882a593Smuzhiyun&i2c0 {
175*4882a593Smuzhiyun	status = "okay";
176*4882a593Smuzhiyun	multi-master;
177*4882a593Smuzhiyun	bus-frequency = <1000000>;
178*4882a593Smuzhiyun};
179*4882a593Smuzhiyun
180*4882a593Smuzhiyun&i2c1 {
181*4882a593Smuzhiyun	status = "okay";
182*4882a593Smuzhiyun};
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun&i2c2 {
185*4882a593Smuzhiyun	status = "okay";
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun	i2c-switch@70 {
188*4882a593Smuzhiyun		compatible = "nxp,pca9548";
189*4882a593Smuzhiyun		#address-cells = <1>;
190*4882a593Smuzhiyun		#size-cells = <0>;
191*4882a593Smuzhiyun		reg = <0x70>;
192*4882a593Smuzhiyun		i2c-mux-idle-disconnect;
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun		imux16: i2c@0 {
195*4882a593Smuzhiyun			#address-cells = <1>;
196*4882a593Smuzhiyun			#size-cells = <0>;
197*4882a593Smuzhiyun			reg = <0>;
198*4882a593Smuzhiyun		};
199*4882a593Smuzhiyun
200*4882a593Smuzhiyun		imux17: i2c@1 {
201*4882a593Smuzhiyun			#address-cells = <1>;
202*4882a593Smuzhiyun			#size-cells = <0>;
203*4882a593Smuzhiyun			reg = <1>;
204*4882a593Smuzhiyun		};
205*4882a593Smuzhiyun
206*4882a593Smuzhiyun		imux18: i2c@2 {
207*4882a593Smuzhiyun			#address-cells = <1>;
208*4882a593Smuzhiyun			#size-cells = <0>;
209*4882a593Smuzhiyun			reg = <2>;
210*4882a593Smuzhiyun		};
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun		imux19: i2c@3 {
213*4882a593Smuzhiyun			#address-cells = <1>;
214*4882a593Smuzhiyun			#size-cells = <0>;
215*4882a593Smuzhiyun			reg = <3>;
216*4882a593Smuzhiyun		};
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun		imux20: i2c@4 {
219*4882a593Smuzhiyun			#address-cells = <1>;
220*4882a593Smuzhiyun			#size-cells = <0>;
221*4882a593Smuzhiyun			reg = <4>;
222*4882a593Smuzhiyun		};
223*4882a593Smuzhiyun
224*4882a593Smuzhiyun		imux21: i2c@5 {
225*4882a593Smuzhiyun			#address-cells = <1>;
226*4882a593Smuzhiyun			#size-cells = <0>;
227*4882a593Smuzhiyun			reg = <5>;
228*4882a593Smuzhiyun		};
229*4882a593Smuzhiyun
230*4882a593Smuzhiyun		imux22: i2c@6 {
231*4882a593Smuzhiyun			#address-cells = <1>;
232*4882a593Smuzhiyun			#size-cells = <0>;
233*4882a593Smuzhiyun			reg = <6>;
234*4882a593Smuzhiyun		};
235*4882a593Smuzhiyun
236*4882a593Smuzhiyun		imux23: i2c@7 {
237*4882a593Smuzhiyun			#address-cells = <1>;
238*4882a593Smuzhiyun			#size-cells = <0>;
239*4882a593Smuzhiyun			reg = <7>;
240*4882a593Smuzhiyun		};
241*4882a593Smuzhiyun	};
242*4882a593Smuzhiyun};
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun&i2c3 {
245*4882a593Smuzhiyun	status = "okay";
246*4882a593Smuzhiyun};
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun&i2c4 {
249*4882a593Smuzhiyun	status = "okay";
250*4882a593Smuzhiyun};
251*4882a593Smuzhiyun
252*4882a593Smuzhiyun&i2c5 {
253*4882a593Smuzhiyun	status = "okay";
254*4882a593Smuzhiyun};
255*4882a593Smuzhiyun
256*4882a593Smuzhiyun&i2c6 {
257*4882a593Smuzhiyun	status = "okay";
258*4882a593Smuzhiyun};
259*4882a593Smuzhiyun
260*4882a593Smuzhiyun&i2c7 {
261*4882a593Smuzhiyun	status = "okay";
262*4882a593Smuzhiyun};
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun&i2c8 {
265*4882a593Smuzhiyun	status = "okay";
266*4882a593Smuzhiyun
267*4882a593Smuzhiyun	i2c-switch@70 {
268*4882a593Smuzhiyun		compatible = "nxp,pca9548";
269*4882a593Smuzhiyun		#address-cells = <1>;
270*4882a593Smuzhiyun		#size-cells = <0>;
271*4882a593Smuzhiyun		reg = <0x70>;
272*4882a593Smuzhiyun		i2c-mux-idle-disconnect;
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun		imux24: i2c@0 {
275*4882a593Smuzhiyun			#address-cells = <1>;
276*4882a593Smuzhiyun			#size-cells = <0>;
277*4882a593Smuzhiyun			reg = <0>;
278*4882a593Smuzhiyun		};
279*4882a593Smuzhiyun
280*4882a593Smuzhiyun		imux25: i2c@1 {
281*4882a593Smuzhiyun			#address-cells = <1>;
282*4882a593Smuzhiyun			#size-cells = <0>;
283*4882a593Smuzhiyun			reg = <1>;
284*4882a593Smuzhiyun		};
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun		imux26: i2c@2 {
287*4882a593Smuzhiyun			#address-cells = <1>;
288*4882a593Smuzhiyun			#size-cells = <0>;
289*4882a593Smuzhiyun			reg = <2>;
290*4882a593Smuzhiyun		};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun		imux27: i2c@3 {
293*4882a593Smuzhiyun			#address-cells = <1>;
294*4882a593Smuzhiyun			#size-cells = <0>;
295*4882a593Smuzhiyun			reg = <3>;
296*4882a593Smuzhiyun		};
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun		imux28: i2c@4 {
299*4882a593Smuzhiyun			#address-cells = <1>;
300*4882a593Smuzhiyun			#size-cells = <0>;
301*4882a593Smuzhiyun			reg = <4>;
302*4882a593Smuzhiyun		};
303*4882a593Smuzhiyun
304*4882a593Smuzhiyun		imux29: i2c@5 {
305*4882a593Smuzhiyun			#address-cells = <1>;
306*4882a593Smuzhiyun			#size-cells = <0>;
307*4882a593Smuzhiyun			reg = <5>;
308*4882a593Smuzhiyun		};
309*4882a593Smuzhiyun
310*4882a593Smuzhiyun		imux30: i2c@6 {
311*4882a593Smuzhiyun			#address-cells = <1>;
312*4882a593Smuzhiyun			#size-cells = <0>;
313*4882a593Smuzhiyun			reg = <6>;
314*4882a593Smuzhiyun		};
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun		imux31: i2c@7 {
317*4882a593Smuzhiyun			#address-cells = <1>;
318*4882a593Smuzhiyun			#size-cells = <0>;
319*4882a593Smuzhiyun			reg = <7>;
320*4882a593Smuzhiyun		};
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun	};
323*4882a593Smuzhiyun};
324*4882a593Smuzhiyun
325*4882a593Smuzhiyun&i2c9 {
326*4882a593Smuzhiyun	status = "okay";
327*4882a593Smuzhiyun};
328*4882a593Smuzhiyun
329*4882a593Smuzhiyun&i2c10 {
330*4882a593Smuzhiyun	status = "okay";
331*4882a593Smuzhiyun};
332*4882a593Smuzhiyun
333*4882a593Smuzhiyun&i2c11 {
334*4882a593Smuzhiyun	status = "okay";
335*4882a593Smuzhiyun
336*4882a593Smuzhiyun	i2c-switch@76 {
337*4882a593Smuzhiyun		compatible = "nxp,pca9548";
338*4882a593Smuzhiyun		#address-cells = <1>;
339*4882a593Smuzhiyun		#size-cells = <0>;
340*4882a593Smuzhiyun		reg = <0x76>;
341*4882a593Smuzhiyun		i2c-mux-idle-disconnect;
342*4882a593Smuzhiyun
343*4882a593Smuzhiyun		imux32: i2c@0 {
344*4882a593Smuzhiyun			#address-cells = <1>;
345*4882a593Smuzhiyun			#size-cells = <0>;
346*4882a593Smuzhiyun			reg = <0>;
347*4882a593Smuzhiyun		};
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun		imux33: i2c@1 {
350*4882a593Smuzhiyun			#address-cells = <1>;
351*4882a593Smuzhiyun			#size-cells = <0>;
352*4882a593Smuzhiyun			reg = <1>;
353*4882a593Smuzhiyun		};
354*4882a593Smuzhiyun
355*4882a593Smuzhiyun		imux34: i2c@2 {
356*4882a593Smuzhiyun			#address-cells = <1>;
357*4882a593Smuzhiyun			#size-cells = <0>;
358*4882a593Smuzhiyun			reg = <2>;
359*4882a593Smuzhiyun		};
360*4882a593Smuzhiyun
361*4882a593Smuzhiyun		imux35: i2c@3 {
362*4882a593Smuzhiyun			#address-cells = <1>;
363*4882a593Smuzhiyun			#size-cells = <0>;
364*4882a593Smuzhiyun			reg = <3>;
365*4882a593Smuzhiyun		};
366*4882a593Smuzhiyun
367*4882a593Smuzhiyun		imux36: i2c@4 {
368*4882a593Smuzhiyun			#address-cells = <1>;
369*4882a593Smuzhiyun			#size-cells = <0>;
370*4882a593Smuzhiyun			reg = <4>;
371*4882a593Smuzhiyun		};
372*4882a593Smuzhiyun
373*4882a593Smuzhiyun		imux37: i2c@5 {
374*4882a593Smuzhiyun			#address-cells = <1>;
375*4882a593Smuzhiyun			#size-cells = <0>;
376*4882a593Smuzhiyun			reg = <5>;
377*4882a593Smuzhiyun		};
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun		imux38: i2c@6 {
380*4882a593Smuzhiyun			#address-cells = <1>;
381*4882a593Smuzhiyun			#size-cells = <0>;
382*4882a593Smuzhiyun			reg = <6>;
383*4882a593Smuzhiyun		};
384*4882a593Smuzhiyun
385*4882a593Smuzhiyun		imux39: i2c@7 {
386*4882a593Smuzhiyun			#address-cells = <1>;
387*4882a593Smuzhiyun			#size-cells = <0>;
388*4882a593Smuzhiyun			reg = <7>;
389*4882a593Smuzhiyun		};
390*4882a593Smuzhiyun
391*4882a593Smuzhiyun	};
392*4882a593Smuzhiyun};
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun&i2c12 {
395*4882a593Smuzhiyun	status = "okay";
396*4882a593Smuzhiyun};
397*4882a593Smuzhiyun
398*4882a593Smuzhiyun&i2c13 {
399*4882a593Smuzhiyun	status = "okay";
400*4882a593Smuzhiyun};
401*4882a593Smuzhiyun
402*4882a593Smuzhiyun&adc {
403*4882a593Smuzhiyun	status = "okay";
404*4882a593Smuzhiyun};
405*4882a593Smuzhiyun
406*4882a593Smuzhiyun&ehci1 {
407*4882a593Smuzhiyun	status = "okay";
408*4882a593Smuzhiyun};
409*4882a593Smuzhiyun
410*4882a593Smuzhiyun&uhci {
411*4882a593Smuzhiyun	status = "okay";
412*4882a593Smuzhiyun};
413*4882a593Smuzhiyun
414*4882a593Smuzhiyun&sdhci1 {
415*4882a593Smuzhiyun	/*
416*4882a593Smuzhiyun	 * DMA mode needs to be disabled to avoid conflicts with UHCI
417*4882a593Smuzhiyun	 * Controller in AST2500 SoC.
418*4882a593Smuzhiyun	 */
419*4882a593Smuzhiyun	sdhci-caps-mask = <0x0 0x580000>;
420*4882a593Smuzhiyun};
421