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