Merge branch 'next-integrity' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorri...
[sfrench/cifs-2.6.git] / arch / arm / boot / dts / gemini-dlink-dir-685.dts
1 /*
2  * Device Tree file for D-Link DIR-685 Xtreme N Storage Router
3  */
4
5 /dts-v1/;
6
7 #include "gemini.dtsi"
8 #include <dt-bindings/input/input.h>
9
10 / {
11         model = "D-Link DIR-685 Xtreme N Storage Router";
12         compatible = "dlink,dir-685", "cortina,gemini";
13         #address-cells = <1>;
14         #size-cells = <1>;
15
16         memory@0 {
17                 /* 128 MB SDRAM in 2 x Hynix HY5DU121622DTP-D43 */
18                 device_type = "memory";
19                 reg = <0x00000000 0x8000000>;
20         };
21
22         chosen {
23                 bootargs = "console=ttyS0,19200n8 root=/dev/sda1 rw rootwait";
24                 stdout-path = "uart0:19200n8";
25         };
26
27         gpio_keys {
28                 compatible = "gpio-keys";
29
30                 button-esc {
31                         debounce-interval = <100>;
32                         wakeup-source;
33                         linux,code = <KEY_ESC>;
34                         label = "reset";
35                         /* Collides with LPC_LAD[0], UART DCD, SSP 97RST */
36                         gpios = <&gpio0 8 GPIO_ACTIVE_LOW>;
37                 };
38                 button-eject {
39                         debounce-interval = <100>;
40                         wakeup-source;
41                         linux,code = <KEY_EJECTCD>;
42                         label = "unmount";
43                         /* Collides with LPC LFRAME, UART RTS, SSP TXD */
44                         gpios = <&gpio0 13 GPIO_ACTIVE_LOW>;
45                 };
46         };
47
48         vdisp: regulator {
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>;
55                 enable-active-high;
56         };
57
58         spi {
59                 compatible = "spi-gpio";
60                 #address-cells = <1>;
61                 #size-cells = <0>;
62
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>;
69
70                 panel: display@0 {
71                         compatible = "dlink,dir-685-panel", "ilitek,ili9322";
72                         reg = <0>;
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>;
79
80                         port {
81                                 panel_in: endpoint {
82                                         remote-endpoint = <&display_out>;
83                                 };
84                         };
85                 };
86         };
87
88         leds {
89                 compatible = "gpio-leds";
90                 led-wps {
91                         label = "dir685:blue:WPS";
92                         /* Collides with ICE */
93                         gpios = <&gpio0 7 GPIO_ACTIVE_LOW>;
94                         default-state = "on";
95                         linux,default-trigger = "heartbeat";
96                 };
97                 /*
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".
104                  */
105                 led-blue-hd {
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";
111                 };
112                 led-orange-hd {
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";
118                 };
119         };
120
121         /*
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
127          * (celsius).
128          */
129         gpio-fan {
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>;
135         };
136
137         /*
138          * The touchpad input is connected to a GPIO bit-banged
139          * I2C bus.
140          */
141         gpio-i2c {
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>;
147                 #size-cells = <0>;
148
149                 touchkeys@26 {
150                         compatible = "dlink,dir685-touchkeys";
151                         reg = <0x26>;
152                         interrupt-parent = <&gpio0>;
153                         /* Collides with NAND flash */
154                         interrupts = <17 IRQ_TYPE_EDGE_FALLING>;
155                 };
156         };
157
158         /* This is a RealTek RTL8366RB switch and PHY using SMI over GPIO */
159         switch {
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;
166
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>;
174                 };
175
176                 ports {
177                         #address-cells = <1>;
178                         #size-cells = <0>;
179
180                         port@0 {
181                                 reg = <0>;
182                                 label = "lan0";
183                                 phy-handle = <&phy0>;
184                         };
185                         port@1 {
186                                 reg = <1>;
187                                 label = "lan1";
188                                 phy-handle = <&phy1>;
189                         };
190                         port@2 {
191                                 reg = <2>;
192                                 label = "lan2";
193                                 phy-handle = <&phy2>;
194                         };
195                         port@3 {
196                                 reg = <3>;
197                                 label = "lan3";
198                                 phy-handle = <&phy3>;
199                         };
200                         port@4 {
201                                 reg = <4>;
202                                 label = "wan";
203                                 phy-handle = <&phy4>;
204                         };
205                         rtl8366rb_cpu_port: port@5 {
206                                 reg = <5>;
207                                 label = "cpu";
208                                 ethernet = <&gmac0>;
209                                 phy-mode = "rgmii";
210                                 fixed-link {
211                                         speed = <1000>;
212                                         full-duplex;
213                                         pause;
214                                 };
215                         };
216
217                 };
218
219                 mdio {
220                         compatible = "realtek,smi-mdio";
221                         #address-cells = <1>;
222                         #size-cells = <0>;
223
224                         phy0: phy@0 {
225                                 reg = <0>;
226                                 interrupt-parent = <&switch_intc>;
227                                 interrupts = <0>;
228                         };
229                         phy1: phy@1 {
230                                 reg = <1>;
231                                 interrupt-parent = <&switch_intc>;
232                                 interrupts = <1>;
233                         };
234                         phy2: phy@2 {
235                                 reg = <2>;
236                                 interrupt-parent = <&switch_intc>;
237                                 interrupts = <2>;
238                         };
239                         phy3: phy@3 {
240                                 reg = <3>;
241                                 interrupt-parent = <&switch_intc>;
242                                 interrupts = <3>;
243                         };
244                         phy4: phy@4 {
245                                 reg = <4>;
246                                 interrupt-parent = <&switch_intc>;
247                                 interrupts = <12>;
248                         };
249                 };
250         };
251
252         soc {
253                 flash@30000000 {
254                         /*
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.
261                          */
262                         status = "okay";
263                         pinctrl-names = "enabled", "disabled";
264                         pinctrl-0 = <&pflash_default_pins>;
265                         pinctrl-1 = <&pflash_disabled_pins>;
266
267                         /* 32MB of flash */
268                         reg = <0x30000000 0x02000000>;
269
270                         /*
271                          * This "RedBoot" is the Storlink derivative.
272                          */
273                         partition@0 {
274                                 label = "RedBoot";
275                                 reg = <0x00000000 0x00040000>;
276                                 read-only;
277                         };
278                         /*
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.
282                          */
283                         partition@40000 {
284                                 label = "upgrade";
285                                 reg = <0x00040000 0x01f40000>;
286                                 read-only;
287                         };
288                         /* RGDB, Residental Gateway Database? */
289                         partition@1f80000 {
290                                 label = "rgdb";
291                                 reg = <0x01f80000 0x00040000>;
292                                 read-only;
293                         };
294                         /*
295                          * This partition contains MAC addresses for WAN,
296                          * WLAN and LAN, and the country code (for wireless
297                          * I guess).
298                          */
299                         partition@1fc0000 {
300                                 label = "nvram";
301                                 reg = <0x01fc0000 0x00020000>;
302                                 read-only;
303                         };
304                         partition@1fe0000 {
305                                 label = "LangPack";
306                                 reg = <0x01fe0000 0x00020000>;
307                                 read-only;
308                         };
309                 };
310
311                 syscon: syscon@40000000 {
312                         pinctrl {
313                                 /*
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
324                                  */
325                                 gpio0_default_pins: pinctrl-gpio0 {
326                                         mux {
327                                                 function = "gpio0";
328                                                 groups = "gpio0bgrp",
329                                                 "gpio0cgrp",
330                                                 "gpio0egrp",
331                                                 "gpio0fgrp",
332                                                 "gpio0hgrp";
333                                         };
334                                 };
335                                 /*
336                                  * gpio1bgrp cover line 5,8,7 used by panel SPI
337                                  * also line 6 used by the fan
338                                  *
339                                  */
340                                 gpio1_default_pins: pinctrl-gpio1 {
341                                         mux {
342                                                 function = "gpio1";
343                                                 groups = "gpio1bgrp";
344                                         };
345                                 };
346                                 /*
347                                  * These GPIO groups will be mapped in over some
348                                  * of the flash pins when the flash is not in
349                                  * active use.
350                                  */
351                                 pflash_disabled_pins: pinctrl-pflash-disabled {
352                                         mux {
353                                                 function = "gpio0";
354                                                 groups = "gpio0ggrp", "gpio0igrp", "gpio0jgrp",
355                                                          "gpio0kgrp";
356                                         };
357                                 };
358                                 pinctrl-gmii {
359                                         mux {
360                                                 function = "gmii";
361                                                 groups = "gmii_gmac0_grp";
362                                         };
363                                         conf0 {
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";
376                                                 skew-delay = <7>;
377                                         };
378                                         /* Set up drive strength on GMAC0 to 16 mA */
379                                         conf1 {
380                                                 groups = "gmii_gmac0_grp";
381                                                 drive-strength = <16>;
382                                         };
383                                 };
384                         };
385                 };
386
387                 sata: sata@46000000 {
388                         cortina,gemini-ata-muxmode = <0>;
389                         cortina,gemini-enable-sata-bridge;
390                         status = "okay";
391                 };
392
393                 gpio0: gpio@4d000000 {
394                         pinctrl-names = "default";
395                         pinctrl-0 = <&gpio0_default_pins>;
396                 };
397
398                 gpio1: gpio@4e000000 {
399                         pinctrl-names = "default";
400                         pinctrl-0 = <&gpio1_default_pins>;
401                 };
402
403                 pci@50000000 {
404                         status = "okay";
405                         interrupt-map-mask = <0xf800 0 0 7>;
406                         interrupt-map =
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>;
423                 };
424
425                 ethernet@60000000 {
426                         status = "okay";
427
428                         ethernet-port@0 {
429                                 phy-mode = "rgmii";
430                                 fixed-link {
431                                         speed = <1000>;
432                                         full-duplex;
433                                         pause;
434                                 };
435                         };
436                         ethernet-port@1 {
437                                 /* Not used in this platform */
438                         };
439                 };
440
441                 ata@63000000 {
442                         status = "okay";
443                 };
444
445                 display-controller@6a000000 {
446                         status = "disabled";
447
448                         port@0 {
449                                 reg = <0>;
450                                 display_out: endpoint {
451                                         remote-endpoint = <&panel_in>;
452                                 };
453                         };
454                 };
455
456                 usb@68000000 {
457                         status = "okay";
458                 };
459
460                 usb@69000000 {
461                         status = "okay";
462                 };
463         };
464 };