2 * Device Tree file for D-Link DIR-685 Xtreme N Storage Router
8 #include <dt-bindings/input/input.h>
11 model = "D-Link DIR-685 Xtreme N Storage Router";
12 compatible = "dlink,dir-685", "cortina,gemini";
17 /* 128 MB SDRAM in 2 x Hynix HY5DU121622DTP-D43 */
18 device_type = "memory";
19 reg = <0x00000000 0x8000000>;
23 bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait";
24 stdout-path = "uart0:19200n8";
28 compatible = "gpio-keys";
31 debounce-interval = <100>;
33 linux,code = <KEY_ESC>;
35 /* Collides with LPC_LAD[0], UART DCD, SSP 97RST */
36 gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
39 debounce-interval = <100>;
41 linux,code = <KEY_EJECTCD>;
43 /* Collides with LPC LFRAME, UART RTS, SSP TXD */
44 gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
49 compatible = "regulator-fixed";
50 regulator-name = "display-power";
51 regulator-min-microvolt = <3600000>;
52 regulator-max-microvolt = <3600000>;
53 /* Collides with LCD E */
54 gpio = <&gpio0 16 GPIO_ACTIVE_HIGH>;
59 compatible = "spi-gpio";
63 /* Collides with IDE pins, that's cool (we do not use them) */
64 gpio-sck = <&gpio1 5 GPIO_ACTIVE_HIGH>;
65 gpio-miso = <&gpio1 8 GPIO_ACTIVE_HIGH>;
66 gpio-mosi = <&gpio1 7 GPIO_ACTIVE_HIGH>;
67 cs-gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;
68 num-chipselects = <1>;
71 compatible = "dlink,dir-685-panel", "ilitek,ili9322";
73 /* 50 ns min period = 20 MHz */
74 spi-max-frequency = <20000000>;
75 spi-cpol; /* Clock active low */
76 vcc-supply = <&vdisp>;
77 iovcc-supply = <&vdisp>;
78 vci-supply = <&vdisp>;
82 remote-endpoint = <&display_out>;
89 compatible = "gpio-leds";
91 label = "dir685:blue:WPS";
92 /* Collides with ICE */
93 gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
95 linux,default-trigger = "heartbeat";
98 * These two LEDs are on the side of the device.
99 * For electrical reasons, both LEDs cannot be active
100 * at the same time so only blue or orange can be on at
101 * one time. Enabling both makes the LED go dark.
102 * The LEDs both sit inside the unmount button and the
103 * label on the case says "unmount".
106 label = "dir685:blue:HD";
107 /* Collides with LPC_SERIRQ, UART DTR, SSP FSC pins */
108 gpios = <&gpio0 11 GPIO_ACTIVE_HIGH>;
109 default-state = "off";
110 linux,default-trigger = "disk-read";
113 label = "dir685:orange:HD";
114 /* Collides with LPC_LAD[2], UART DSR, SSP ECLK pins */
115 gpios = <&gpio0 12 GPIO_ACTIVE_HIGH>;
116 default-state = "off";
117 linux,default-trigger = "disk-write";
122 * This is a Sunon Maglev GM0502PFV2-8 cooling fan @10000 RPM.
123 * Since the platform has no temperature sensor, this is controlled
124 * from userspace by using the hard disks S.M.A.R.T. temperature
125 * sensor. It is turned on when the temperature exceeds 46 degrees
126 * and turned off when the temperatures goes below 41 degrees
130 compatible = "gpio-fan";
131 /* Collides with IDE */
132 gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>;
133 gpio-fan,speed-map = <0 0>, <10000 1>;
134 #cooling-cells = <2>;
138 * The touchpad input is connected to a GPIO bit-banged
142 compatible = "i2c-gpio";
143 /* Collides with ICE */
144 sda-gpios = <&gpio0 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
145 scl-gpios = <&gpio0 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
146 #address-cells = <1>;
150 compatible = "dlink,dir685-touchkeys";
152 interrupt-parent = <&gpio0>;
153 /* Collides with NAND flash */
154 interrupts = <17 IRQ_TYPE_EDGE_FALLING>;
158 /* This is a RealTek RTL8366RB switch and PHY using SMI over GPIO */
160 compatible = "realtek,rtl8366rb";
161 /* 22 = MDIO (has input reads), 21 = MDC (clock, output only) */
162 mdc-gpios = <&gpio0 21 GPIO_ACTIVE_HIGH>;
163 mdio-gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;
164 reset-gpios = <&gpio0 14 GPIO_ACTIVE_LOW>;
165 realtek,disable-leds;
167 switch_intc: interrupt-controller {
168 /* GPIO 15 provides the interrupt */
169 interrupt-parent = <&gpio0>;
170 interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
171 interrupt-controller;
172 #address-cells = <0>;
173 #interrupt-cells = <1>;
177 #address-cells = <1>;
183 phy-handle = <&phy0>;
188 phy-handle = <&phy1>;
193 phy-handle = <&phy2>;
198 phy-handle = <&phy3>;
203 phy-handle = <&phy4>;
205 rtl8366rb_cpu_port: port@5 {
220 compatible = "realtek,smi-mdio";
221 #address-cells = <1>;
226 interrupt-parent = <&switch_intc>;
231 interrupt-parent = <&switch_intc>;
236 interrupt-parent = <&switch_intc>;
241 interrupt-parent = <&switch_intc>;
246 interrupt-parent = <&switch_intc>;
255 * Flash access collides with the Chip Enable signal for
256 * the display panel, that reuse the parallel flash Chip
257 * Select 1 (CS1). We switch the pin control state so we
258 * enable these pins for flash access only when we need
259 * then, and when disabled they can be used for GPIO which
260 * is what the display panel needs.
263 pinctrl-names = "enabled", "disabled";
264 pinctrl-0 = <&pflash_default_pins>;
265 pinctrl-1 = <&pflash_disabled_pins>;
268 reg = <0x30000000 0x02000000>;
271 * This "RedBoot" is the Storlink derivative.
275 reg = <0x00000000 0x00040000>;
279 * This firmware image contains the kernel catenated
280 * with the squashfs root filesystem. For some reason
281 * this is called "upgrade" on the vendor system.
285 reg = <0x00040000 0x01f40000>;
288 /* RGDB, Residental Gateway Database? */
291 reg = <0x01f80000 0x00040000>;
295 * This partition contains MAC addresses for WAN,
296 * WLAN and LAN, and the country code (for wireless
301 reg = <0x01fc0000 0x00020000>;
306 reg = <0x01fe0000 0x00020000>;
311 syscon: syscon@40000000 {
314 * gpio0bgrp cover line 5, 6 used by TK I2C
315 * gpio0bgrp cover line 7 used by WPS LED
316 * gpio0cgrp cover line 8, 13 used by keys
317 * and 11, 12 used by the HD LEDs
318 * and line 14, 15 used by RTL8366
319 * RESET and phy ready
320 * gpio0egrp cover line 16 used by VDISP
321 * gpio0fgrp cover line 17 used by TK IRQ
322 * gpio0ggrp cover line 20 used by panel CS
323 * gpio0hgrp cover line 21,22 used by RTL8366RB MDIO
325 gpio0_default_pins: pinctrl-gpio0 {
328 groups = "gpio0bgrp",
336 * gpio1bgrp cover line 5,8,7 used by panel SPI
337 * also line 6 used by the fan
340 gpio1_default_pins: pinctrl-gpio1 {
343 groups = "gpio1bgrp";
347 * These GPIO groups will be mapped in over some
348 * of the flash pins when the flash is not in
351 pflash_disabled_pins: pinctrl-pflash-disabled {
354 groups = "gpio0ggrp", "gpio0igrp", "gpio0jgrp",
361 groups = "gmii_gmac0_grp";
364 pins = "V8 GMAC0 RXDV", "T10 GMAC1 RXDV",
365 "Y7 GMAC0 RXC", "Y11 GMAC1 RXC",
366 "T8 GMAC0 TXEN", "W11 GMAC1 TXEN",
367 "U8 GMAC0 TXC", "V11 GMAC1 TXC",
368 "W8 GMAC0 RXD0", "V9 GMAC0 RXD1",
369 "Y8 GMAC0 RXD2", "U9 GMAC0 RXD3",
370 "T7 GMAC0 TXD0", "U6 GMAC0 TXD1",
371 "V7 GMAC0 TXD2", "U7 GMAC0 TXD3",
372 "Y12 GMAC1 RXD0", "V12 GMAC1 RXD1",
373 "T11 GMAC1 RXD2", "W12 GMAC1 RXD3",
374 "U10 GMAC1 TXD0", "Y10 GMAC1 TXD1",
375 "W10 GMAC1 TXD2", "T9 GMAC1 TXD3";
378 /* Set up drive strength on GMAC0 to 16 mA */
380 groups = "gmii_gmac0_grp";
381 drive-strength = <16>;
387 sata: sata@46000000 {
388 cortina,gemini-ata-muxmode = <0>;
389 cortina,gemini-enable-sata-bridge;
393 gpio0: gpio@4d000000 {
394 pinctrl-names = "default";
395 pinctrl-0 = <&gpio0_default_pins>;
398 gpio1: gpio@4e000000 {
399 pinctrl-names = "default";
400 pinctrl-0 = <&gpio1_default_pins>;
405 interrupt-map-mask = <0xf800 0 0 7>;
407 <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
408 <0x4800 0 0 2 &pci_intc 1>,
409 <0x4800 0 0 3 &pci_intc 2>,
410 <0x4800 0 0 4 &pci_intc 3>,
411 <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
412 <0x5000 0 0 2 &pci_intc 2>,
413 <0x5000 0 0 3 &pci_intc 3>,
414 <0x5000 0 0 4 &pci_intc 0>,
415 <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
416 <0x5800 0 0 2 &pci_intc 3>,
417 <0x5800 0 0 3 &pci_intc 0>,
418 <0x5800 0 0 4 &pci_intc 1>,
419 <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
420 <0x6000 0 0 2 &pci_intc 0>,
421 <0x6000 0 0 3 &pci_intc 1>,
422 <0x6000 0 0 4 &pci_intc 2>;
437 /* Not used in this platform */
445 display-controller@6a000000 {
450 display_out: endpoint {
451 remote-endpoint = <&panel_in>;