1// SPDX-License-Identifier: GPL-2.0-or-later
2// Copyright 2023 IBM Corp.
3
4&fsim0 {
5	status = "okay";
6
7	#address-cells = <2>;
8	#size-cells = <0>;
9
10	cfam-reset-gpios = <&gpio0 ASPEED_GPIO(Q, 0) GPIO_ACTIVE_HIGH>;
11
12	cfam@0,0 {
13		reg = <0 0>;
14		#address-cells = <1>;
15		#size-cells = <1>;
16		chip-id = <0>;
17
18		scom@1000 {
19			compatible = "ibm,fsi2pib";
20			reg = <0x1000 0x400>;
21		};
22
23		i2c@1800 {
24			compatible = "ibm,fsi-i2c-master";
25			reg = <0x1800 0x400>;
26			#address-cells = <1>;
27			#size-cells = <0>;
28
29			cfam0_i2c0: i2c-bus@0 {
30				#address-cells = <1>;
31				#size-cells = <0>;
32				reg = <0>;	/* OMI01 */
33			};
34
35			cfam0_i2c1: i2c-bus@1 {
36				#address-cells = <1>;
37				#size-cells = <0>;
38				reg = <1>;	/* OMI23 */
39			};
40
41			cfam0_i2c10: i2c-bus@a {
42				#address-cells = <1>;
43				#size-cells = <0>;
44				reg = <10>;	/* OP3A */
45			};
46
47			cfam0_i2c11: i2c-bus@b {
48				#address-cells = <1>;
49				#size-cells = <0>;
50				reg = <11>;	/* OP3B */
51			};
52
53			cfam0_i2c12: i2c-bus@c {
54				#address-cells = <1>;
55				#size-cells = <0>;
56				reg = <12>;	/* OP4A */
57			};
58
59			cfam0_i2c13: i2c-bus@d {
60				#address-cells = <1>;
61				#size-cells = <0>;
62				reg = <13>;	/* OP4B */
63			};
64
65			cfam0_i2c14: i2c-bus@e {
66				#address-cells = <1>;
67				#size-cells = <0>;
68				reg = <14>;	/* OP5A */
69			};
70
71			cfam0_i2c15: i2c-bus@f {
72				#address-cells = <1>;
73				#size-cells = <0>;
74				reg = <15>;	/* OP5B */
75			};
76		};
77
78		fsi2spi@1c00 {
79			compatible = "ibm,fsi2spi";
80			reg = <0x1c00 0x400>;
81			#address-cells = <1>;
82			#size-cells = <0>;
83
84			cfam0_spi0: spi@0 {
85				reg = <0x0>;
86				#address-cells = <1>;
87				#size-cells = <0>;
88
89				eeprom@0 {
90					at25,byte-len = <0x80000>;
91					at25,addr-mode = <4>;
92					at25,page-size = <256>;
93
94					compatible = "atmel,at25";
95					reg = <0>;
96					spi-max-frequency = <1000000>;
97				};
98			};
99
100			cfam0_spi1: spi@20 {
101				reg = <0x20>;
102				#address-cells = <1>;
103				#size-cells = <0>;
104
105				eeprom@0 {
106					at25,byte-len = <0x80000>;
107					at25,addr-mode = <4>;
108					at25,page-size = <256>;
109
110					compatible = "atmel,at25";
111					reg = <0>;
112					spi-max-frequency = <1000000>;
113				};
114			};
115
116			cfam0_spi2: spi@40 {
117				reg = <0x40>;
118				compatible =  "ibm,fsi2spi";
119				#address-cells = <1>;
120				#size-cells = <0>;
121
122				eeprom@0 {
123					at25,byte-len = <0x80000>;
124					at25,addr-mode = <4>;
125					at25,page-size = <256>;
126
127					compatible = "atmel,at25";
128					reg = <0>;
129					spi-max-frequency = <1000000>;
130				};
131			};
132
133			cfam0_spi3: spi@60 {
134				reg = <0x60>;
135				compatible =  "ibm,fsi2spi";
136				#address-cells = <1>;
137				#size-cells = <0>;
138
139				eeprom@0 {
140					at25,byte-len = <0x80000>;
141					at25,addr-mode = <4>;
142					at25,page-size = <256>;
143
144					compatible = "atmel,at25";
145					reg = <0>;
146					spi-max-frequency = <1000000>;
147				};
148			};
149		};
150
151		sbefifo@2400 {
152			compatible = "ibm,p9-sbefifo";
153			reg = <0x2400 0x400>;
154			#address-cells = <1>;
155			#size-cells = <0>;
156
157			fsi_occ0: occ {
158				compatible = "ibm,p10-occ";
159
160				occ-hwmon {
161					compatible = "ibm,p10-occ-hwmon";
162					ibm,no-poll-on-init;
163				};
164			};
165		};
166
167		fsi_hub0: hub@3400 {
168			compatible = "fsi-master-hub";
169			reg = <0x3400 0x400>;
170			#address-cells = <2>;
171			#size-cells = <0>;
172		};
173	};
174};
175
176&fsi_hub0 {
177	cfam@1,0 {
178		reg = <1 0>;
179		#address-cells = <1>;
180		#size-cells = <1>;
181		chip-id = <1>;
182
183		scom@1000 {
184			compatible = "ibm,fsi2pib";
185			reg = <0x1000 0x400>;
186		};
187
188		i2c@1800 {
189			compatible = "ibm,fsi-i2c-master";
190			reg = <0x1800 0x400>;
191			#address-cells = <1>;
192			#size-cells = <0>;
193
194			cfam1_i2c2: i2c-bus@2 {
195				#address-cells = <1>;
196				#size-cells = <0>;
197				reg = <2>;	/* OMI45 */
198			};
199
200			cfam1_i2c3: i2c-bus@3 {
201				#address-cells = <1>;
202				#size-cells = <0>;
203				reg = <3>;	/* OMI67 */
204			};
205
206			cfam1_i2c10: i2c-bus@a {
207				#address-cells = <1>;
208				#size-cells = <0>;
209				reg = <10>;	/* OP3A */
210			};
211
212			cfam1_i2c11: i2c-bus@b {
213				#address-cells = <1>;
214				#size-cells = <0>;
215				reg = <11>;	/* OP3B */
216			};
217
218			cfam1_i2c14: i2c-bus@e {
219				#address-cells = <1>;
220				#size-cells = <0>;
221				reg = <14>;	/* OP5A */
222			};
223
224			cfam1_i2c15: i2c-bus@f {
225				#address-cells = <1>;
226				#size-cells = <0>;
227				reg = <15>;	/* OP5B */
228			};
229
230			cfam1_i2c16: i2c-bus@10 {
231				#address-cells = <1>;
232				#size-cells = <0>;
233				reg = <16>;	/* OP6A */
234			};
235
236			cfam1_i2c17: i2c-bus@11 {
237				#address-cells = <1>;
238				#size-cells = <0>;
239				reg = <17>;	/* OP6B */
240			};
241		};
242
243		fsi2spi@1c00 {
244			compatible = "ibm,fsi2spi";
245			reg = <0x1c00 0x400>;
246			#address-cells = <1>;
247			#size-cells = <0>;
248
249			cfam1_spi0: spi@0 {
250				reg = <0x0>;
251				#address-cells = <1>;
252				#size-cells = <0>;
253
254				eeprom@0 {
255					at25,byte-len = <0x80000>;
256					at25,addr-mode = <4>;
257					at25,page-size = <256>;
258
259					compatible = "atmel,at25";
260					reg = <0>;
261					spi-max-frequency = <1000000>;
262				};
263			};
264
265			cfam1_spi1: spi@20 {
266				reg = <0x20>;
267				#address-cells = <1>;
268				#size-cells = <0>;
269
270				eeprom@0 {
271					at25,byte-len = <0x80000>;
272					at25,addr-mode = <4>;
273					at25,page-size = <256>;
274
275					compatible = "atmel,at25";
276					reg = <0>;
277					spi-max-frequency = <1000000>;
278				};
279			};
280
281			cfam1_spi2: spi@40 {
282				reg = <0x40>;
283				compatible =  "ibm,fsi2spi";
284				#address-cells = <1>;
285				#size-cells = <0>;
286
287				eeprom@0 {
288					at25,byte-len = <0x80000>;
289					at25,addr-mode = <4>;
290					at25,page-size = <256>;
291
292					compatible = "atmel,at25";
293					reg = <0>;
294					spi-max-frequency = <1000000>;
295				};
296			};
297
298			cfam1_spi3: spi@60 {
299				reg = <0x60>;
300				compatible =  "ibm,fsi2spi";
301				#address-cells = <1>;
302				#size-cells = <0>;
303
304				eeprom@0 {
305					at25,byte-len = <0x80000>;
306					at25,addr-mode = <4>;
307					at25,page-size = <256>;
308
309					compatible = "atmel,at25";
310					reg = <0>;
311					spi-max-frequency = <1000000>;
312				};
313			};
314		};
315
316		sbefifo@2400 {
317			compatible = "ibm,p9-sbefifo";
318			reg = <0x2400 0x400>;
319			#address-cells = <1>;
320			#size-cells = <0>;
321
322			fsi_occ1: occ {
323				compatible = "ibm,p10-occ";
324
325				occ-hwmon {
326					compatible = "ibm,p10-occ-hwmon";
327					ibm,no-poll-on-init;
328				};
329			};
330		};
331
332		fsi_hub1: hub@3400 {
333			compatible = "fsi-master-hub";
334			reg = <0x3400 0x400>;
335			#address-cells = <2>;
336			#size-cells = <0>;
337
338			no-scan-on-init;
339		};
340	};
341};
342
343/* Legacy OCC numbering (to get rid of when userspace is fixed) */
344&fsi_occ0 {
345	reg = <1>;
346};
347
348&fsi_occ1 {
349	reg = <2>;
350};
351
352/ {
353	aliases {
354		i2c100 = &cfam0_i2c0;
355		i2c101 = &cfam0_i2c1;
356		i2c110 = &cfam0_i2c10;
357		i2c111 = &cfam0_i2c11;
358		i2c112 = &cfam0_i2c12;
359		i2c113 = &cfam0_i2c13;
360		i2c114 = &cfam0_i2c14;
361		i2c115 = &cfam0_i2c15;
362		i2c202 = &cfam1_i2c2;
363		i2c203 = &cfam1_i2c3;
364		i2c210 = &cfam1_i2c10;
365		i2c211 = &cfam1_i2c11;
366		i2c214 = &cfam1_i2c14;
367		i2c215 = &cfam1_i2c15;
368		i2c216 = &cfam1_i2c16;
369		i2c217 = &cfam1_i2c17;
370
371		spi10 = &cfam0_spi0;
372		spi11 = &cfam0_spi1;
373		spi12 = &cfam0_spi2;
374		spi13 = &cfam0_spi3;
375		spi20 = &cfam1_spi0;
376		spi21 = &cfam1_spi1;
377		spi22 = &cfam1_spi2;
378		spi23 = &cfam1_spi3;
379	};
380};
381