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
71&pinctrl {
72	pmx_led_white_health: pmx-led-white-health {
73		marvell,pins = "mpp7";
74		marvell,function = "gpo";
75	};
76	pmx_led_white_pulse: pmx-led-white-pulse {
77		marvell,pins = "mpp14";
78		marvell,function = "gpio";
79	};
80	pmx_btn_wps: pmx-btn-wps {
81		marvell,pins = "mpp47";
82		marvell,function = "gpio";
83	};
84	pmx_btn_reset: pmx-btn-reset {
85		marvell,pins = "mpp48";
86		marvell,function = "gpio";
87	};
88};
89
90&nand {
91	status = "okay";
92	pinctrl-0 = <&pmx_nand>;
93	pinctrl-names = "default";
94
95	partitions {
96		compatible = "fixed-partitions";
97		#address-cells = <1>;
98		#size-cells = <1>;
99
100		partition@0 {
101			label = "u-boot";
102			reg = <0x0 0x80000>;
103			read-only;
104		};
105
106		partition@80000 {
107			label = "u_env";
108			reg = <0x80000 0x20000>;
109		};
110
111		partition@a0000 {
112			label = "s_env";
113			reg = <0xA0000 0x20000>;
114		};
115
116		partition@200000 {
117			label = "kernel";
118			reg = <0x200000 0x2A0000>;
119		};
120
121		partition@4a0000 {
122			label = "rootfs";
123			reg = <0x4A0000 0x1760000>;
124		};
125
126		partition@1c00000 {
127			label = "alt_kernel";
128			reg = <0x1C00000 0x2A0000>;
129		};
130
131		partition@1ea0000 {
132			label = "alt_rootfs";
133			reg = <0x1EA0000 0x1760000>;
134		};
135
136		partition@3600000 {
137			label = "syscfg";
138			reg = <0x3600000 0x4A00000>;
139		};
140
141		partition@c0000 {
142			label = "unused";
143			reg = <0xC0000 0x140000>;
144		};
145
146	};
147};
148
149&pciec {
150	status = "okay";
151};
152
153&pcie0 {
154	status = "okay";
155};
156
157&pcie1 {
158	status = "okay";
159};
160
161&mdio {
162	status = "okay";
163
164	switch@10 {
165		compatible = "marvell,mv88e6085";
166		#address-cells = <1>;
167		#size-cells = <0>;
168		reg = <16>;
169
170		ports {
171			#address-cells = <1>;
172			#size-cells = <0>;
173
174			port@0 {
175				reg = <0>;
176				label = "ethernet1";
177			};
178
179			port@1 {
180				reg = <1>;
181				label = "ethernet2";
182			};
183
184			port@2 {
185				reg = <2>;
186				label = "ethernet3";
187			};
188
189			port@3 {
190				reg = <3>;
191				label = "ethernet4";
192			};
193
194			port@4 {
195				reg = <4>;
196				label = "internet";
197			};
198
199			port@5 {
200				reg = <5>;
201				label = "cpu";
202				ethernet = <&eth0port>;
203				fixed-link {
204					speed = <1000>;
205					full-duplex;
206				};
207			};
208		};
209	};
210};
211
212&uart0 {
213	status = "okay";
214};
215
216/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set
217 * fixed speed and duplex.
218 */
219&eth0 {
220	status = "okay";
221	ethernet0-port@0 {
222		speed = <1000>;
223		duplex = <1>;
224	};
225};
226
227/* eth1 is connected to the switch at port 6. However DSA only supports a
228 * single CPU port. So leave this port disabled to avoid confusion.
229 */
230&eth1 {
231	status = "disabled";
232};
233
234/* There is no battery on the board, so the RTC does not keep
235 * time when there is no power, making it useless.
236 */
237&rtc {
238	status = "disabled";
239};
240
241