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