1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Copyright (C) 2015, 2016 Zodiac Inflight Innovations
4 */
5
6/dts-v1/;
7#include "vf610-zii-dev.dtsi"
8
9/ {
10	model = "ZII VF610 Development Board, Rev B";
11	compatible = "zii,vf610dev-b", "zii,vf610dev", "fsl,vf610";
12
13	mdio-mux {
14		compatible = "mdio-mux-gpio";
15		pinctrl-0 = <&pinctrl_mdio_mux>;
16		pinctrl-names = "default";
17		gpios = <&gpio0 8  GPIO_ACTIVE_HIGH
18			 &gpio0 9  GPIO_ACTIVE_HIGH
19			 &gpio0 24 GPIO_ACTIVE_HIGH
20			 &gpio0 25 GPIO_ACTIVE_HIGH>;
21		mdio-parent-bus = <&mdio1>;
22		#address-cells = <1>;
23		#size-cells = <0>;
24
25		mdio_mux_1: mdio@1 {
26			reg = <1>;
27			#address-cells = <1>;
28			#size-cells = <0>;
29
30			switch0: switch@0 {
31				compatible = "marvell,mv88e6085";
32				pinctrl-0 = <&pinctrl_gpio_switch0>;
33				pinctrl-names = "default";
34				reg = <0>;
35				dsa,member = <0 0>;
36				interrupt-parent = <&gpio0>;
37				interrupts = <27 IRQ_TYPE_LEVEL_LOW>;
38				interrupt-controller;
39				#interrupt-cells = <2>;
40				eeprom-length = <512>;
41
42				ports {
43					#address-cells = <1>;
44					#size-cells = <0>;
45
46					port@0 {
47						reg = <0>;
48						label = "lan0";
49						phy-handle = <&switch0phy0>;
50					};
51
52					port@1 {
53						reg = <1>;
54						label = "lan1";
55						phy-handle = <&switch0phy1>;
56					};
57
58					port@2 {
59						reg = <2>;
60						label = "lan2";
61						phy-handle = <&switch0phy2>;
62					};
63
64					switch0port5: port@5 {
65						reg = <5>;
66						label = "dsa";
67						phy-mode = "rgmii-txid";
68						link = <&switch1port6
69							&switch2port9>;
70						fixed-link {
71							speed = <1000>;
72							full-duplex;
73						};
74					};
75
76					port@6 {
77						reg = <6>;
78						phy-mode = "rmii";
79						ethernet = <&fec1>;
80
81						fixed-link {
82							speed = <100>;
83							full-duplex;
84						};
85					};
86				};
87				mdio {
88					#address-cells = <1>;
89					#size-cells = <0>;
90					switch0phy0: switch0phy0@0 {
91						reg = <0>;
92						interrupt-parent = <&switch0>;
93						interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
94					};
95					switch0phy1: switch1phy0@1 {
96						reg = <1>;
97						interrupt-parent = <&switch0>;
98						interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
99					};
100					switch0phy2: switch1phy0@2 {
101						reg = <2>;
102						interrupt-parent = <&switch0>;
103						interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
104					};
105				};
106			};
107		};
108
109		mdio_mux_2: mdio@2 {
110			reg = <2>;
111			#address-cells = <1>;
112			#size-cells = <0>;
113
114			switch1: switch@0 {
115				compatible = "marvell,mv88e6085";
116				pinctrl-0 = <&pinctrl_gpio_switch1>;
117				pinctrl-names = "default";
118				reg = <0>;
119				dsa,member = <0 1>;
120				interrupt-parent = <&gpio0>;
121				interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
122				interrupt-controller;
123				#interrupt-cells = <2>;
124				eeprom-length = <512>;
125
126				ports {
127					#address-cells = <1>;
128					#size-cells = <0>;
129
130					port@0 {
131						reg = <0>;
132						label = "lan3";
133						phy-handle = <&switch1phy0>;
134					};
135
136					port@1 {
137						reg = <1>;
138						label = "lan4";
139						phy-handle = <&switch1phy1>;
140					};
141
142					port@2 {
143						reg = <2>;
144						label = "lan5";
145						phy-handle = <&switch1phy2>;
146					};
147
148					switch1port5: port@5 {
149						reg = <5>;
150						label = "dsa";
151						link = <&switch2port9>;
152						phy-mode = "1000base-x";
153
154						fixed-link {
155							speed = <1000>;
156							full-duplex;
157						};
158					};
159
160					switch1port6: port@6 {
161						reg = <6>;
162						label = "dsa";
163						phy-mode = "rgmii-txid";
164						link = <&switch0port5>;
165						fixed-link {
166							speed = <1000>;
167							full-duplex;
168						};
169					};
170				};
171				mdio {
172					#address-cells = <1>;
173					#size-cells = <0>;
174
175					switch1phy0: switch1phy0@0 {
176						reg = <0>;
177						interrupt-parent = <&switch1>;
178						interrupts = <0 IRQ_TYPE_LEVEL_HIGH>;
179					};
180
181					switch1phy1: switch1phy0@1 {
182						reg = <1>;
183						interrupt-parent = <&switch1>;
184						interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
185					};
186
187					switch1phy2: switch1phy0@2 {
188						reg = <2>;
189						interrupt-parent = <&switch1>;
190						interrupts = <2 IRQ_TYPE_LEVEL_HIGH>;
191					};
192				};
193			};
194		};
195
196		mdio_mux_4: mdio@4 {
197			#address-cells = <1>;
198			#size-cells = <0>;
199			reg = <4>;
200
201			switch2: switch@0 {
202				compatible = "marvell,mv88e6085";
203				reg = <0>;
204				dsa,member = <0 2>;
205
206				ports {
207					#address-cells = <1>;
208					#size-cells = <0>;
209
210					port@0 {
211						reg = <0>;
212						label = "lan6";
213						phy-handle = <&switch2phy0>;
214						phy-mode = "sgmii";
215					};
216
217					port@1 {
218						reg = <1>;
219						label = "lan7";
220						phy-handle = <&switch2phy1>;
221						phy-mode = "sgmii";
222					};
223
224					port@2 {
225						reg = <2>;
226						label = "lan8";
227						phy-handle = <&switch2phy2>;
228					};
229
230					port@3 {
231						reg = <3>;
232						label = "optical3";
233
234						fixed-link {
235							speed = <1000>;
236							full-duplex;
237							link-gpios = <&gpio6 2
238							      GPIO_ACTIVE_HIGH>;
239						};
240					};
241
242					port@4 {
243						reg = <4>;
244						label = "optical4";
245
246						fixed-link {
247							speed = <1000>;
248							full-duplex;
249							link-gpios = <&gpio6 3
250							      GPIO_ACTIVE_HIGH>;
251						};
252					};
253
254					switch2port9: port@9 {
255						reg = <9>;
256						label = "dsa";
257						phy-mode = "1000base-x";
258						link = <&switch1port5
259							&switch0port5>;
260
261						fixed-link {
262							speed = <1000>;
263							full-duplex;
264						};
265					};
266				};
267				mdio {
268					#address-cells = <1>;
269					#size-cells = <0>;
270
271					switch2phy0: phy@0 {
272						reg = <0>;
273					};
274					switch2phy1: phy@1 {
275						reg = <1>;
276					};
277					switch2phy2: phy@2 {
278						reg = <2>;
279					};
280				};
281			};
282		};
283
284		mdio_mux_8: mdio@8 {
285			reg = <8>;
286			#address-cells = <1>;
287			#size-cells = <0>;
288		};
289	};
290
291	spi-0 {
292		compatible = "spi-gpio";
293		pinctrl-0 = <&pinctrl_gpio_spi0>;
294		pinctrl-names = "default";
295		#address-cells = <1>;
296		#size-cells = <0>;
297		sck-gpios = <&gpio1 12 GPIO_ACTIVE_HIGH>;
298		mosi-gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
299		miso-gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
300		cs-gpios = <&gpio1 9 GPIO_ACTIVE_LOW
301			    &gpio1 8 GPIO_ACTIVE_HIGH>;
302		num-chipselects = <2>;
303
304		flash@0 {
305			compatible = "m25p128", "jedec,spi-nor";
306			#address-cells = <1>;
307			#size-cells = <1>;
308			reg = <0>;
309			spi-max-frequency = <1000000>;
310		};
311
312		at93c46d@1 {
313			compatible = "atmel,at93c46d";
314			pinctrl-0 = <&pinctrl_gpio_e6185_eeprom_sel>;
315			pinctrl-names = "default";
316			reg = <1>;
317			spi-max-frequency = <500000>;
318			spi-cs-high;
319			data-size = <16>;
320			select-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>;
321		};
322	};
323};
324
325&i2c0 {
326	gpio5: io-expander@20 {
327		compatible = "nxp,pca9554";
328		reg = <0x20>;
329		gpio-controller;
330		#gpio-cells = <2>;
331
332	};
333
334	gpio6: io-expander@22 {
335		compatible = "nxp,pca9554";
336		pinctrl-names = "default";
337		pinctrl-0 = <&pinctrl_pca9554_22>;
338		reg = <0x22>;
339		gpio-controller;
340		#gpio-cells = <2>;
341		#interrupt-cells = <2>;
342		interrupt-controller;
343		interrupt-parent = <&gpio3>;
344		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
345	};
346};
347
348&i2c2 {
349	i2c-mux@70 {
350		compatible = "nxp,pca9548";
351		pinctrl-0 = <&pinctrl_i2c_mux_reset>;
352		pinctrl-names = "default";
353		#address-cells = <1>;
354		#size-cells = <0>;
355		reg = <0x70>;
356		reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
357
358		i2c@0 {
359			#address-cells = <1>;
360			#size-cells = <0>;
361			reg = <0>;
362
363			sfp1: eeprom@50 {
364				compatible = "atmel,24c02";
365				reg = <0x50>;
366			};
367		};
368
369		i2c@1 {
370			#address-cells = <1>;
371			#size-cells = <0>;
372			reg = <1>;
373
374			sfp2: eeprom@50 {
375				compatible = "atmel,24c02";
376				reg = <0x50>;
377			};
378		};
379
380		i2c@2 {
381			#address-cells = <1>;
382			#size-cells = <0>;
383			reg = <2>;
384
385			sfp3: eeprom@50 {
386				compatible = "atmel,24c02";
387				reg = <0x50>;
388			};
389		};
390
391		i2c@3 {
392			#address-cells = <1>;
393			#size-cells = <0>;
394			reg = <3>;
395
396			sfp4: eeprom@50 {
397				compatible = "atmel,24c02";
398				reg = <0x50>;
399			};
400		};
401
402		i2c@4 {
403			#address-cells = <1>;
404			#size-cells = <0>;
405			reg = <4>;
406		};
407	};
408};
409
410&mdio1 {
411	clock-frequency = <5000000>;
412};
413
414&iomuxc {
415	pinctrl_gpio_e6185_eeprom_sel: pinctrl-gpio-e6185-eeprom-spi0 {
416		fsl,pins = <
417			VF610_PAD_PTE27__GPIO_132	0x33e2
418		>;
419	};
420
421	pinctrl_gpio_spi0: pinctrl-gpio-spi0 {
422		fsl,pins = <
423			VF610_PAD_PTB22__GPIO_44	0x33e2
424			VF610_PAD_PTB21__GPIO_43	0x33e2
425			VF610_PAD_PTB20__GPIO_42	0x33e1
426			VF610_PAD_PTB19__GPIO_41	0x33e2
427			VF610_PAD_PTB18__GPIO_40	0x33e2
428		>;
429	};
430
431	pinctrl_mdio_mux: pinctrl-mdio-mux {
432		fsl,pins = <
433			VF610_PAD_PTA18__GPIO_8		0x31c2
434			VF610_PAD_PTA19__GPIO_9		0x31c2
435			VF610_PAD_PTB2__GPIO_24		0x31c2
436			VF610_PAD_PTB3__GPIO_25		0x31c2
437		>;
438	};
439
440	pinctrl_pca9554_22: pinctrl-pca95540-22 {
441		fsl,pins = <
442			VF610_PAD_PTB28__GPIO_98	0x219d
443		>;
444	};
445};
446