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						label = "cpu";
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 = "rgmii-txid";
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					};
215
216					port@1 {
217						reg = <1>;
218						label = "lan7";
219						phy-handle = <&switch2phy1>;
220					};
221
222					port@2 {
223						reg = <2>;
224						label = "lan8";
225						phy-handle = <&switch2phy2>;
226					};
227
228					port@3 {
229						reg = <3>;
230						label = "optical3";
231
232						fixed-link {
233							speed = <1000>;
234							full-duplex;
235							link-gpios = <&gpio6 2
236							      GPIO_ACTIVE_HIGH>;
237						};
238					};
239
240					port@4 {
241						reg = <4>;
242						label = "optical4";
243
244						fixed-link {
245							speed = <1000>;
246							full-duplex;
247							link-gpios = <&gpio6 3
248							      GPIO_ACTIVE_HIGH>;
249						};
250					};
251
252					switch2port9: port@9 {
253						reg = <9>;
254						label = "dsa";
255						phy-mode = "rgmii-txid";
256						link = <&switch1port5
257							&switch0port5>;
258
259						fixed-link {
260							speed = <1000>;
261							full-duplex;
262						};
263					};
264				};
265				mdio {
266					#address-cells = <1>;
267					#size-cells = <0>;
268
269					switch2phy0: phy@0 {
270						reg = <0>;
271					};
272					switch2phy1: phy@1 {
273						reg = <1>;
274					};
275					switch2phy2: phy@2 {
276						reg = <2>;
277					};
278				};
279			};
280		};
281
282		mdio_mux_8: mdio@8 {
283			reg = <8>;
284			#address-cells = <1>;
285			#size-cells = <0>;
286		};
287	};
288
289	spi0 {
290		compatible = "spi-gpio";
291		pinctrl-0 = <&pinctrl_gpio_spi0>;
292		pinctrl-names = "default";
293		#address-cells = <1>;
294		#size-cells = <0>;
295		gpio-sck  = <&gpio1 12 GPIO_ACTIVE_HIGH>;
296		gpio-mosi = <&gpio1 11 GPIO_ACTIVE_HIGH>;
297		gpio-miso = <&gpio1 10 GPIO_ACTIVE_HIGH>;
298		cs-gpios  = <&gpio1  9 GPIO_ACTIVE_LOW
299			     &gpio1  8 GPIO_ACTIVE_HIGH>;
300		num-chipselects = <2>;
301
302		flash@0 {
303			compatible = "m25p128", "jedec,spi-nor";
304			#address-cells = <1>;
305			#size-cells = <1>;
306			reg = <0>;
307			spi-max-frequency = <1000000>;
308		};
309
310		at93c46d@1 {
311			compatible = "atmel,at93c46d";
312			pinctrl-0 = <&pinctrl_gpio_e6185_eeprom_sel>;
313			pinctrl-names = "default";
314			reg = <1>;
315			spi-max-frequency = <500000>;
316			spi-cs-high;
317			data-size = <16>;
318			select-gpios = <&gpio4 4 GPIO_ACTIVE_HIGH>;
319		};
320	};
321};
322
323&i2c0 {
324	gpio5: io-expander@20 {
325		compatible = "nxp,pca9554";
326		reg = <0x20>;
327		gpio-controller;
328		#gpio-cells = <2>;
329
330	};
331
332	gpio6: io-expander@22 {
333		compatible = "nxp,pca9554";
334		pinctrl-names = "default";
335		pinctrl-0 = <&pinctrl_pca9554_22>;
336		reg = <0x22>;
337		gpio-controller;
338		#gpio-cells = <2>;
339		interrupt-controller;
340		interrupt-parent = <&gpio3>;
341		interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
342	};
343};
344
345&i2c2 {
346	tca9548@70 {
347		compatible = "nxp,pca9548";
348		pinctrl-0 = <&pinctrl_i2c_mux_reset>;
349		pinctrl-names = "default";
350		#address-cells = <1>;
351		#size-cells = <0>;
352		reg = <0x70>;
353		reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
354
355		i2c@0 {
356			#address-cells = <1>;
357			#size-cells = <0>;
358			reg = <0>;
359
360			sfp1: eeprom@50 {
361				compatible = "atmel,24c02";
362				reg = <0x50>;
363			};
364		};
365
366		i2c@1 {
367			#address-cells = <1>;
368			#size-cells = <0>;
369			reg = <1>;
370
371			sfp2: eeprom@50 {
372				compatible = "atmel,24c02";
373				reg = <0x50>;
374			};
375		};
376
377		i2c@2 {
378			#address-cells = <1>;
379			#size-cells = <0>;
380			reg = <2>;
381
382			sfp3: eeprom@50 {
383				compatible = "atmel,24c02";
384				reg = <0x50>;
385			};
386		};
387
388		i2c@3 {
389			#address-cells = <1>;
390			#size-cells = <0>;
391			reg = <3>;
392
393			sfp4: eeprom@50 {
394				compatible = "atmel,24c02";
395				reg = <0x50>;
396			};
397		};
398
399		i2c@4 {
400			#address-cells = <1>;
401			#size-cells = <0>;
402			reg = <4>;
403		};
404	};
405};
406
407&mdio1 {
408	clock-frequency = <5000000>;
409};
410
411&iomuxc {
412	pinctrl_gpio_e6185_eeprom_sel: pinctrl-gpio-e6185-eeprom-spi0 {
413		fsl,pins = <
414			VF610_PAD_PTE27__GPIO_132	0x33e2
415		>;
416	};
417
418	pinctrl_gpio_spi0: pinctrl-gpio-spi0 {
419		fsl,pins = <
420			VF610_PAD_PTB22__GPIO_44	0x33e2
421			VF610_PAD_PTB21__GPIO_43	0x33e2
422			VF610_PAD_PTB20__GPIO_42	0x33e1
423			VF610_PAD_PTB19__GPIO_41	0x33e2
424			VF610_PAD_PTB18__GPIO_40	0x33e2
425		>;
426	};
427
428	pinctrl_mdio_mux: pinctrl-mdio-mux {
429		fsl,pins = <
430			VF610_PAD_PTA18__GPIO_8		0x31c2
431			VF610_PAD_PTA19__GPIO_9		0x31c2
432			VF610_PAD_PTB2__GPIO_24		0x31c2
433			VF610_PAD_PTB3__GPIO_25		0x31c2
434		>;
435	};
436
437	pinctrl_pca9554_22: pinctrl-pca95540-22 {
438		fsl,pins = <
439			VF610_PAD_PTB28__GPIO_98	0x219d
440		>;
441	};
442};
443