• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * kirkwood-viper.dts - Device Tree file for Linksys viper (E4200v2 / EA4500)
4 *
5 * (c) 2013 Jonas Gorski <jogo@openwrt.org>
6 * (c) 2013 Deutsche Telekom Innovation Laboratories
7 * (c) 2014 Luka Perkov <luka@openwrt.org>
8 * (c) 2014 Randy C. Will <randall.will@gmail.com>
9 *
10 */
11
12/dts-v1/;
13
14#include "kirkwood.dtsi"
15#include "kirkwood-6282.dtsi"
16
17/ {
18	model = "Linksys Viper (E4200v2 / EA4500)";
19	compatible = "linksys,viper", "marvell,kirkwood-88f6282", "marvell,kirkwood";
20
21	memory {
22		device_type = "memory";
23		reg = <0x00000000 0x8000000>;
24	};
25
26	aliases {
27		serial0 = &uart0;
28	};
29
30	chosen {
31		stdout-path = "serial0:115200n8";
32	};
33
34	gpio_keys {
35		compatible = "gpio-keys";
36		#address-cells = <1>;
37		#size-cells = <0>;
38		pinctrl-0 = < &pmx_btn_wps &pmx_btn_reset >;
39		pinctrl-names = "default";
40
41		wps {
42			label = "WPS Button";
43			linux,code = <KEY_WPS_BUTTON>;
44			gpios = <&gpio1 15 GPIO_ACTIVE_LOW>;
45		};
46
47		reset {
48			label = "Reset Button";
49			linux,code = <KEY_RESTART>;
50			gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
51		};
52	};
53
54	gpio-leds {
55		compatible = "gpio-leds";
56		pinctrl-0 = < &pmx_led_white_health &pmx_led_white_pulse >;
57		pinctrl-names = "default";
58
59		white-health {
60			label = "viper:white:health";
61			gpios = <&gpio0 7 GPIO_ACTIVE_HIGH>;
62		};
63
64		white-pulse {
65			label = "viper:white:pulse";
66			gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
67		};
68	};
69
70	dsa {
71		status = "disabled";
72
73		compatible = "marvell,dsa";
74		#address-cells = <2>;
75		#size-cells = <0>;
76
77		dsa,ethernet = <&eth0port>;
78		dsa,mii-bus = <&mdio>;
79
80		switch@16,0 {
81			#address-cells = <1>;
82			#size-cells = <0>;
83			reg = <16 0>;	/* MDIO address 16, switch 0 in tree */
84
85			port@0 {
86				reg = <0>;
87				label = "ethernet1";
88			};
89
90			port@1 {
91				reg = <1>;
92				label = "ethernet2";
93			};
94
95			port@2 {
96				reg = <2>;
97				label = "ethernet3";
98			};
99
100			port@3 {
101				reg = <3>;
102				label = "ethernet4";
103			};
104
105			port@4 {
106				reg = <4>;
107				label = "internet";
108			};
109
110			port@5 {
111				reg = <5>;
112				label = "cpu";
113			};
114		};
115	};
116};
117
118&pinctrl {
119	pmx_led_white_health: pmx-led-white-health {
120		marvell,pins = "mpp7";
121		marvell,function = "gpo";
122	};
123	pmx_led_white_pulse: pmx-led-white-pulse {
124		marvell,pins = "mpp14";
125		marvell,function = "gpio";
126	};
127	pmx_btn_wps: pmx-btn-wps {
128		marvell,pins = "mpp47";
129		marvell,function = "gpio";
130	};
131	pmx_btn_reset: pmx-btn-reset {
132		marvell,pins = "mpp48";
133		marvell,function = "gpio";
134	};
135};
136
137&nand {
138	status = "okay";
139	pinctrl-0 = <&pmx_nand>;
140	pinctrl-names = "default";
141
142	partitions {
143		compatible = "fixed-partitions";
144		#address-cells = <1>;
145		#size-cells = <1>;
146
147		partition@0 {
148			label = "u-boot";
149			reg = <0x0 0x80000>;
150			read-only;
151		};
152
153		partition@80000 {
154			label = "u_env";
155			reg = <0x80000 0x20000>;
156		};
157
158		partition@a0000 {
159			label = "s_env";
160			reg = <0xA0000 0x20000>;
161		};
162
163		partition@200000 {
164			label = "kernel";
165			reg = <0x200000 0x2A0000>;
166		};
167
168		partition@4a0000 {
169			label = "rootfs";
170			reg = <0x4A0000 0x1760000>;
171		};
172
173		partition@1c00000 {
174			label = "alt_kernel";
175			reg = <0x1C00000 0x2A0000>;
176		};
177
178		partition@1ea0000 {
179			label = "alt_rootfs";
180			reg = <0x1EA0000 0x1760000>;
181		};
182
183		partition@3600000 {
184			label = "syscfg";
185			reg = <0x3600000 0x4A00000>;
186		};
187
188		partition@c0000 {
189			label = "unused";
190			reg = <0xC0000 0x140000>;
191		};
192
193	};
194};
195
196&pciec {
197	status = "okay";
198};
199
200&pcie0 {
201	status = "okay";
202};
203
204&pcie1 {
205	status = "okay";
206};
207
208&mdio {
209	status = "okay";
210
211	switch@10 {
212		compatible = "marvell,mv88e6085";
213		#address-cells = <1>;
214		#size-cells = <0>;
215		reg = <16>;
216
217		ports {
218			#address-cells = <1>;
219			#size-cells = <0>;
220
221			port@0 {
222				reg = <0>;
223				label = "ethernet1";
224			};
225
226			port@1 {
227				reg = <1>;
228				label = "ethernet2";
229			};
230
231			port@2 {
232				reg = <2>;
233				label = "ethernet3";
234			};
235
236			port@3 {
237				reg = <3>;
238				label = "ethernet4";
239			};
240
241			port@4 {
242				reg = <4>;
243				label = "internet";
244			};
245
246			port@5 {
247				reg = <5>;
248				label = "cpu";
249				ethernet = <&eth0port>;
250				fixed-link {
251					speed = <1000>;
252					full-duplex;
253				};
254			};
255		};
256	};
257};
258
259&uart0 {
260	status = "okay";
261};
262
263/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set
264 * fixed speed and duplex.
265 */
266&eth0 {
267	status = "okay";
268	ethernet0-port@0 {
269		speed = <1000>;
270		duplex = <1>;
271	};
272};
273
274/* eth1 is connected to the switch at port 6. However DSA only supports a
275 * single CPU port. So leave this port disabled to avoid confusion.
276 */
277&eth1 {
278	status = "disabled";
279};
280
281/* There is no battery on the board, so the RTC does not keep
282 * time when there is no power, making it useless.
283 */
284&rtc {
285	status = "disabled";
286};
287
288