1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Common part of the device tree for the Kontron KSwitch D10 MMT
4 */
5
6/dts-v1/;
7#include "lan966x.dtsi"
8#include "dt-bindings/phy/phy-lan966x-serdes.h"
9
10/ {
11	aliases {
12		serial0 = &usart0;
13	};
14
15	chosen {
16		stdout-path = "serial0:115200n8";
17	};
18
19	gpio-restart {
20		compatible = "gpio-restart";
21		pinctrl-0 = <&reset_pins>;
22		pinctrl-names = "default";
23		gpios = <&gpio 56 GPIO_ACTIVE_LOW>;
24		priority = <200>;
25	};
26};
27
28&flx0 {
29	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>;
30	status = "okay";
31
32	usart0: serial@200 {
33		pinctrl-0 = <&usart0_pins>;
34		pinctrl-names = "default";
35		status = "okay";
36	};
37};
38
39&flx3 {
40	atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_SPI>;
41	status = "okay";
42
43	spi3: spi@400 {
44		pinctrl-0 = <&fc3_b_pins>, <&spi3_cs_pins>;
45		pinctrl-names = "default";
46		status = "okay";
47		cs-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
48	};
49};
50
51&gpio {
52	pinctrl-0 = <&phy_int_pins>;
53	pinctrl-names = "default";
54
55	fc3_b_pins: fc3-b-pins {
56		/* SCK, MISO, MOSI */
57		pins = "GPIO_51", "GPIO_52", "GPIO_53";
58		function = "fc3_b";
59	};
60
61	miim_c_pins: miim-c-pins {
62		/* MDC, MDIO */
63		pins = "GPIO_59", "GPIO_60";
64		function = "miim_c";
65	};
66
67	phy_int_pins: phy-int-pins {
68		/* PHY_INT# */
69		pins = "GPIO_24";
70		function = "gpio";
71	};
72
73	reset_pins: reset-pins {
74		/* SYS_RST# */
75		pins = "GPIO_56";
76		function = "gpio";
77	};
78
79	sgpio_a_pins: sgpio-a-pins {
80		/* SCK, D0, D1 */
81		pins = "GPIO_32", "GPIO_33", "GPIO_34";
82		function = "sgpio_a";
83	};
84
85	sgpio_b_pins: sgpio-b-pins {
86		/* LD */
87		pins = "GPIO_64";
88		function = "sgpio_b";
89	};
90
91	spi3_cs_pins: spi3-cs-pins {
92		/* CS# */
93		pins = "GPIO_46";
94		function = "gpio";
95	};
96
97	usart0_pins: usart0-pins {
98		/* RXD, TXD */
99		pins = "GPIO_25", "GPIO_26";
100		function = "fc0_b";
101	};
102
103	usbs_a_pins: usbs-a-pins {
104		/* VBUS_DET */
105		pins = "GPIO_66";
106		function = "gpio";
107	};
108};
109
110&mdio0 {
111	pinctrl-0 = <&miim_c_pins>;
112	pinctrl-names = "default";
113	reset-gpios = <&gpio 29 GPIO_ACTIVE_LOW>;
114	clock-frequency = <2500000>;
115	status = "okay";
116
117	phy4: ethernet-phy@5 {
118		reg = <5>;
119		interrupts-extended = <&gpio 24 IRQ_TYPE_LEVEL_LOW>;
120		coma-mode-gpios = <&gpio 37 GPIO_OPEN_DRAIN>;
121	};
122
123	phy5: ethernet-phy@6 {
124		reg = <6>;
125		interrupts-extended = <&gpio 24 IRQ_TYPE_LEVEL_LOW>;
126		coma-mode-gpios = <&gpio 37 GPIO_OPEN_DRAIN>;
127	};
128
129	phy6: ethernet-phy@7 {
130		reg = <7>;
131		interrupts-extended = <&gpio 24 IRQ_TYPE_LEVEL_LOW>;
132		coma-mode-gpios = <&gpio 37 GPIO_OPEN_DRAIN>;
133	};
134
135	phy7: ethernet-phy@8 {
136		reg = <8>;
137		interrupts-extended = <&gpio 24 IRQ_TYPE_LEVEL_LOW>;
138		coma-mode-gpios = <&gpio 37 GPIO_OPEN_DRAIN>;
139	};
140};
141
142&mdio1 {
143	status = "okay";
144};
145
146&phy0 {
147	status = "okay";
148};
149
150&phy1 {
151	status = "okay";
152};
153
154&port0 {
155	phys = <&serdes 0 CU(0)>;
156	phy-handle = <&phy0>;
157	phy-mode = "gmii";
158	status = "okay";
159};
160
161&port1 {
162	phys = <&serdes 1 CU(1)>;
163	phy-handle = <&phy1>;
164	phy-mode = "gmii";
165	status = "okay";
166};
167
168&port4 {
169	phys = <&serdes 4 SERDES6G(2)>;
170	phy-handle = <&phy4>;
171	phy-mode = "qsgmii";
172	status = "okay";
173};
174
175&port5 {
176	phys = <&serdes 5 SERDES6G(2)>;
177	phy-handle = <&phy5>;
178	phy-mode = "qsgmii";
179	status = "okay";
180};
181
182&port6 {
183	phys = <&serdes 6 SERDES6G(2)>;
184	phy-handle = <&phy6>;
185	phy-mode = "qsgmii";
186	status = "okay";
187};
188
189&port7 {
190	phys = <&serdes 7 SERDES6G(2)>;
191	phy-handle = <&phy7>;
192	phy-mode = "qsgmii";
193	status = "okay";
194};
195
196&serdes {
197	status = "okay";
198};
199
200&sgpio {
201	pinctrl-0 = <&sgpio_a_pins>, <&sgpio_b_pins>;
202	pinctrl-names = "default";
203	bus-frequency = <8000000>;
204	/* arbitrary range because all GPIOs are in software mode */
205	microchip,sgpio-port-ranges = <0 11>;
206	status = "okay";
207
208	sgpio_in: gpio@0 {
209		ngpios = <128>;
210	};
211
212	sgpio_out: gpio@1 {
213		ngpios = <128>;
214	};
215};
216
217&switch {
218	status = "okay";
219};
220
221&udc {
222	pinctrl-0 = <&usbs_a_pins>;
223	pinctrl-names = "default";
224	atmel,vbus-gpio = <&gpio 66 GPIO_ACTIVE_HIGH>;
225	status = "okay";
226};
227
228&watchdog {
229	status = "okay";
230};
231