1/* 2 * Copyright (c) 2014, 2015 Andy Yan <andy.yan@rock-chips.com> 3 * 4 * This file is dual-licensed: you can use it either under the terms 5 * of the GPL or the X11 license, at your option. Note that this dual 6 * licensing only applies to this file, and not this project as a 7 * whole. 8 * 9 * a) This file is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License as 11 * published by the Free Software Foundation; either version 2 of the 12 * License, or (at your option) any later version. 13 * 14 * This file is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * Or, alternatively, 20 * 21 * b) Permission is hereby granted, free of charge, to any person 22 * obtaining a copy of this software and associated documentation 23 * files (the "Software"), to deal in the Software without 24 * restriction, including without limitation the rights to use, 25 * copy, modify, merge, publish, distribute, sublicense, and/or 26 * sell copies of the Software, and to permit persons to whom the 27 * Software is furnished to do so, subject to the following 28 * conditions: 29 * 30 * The above copyright notice and this permission notice shall be 31 * included in all copies or substantial portions of the Software. 32 * 33 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 34 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 35 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 36 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 37 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 38 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 39 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 40 * OTHER DEALINGS IN THE SOFTWARE. 41 */ 42 43/dts-v1/; 44 45#include "rk3288.dtsi" 46 47/ { 48 model = "PopMetal-RK3288"; 49 compatible = "chipspark,popmetal-rk3288", "rockchip,rk3288"; 50 51 memory{ 52 reg = <0 0x80000000>; 53 }; 54 55 ext_gmac: external-gmac-clock { 56 compatible = "fixed-clock"; 57 clock-frequency = <125000000>; 58 clock-output-names = "ext_gmac"; 59 #clock-cells = <0>; 60 }; 61 62 gpio-keys { 63 compatible = "gpio-keys"; 64 #address-cells = <1>; 65 #size-cells = <0>; 66 autorepeat; 67 68 pinctrl-names = "default"; 69 pinctrl-0 = <&pwrbtn>; 70 71 button@0 { 72 gpios = <&gpio0 5 GPIO_ACTIVE_LOW>; 73 linux,code = <116>; 74 label = "GPIO Key Power"; 75 linux,input-type = <1>; 76 gpio-key,wakeup = <1>; 77 debounce-interval = <100>; 78 }; 79 }; 80 81 ir: ir-receiver { 82 compatible = "gpio-ir-receiver"; 83 gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; 84 pinctrl-names = "default"; 85 pinctrl-0 = <&ir_int>; 86 }; 87 88 vcc_sys: vsys-regulator { 89 compatible = "regulator-fixed"; 90 regulator-name = "vcc_sys"; 91 regulator-min-microvolt = <5000000>; 92 regulator-max-microvolt = <5000000>; 93 regulator-always-on; 94 regulator-boot-on; 95 }; 96}; 97 98&cpu0 { 99 cpu0-supply = <&vdd_cpu>; 100}; 101 102&emmc { 103 broken-cd; 104 bus-width = <8>; 105 cap-mmc-highspeed; 106 disable-wp; 107 non-removable; 108 num-slots = <1>; 109 pinctrl-names = "default"; 110 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>; 111 status = "okay"; 112}; 113 114&sdmmc { 115 bus-width = <4>; 116 cap-mmc-highspeed; 117 cap-sd-highspeed; 118 card-detect-delay = <200>; 119 disable-wp; /* wp not hooked up */ 120 num-slots = <1>; 121 pinctrl-names = "default"; 122 pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; 123 status = "okay"; 124}; 125 126&gmac { 127 phy-supply = <&vcc_lan>; 128 phy-mode = "rgmii"; 129 clock_in_out = "input"; 130 snps,reset-gpio = <&gpio4 7 0>; 131 snps,reset-active-low; 132 snps,reset-delays-us = <0 10000 1000000>; 133 assigned-clocks = <&cru SCLK_MAC>; 134 assigned-clock-parents = <&ext_gmac>; 135 pinctrl-names = "default"; 136 pinctrl-0 = <&rgmii_pins>; 137 tx_delay = <0x30>; 138 rx_delay = <0x10>; 139 status = "ok"; 140}; 141 142&hdmi { 143 ddc-i2c-bus = <&i2c5>; 144 status = "okay"; 145}; 146 147&i2c0 { 148 status = "okay"; 149 clock-frequency = <400000>; 150 151 rk808: pmic@1b { 152 compatible = "rockchip,rk808"; 153 reg = <0x1b>; 154 interrupt-parent = <&gpio0>; 155 interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 156 pinctrl-names = "default"; 157 pinctrl-0 = <&pmic_int &global_pwroff>; 158 rockchip,system-power-controller; 159 wakeup-source; 160 #clock-cells = <1>; 161 clock-output-names = "xin32k", "rk808-clkout2"; 162 163 vcc1-supply = <&vcc_sys>; 164 vcc2-supply = <&vcc_sys>; 165 vcc3-supply = <&vcc_sys>; 166 vcc4-supply = <&vcc_sys>; 167 vcc6-supply = <&vcc_sys>; 168 vcc7-supply = <&vcc_sys>; 169 vcc8-supply = <&vcc_18>; 170 vcc9-supply = <&vcc_io>; 171 vcc10-supply = <&vcc_io>; 172 vcc11-supply = <&vcc_sys>; 173 vcc12-supply = <&vcc_io>; 174 vddio-supply = <&vcc_io>; 175 176 regulators { 177 vdd_cpu: DCDC_REG1 { 178 regulator-always-on; 179 regulator-boot-on; 180 regulator-min-microvolt = <750000>; 181 regulator-max-microvolt = <1350000>; 182 regulator-name = "vdd_arm"; 183 regulator-state-mem { 184 regulator-off-in-suspend; 185 }; 186 }; 187 188 vdd_gpu: DCDC_REG2 { 189 regulator-always-on; 190 regulator-boot-on; 191 regulator-min-microvolt = <850000>; 192 regulator-max-microvolt = <1250000>; 193 regulator-name = "vdd_gpu"; 194 regulator-state-mem { 195 regulator-on-in-suspend; 196 regulator-suspend-microvolt = <1000000>; 197 }; 198 }; 199 200 vcc_ddr: DCDC_REG3 { 201 regulator-always-on; 202 regulator-boot-on; 203 regulator-name = "vcc_ddr"; 204 regulator-state-mem { 205 regulator-on-in-suspend; 206 }; 207 }; 208 209 vcc_io: DCDC_REG4 { 210 regulator-always-on; 211 regulator-boot-on; 212 regulator-min-microvolt = <3300000>; 213 regulator-max-microvolt = <3300000>; 214 regulator-name = "vcc_io"; 215 regulator-state-mem { 216 regulator-on-in-suspend; 217 regulator-suspend-microvolt = <3300000>; 218 }; 219 }; 220 221 vcc_lan: LDO_REG1 { 222 regulator-always-on; 223 regulator-boot-on; 224 regulator-min-microvolt = <3300000>; 225 regulator-max-microvolt = <3300000>; 226 regulator-name = "vcc_lan"; 227 regulator-state-mem { 228 regulator-on-in-suspend; 229 regulator-suspend-microvolt = <3300000>; 230 }; 231 }; 232 233 vccio_sd: LDO_REG2 { 234 regulator-always-on; 235 regulator-boot-on; 236 regulator-min-microvolt = <3300000>; 237 regulator-max-microvolt = <3300000>; 238 regulator-name = "vccio_sd"; 239 regulator-state-mem { 240 regulator-off-in-suspend; 241 }; 242 }; 243 244 vdd_10: LDO_REG3 { 245 regulator-always-on; 246 regulator-boot-on; 247 regulator-min-microvolt = <1000000>; 248 regulator-max-microvolt = <1000000>; 249 regulator-name = "vdd_10"; 250 regulator-state-mem { 251 regulator-on-in-suspend; 252 regulator-suspend-microvolt = <1000000>; 253 }; 254 }; 255 256 vcc18_lcd: LDO_REG4 { 257 regulator-always-on; 258 regulator-boot-on; 259 regulator-min-microvolt = <1800000>; 260 regulator-max-microvolt = <1800000>; 261 regulator-name = "vcc18_lcd"; 262 regulator-state-mem { 263 regulator-on-in-suspend; 264 regulator-suspend-microvolt = <1800000>; 265 }; 266 }; 267 268 ldo5: LDO_REG5 { 269 regulator-always-on; 270 regulator-min-microvolt = <1800000>; 271 regulator-max-microvolt = <3300000>; 272 regulator-name = "ldo5"; 273 }; 274 275 vdd10_lcd: LDO_REG6 { 276 regulator-always-on; 277 regulator-boot-on; 278 regulator-min-microvolt = <1000000>; 279 regulator-max-microvolt = <1000000>; 280 regulator-name = "vdd10_lcd"; 281 regulator-state-mem { 282 regulator-on-in-suspend; 283 regulator-suspend-microvolt = <1000000>; 284 }; 285 }; 286 287 vcc_18: LDO_REG7 { 288 regulator-always-on; 289 regulator-boot-on; 290 regulator-min-microvolt = <1800000>; 291 regulator-max-microvolt = <1800000>; 292 regulator-name = "vcc_18"; 293 regulator-state-mem { 294 regulator-on-in-suspend; 295 regulator-suspend-microvolt = <1800000>; 296 }; 297 }; 298 299 vcca_codec: LDO_REG8 { 300 regulator-always-on; 301 regulator-boot-on; 302 regulator-min-microvolt = <3300000>; 303 regulator-max-microvolt = <3300000>; 304 regulator-name = "vcca_codec"; 305 regulator-state-mem { 306 regulator-on-in-suspend; 307 regulator-suspend-microvolt = <3300000>; 308 }; 309 }; 310 311 vcc_wl: SWITCH_REG1 { 312 regulator-always-on; 313 regulator-boot-on; 314 regulator-name = "vcc_wl"; 315 regulator-state-mem { 316 regulator-on-in-suspend; 317 }; 318 }; 319 320 vcc_lcd: SWITCH_REG2 { 321 regulator-always-on; 322 regulator-boot-on; 323 regulator-name = "vcc_lcd"; 324 regulator-state-mem { 325 regulator-on-in-suspend; 326 }; 327 }; 328 }; 329 }; 330}; 331 332&i2c1 { 333 status = "okay"; 334 clock-frequency = <400000>; 335 336 ak8963: ak8963@0d { 337 compatible = "asahi-kasei,ak8975"; 338 reg = <0x0d>; 339 interrupt-parent = <&gpio8>; 340 interrupts = <1 IRQ_TYPE_EDGE_RISING>; 341 pinctrl-names = "default"; 342 pinctrl-0 = <&comp_int>; 343 }; 344 345 l3g4200d: l3g4200d@68 { 346 compatible = "st,l3g4200d-gyro"; 347 st,drdy-int-pin = <2>; 348 reg = <0x6b>; 349 }; 350 351 mma8452: mma8452@1d { 352 compatible = "fsl,mma8452"; 353 reg = <0x1d>; 354 interrupt-parent = <&gpio8>; 355 interrupts = <0 IRQ_TYPE_EDGE_RISING>; 356 pinctrl-names = "default"; 357 pinctrl-0 = <&gsensor_int>; 358 }; 359}; 360 361&i2c2 { 362 status = "okay"; 363}; 364 365&i2c3 { 366 status = "okay"; 367}; 368 369&i2c4 { 370 status = "okay"; 371}; 372 373&i2c5 { 374 status = "okay"; 375}; 376 377&pinctrl { 378 ak8963 { 379 comp_int: comp-int { 380 rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_up>; 381 }; 382 }; 383 384 buttons { 385 pwrbtn: pwrbtn { 386 rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>; 387 }; 388 }; 389 390 ir { 391 ir_int: ir-int { 392 rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_up>; 393 }; 394 }; 395 396 mma8452 { 397 gsensor_int: gsensor-int { 398 rockchip,pins = <8 0 RK_FUNC_GPIO &pcfg_pull_up>; 399 }; 400 }; 401 402 pmic { 403 pmic_int: pmic-int { 404 rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>; 405 }; 406 }; 407}; 408 409&vopb { 410 status = "okay"; 411}; 412 413&vopb_mmu { 414 status = "okay"; 415}; 416 417&vopl { 418 status = "okay"; 419}; 420 421&vopl_mmu { 422 status = "okay"; 423}; 424 425&uart0 { 426 status = "okay"; 427}; 428 429&uart1 { 430 status = "okay"; 431}; 432 433&uart2 { 434 status = "okay"; 435}; 436 437&uart3 { 438 status = "okay"; 439}; 440 441&uart4 { 442 status = "okay"; 443}; 444 445&usbphy { 446 status = "okay"; 447}; 448