• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2014 Claudio Leite <leitec@staticky.com>
3 *
4 * This file is licensed under the terms of the GNU General Public
5 * License version 2.  This program is licensed "as is" without any
6 * warranty of any kind, whether express or implied.
7 */
8
9/dts-v1/;
10
11#include "kirkwood.dtsi"
12#include "kirkwood-6281.dtsi"
13
14/ {
15	model = "D-Link DIR-665";
16	compatible = "dlink,dir-665", "marvell,kirkwood-88f6281", "marvell,kirkwood";
17
18	memory {
19		device_type = "memory";
20		reg = <0x00000000 0x8000000>; /* 128 MB */
21	};
22
23	chosen {
24		bootargs = "console=ttyS0,115200n8 earlyprintk";
25		stdout-path = &uart0;
26	};
27
28	ocp@f1000000 {
29		pinctrl: pin-controller@10000 {
30			pinctrl-0 =< &pmx_led_usb
31				     &pmx_led_internet_blue
32				     &pmx_led_internet_amber
33				     &pmx_led_5g &pmx_led_status_blue
34				     &pmx_led_wps &pmx_led_status_amber
35				     &pmx_led_24g
36				     &pmx_btn_restart &pmx_btn_wps>;
37			pinctrl-names = "default";
38
39			pmx_led_usb: pmx-led-usb {
40				marvell,pins = "mpp12";
41				marvell,function = "gpio";
42			};
43			pmx_led_internet_blue: pmx-led-internet-blue {
44				marvell,pins = "mpp42";
45				marvell,function = "gpio";
46			};
47			pmx_led_internet_amber: pmx-led-internet-amber {
48				marvell,pins = "mpp43";
49				marvell,function = "gpio";
50			};
51			pmx_led_5g: pmx-led-5g {
52				marvell,pins = "mpp44";
53				marvell,function = "gpio";
54			};
55			pmx_led_status_blue: pmx-led-status-blue {
56				marvell,pins = "mpp45";
57				marvell,function = "gpio";
58			};
59			pmx_led_wps: pmx-led-wps {
60				marvell,pins = "mpp47";
61				marvell,function = "gpio";
62			};
63			pmx_led_status_amber: pmx-led-status-amber {
64				marvell,pins = "mpp48";
65				marvell,function = "gpio";
66			};
67			pmx_led_24g: pmx-led-24g {
68				marvell,pins = "mpp49";
69				marvell,function = "gpio";
70			};
71			pmx_btn_restart: pmx-btn-restart {
72				marvell,pins = "mpp28";
73				marvell,function = "gpio";
74			};
75			pmx_btn_wps: pmx-btn-wps {
76				marvell,pins = "mpp46";
77				marvell,function = "gpio";
78			};
79		};
80
81		spi@10600 {
82			status = "okay";
83			m25p80@0 {
84				#address-cells = <1>;
85				#size-cells = <1>;
86				compatible = "mxicy,mx25l12805d", "jedec,spi-nor";
87				spi-max-frequency = <50000000>;
88				reg = <0>;
89
90				partition@0 {
91					label = "uboot";
92					reg = <0x0 0x30000>;
93					read-only;
94				};
95
96				partition@30000 {
97					label = "nvram";
98					reg = <0x30000 0x10000>;
99					read-only;
100				};
101
102				partition@40000 {
103					label = "kernel";
104					reg = <0x40000 0x180000>;
105				};
106
107				partition@1c0000 {
108					label = "rootfs";
109					reg = <0x1c0000 0xe00000>;
110				};
111
112				cal_data: partition@fc0000 {
113					label = "cal_data";
114					reg = <0xfc0000 0x10000>;
115					read-only;
116				};
117
118				partition@fd0000 {
119					label = "lang_pack";
120					reg = <0xfd0000 0x30000>;
121					read-only;
122				};
123			};
124		};
125
126		serial@12000 {
127			status = "okay";
128		};
129
130		i2c@11000 {
131			status = "okay";
132		};
133
134		ehci@50000 {
135			status = "okay";
136		};
137	};
138
139	gpio-leds {
140		compatible = "gpio-leds";
141
142		blue-usb {
143			label = "dir665:blue:usb";
144			gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
145		};
146		blue-internet {
147			/* Can only be turned on if the Internet
148			 * Ethernet port has Link
149			 */
150			label = "dir665:blue:internet";
151			gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
152		};
153		amber-internet {
154			label = "dir665:amber:internet";
155			gpios = <&gpio1 11 GPIO_ACTIVE_HIGH>;
156		};
157		blue-wifi5g {
158			label = "dir665:blue:5g";
159			gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
160		};
161		blue-status {
162			label = "dir665:blue:status";
163			gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>;
164		};
165		blue-wps {
166			label = "dir665:blue:wps";
167			gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;
168		};
169		amber-status {
170			label = "dir665:amber:status";
171			gpios = <&gpio1 16 GPIO_ACTIVE_HIGH>;
172		};
173		blue-24g {
174			label = "dir665:blue:24g";
175			gpios = <&gpio1 17 GPIO_ACTIVE_LOW>;
176		};
177	};
178
179	gpio-keys {
180		compatible = "gpio-keys";
181		#address-cells = <1>;
182		#size-cells = <0>;
183
184		reset {
185			label = "reset";
186			linux,code = <KEY_RESTART>;
187			gpios = <&gpio0 28 GPIO_ACTIVE_LOW>;
188		};
189		wps {
190			label = "wps";
191			linux,code = <KEY_WPS_BUTTON>;
192			gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
193		};
194	};
195
196	dsa {
197		status = "disabled";
198
199		compatible = "marvell,dsa";
200		#address-cells = <2>;
201		#size-cells = <0>;
202
203		dsa,ethernet = <&eth0port>;
204		dsa,mii-bus = <&mdio>;
205
206		switch@0 {
207			#address-cells = <1>;
208			#size-cells = <0>;
209			reg = <0 0>;	/* MDIO address 0, switch 0 in tree */
210
211			port@0 {
212				reg = <0>;
213				label = "lan4";
214			};
215
216			port@1 {
217			       reg = <1>;
218			       label = "lan3";
219			};
220
221			port@2 {
222			       reg = <2>;
223			       label = "lan2";
224			};
225
226			port@3 {
227			       reg = <3>;
228			       label = "lan1";
229			};
230
231			port@4 {
232				reg = <4>;
233				label = "wan";
234			};
235
236			port@6 {
237			       reg = <6>;
238			       label = "cpu";
239			};
240		};
241	};
242};
243
244&mdio {
245	status = "okay";
246
247	switch@0 {
248		compatible = "marvell,mv88e6085";
249		#address-cells = <1>;
250		#size-cells = <0>;
251		reg = <0>;
252
253		ports {
254			#address-cells = <1>;
255			#size-cells = <0>;
256
257			port@0 {
258				reg = <0>;
259				label = "lan4";
260			};
261
262			port@1 {
263			       reg = <1>;
264			       label = "lan3";
265			};
266
267			port@2 {
268			       reg = <2>;
269			       label = "lan2";
270			};
271
272			port@3 {
273			       reg = <3>;
274			       label = "lan1";
275			};
276
277			port@4 {
278				reg = <4>;
279				label = "wan";
280			};
281
282			port@6 {
283				reg = <6>;
284				label = "cpu";
285				ethernet = <&eth0port>;
286				fixed-link {
287					speed = <1000>;
288					full-duplex;
289				};
290			};
291		};
292	};
293};
294
295/* eth0 is connected to a Marvell 88E6171 switch, without a PHY. So set
296 * fixed speed and duplex. */
297&eth0 {
298	status = "okay";
299
300	ethernet0-port@0 {
301		speed = <1000>;
302		duplex = <1>;
303	};
304};
305
306/* eth1 is connected to the switch as well. However DSA only supports a
307 * single CPU port. So leave this port disabled to avoid confusion. */
308
309&eth1 {
310	status = "disabled";
311};
312
313/* There is no battery on the boards, so the RTC does not keep time
314 * when there is no power, making it useless. */
315&rtc {
316	status = "disabled";
317};
318
319&pciec {
320        status = "okay";
321};
322
323&pcie0 {
324	status = "okay";
325};
326