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 = <ð0port>; 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 = <ð0port>; 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ð0 { 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ð1 { 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