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 device_type = "memory"; 53 reg = <0 0x80000000>; 54 }; 55 56 ext_gmac: external-gmac-clock { 57 compatible = "fixed-clock"; 58 clock-frequency = <125000000>; 59 clock-output-names = "ext_gmac"; 60 #clock-cells = <0>; 61 }; 62 63 gpio-keys { 64 compatible = "gpio-keys"; 65 #address-cells = <1>; 66 #size-cells = <0>; 67 autorepeat; 68 69 pinctrl-names = "default"; 70 pinctrl-0 = <&pwrbtn>; 71 72 button@0 { 73 gpios = <&gpio0 5 GPIO_ACTIVE_LOW>; 74 linux,code = <116>; 75 label = "GPIO Key Power"; 76 linux,input-type = <1>; 77 gpio-key,wakeup = <1>; 78 debounce-interval = <100>; 79 }; 80 }; 81 82 io_domains: io-domains { 83 compatible = "rockchip,rk3288-io-voltage-domain"; 84 rockchip,grf = <&grf>; 85 86 audio-supply = <&vcca_33>; 87 bb-supply = <&vcc_io>; 88 dvp-supply = <&vcc18_dvp>; 89 flash0-supply = <&vcc_flash>; 90 flash1-supply = <&vcc_lan>; 91 gpio30-supply = <&vcc_io>; 92 gpio1830-supply = <&vcc_io>; 93 lcdc-supply = <&vcc_io>; 94 sdcard-supply = <&vccio_sd>; 95 wifi-supply = <&vccio_wl>; 96 }; 97 98 ir: ir-receiver { 99 compatible = "gpio-ir-receiver"; 100 gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; 101 pinctrl-names = "default"; 102 pinctrl-0 = <&ir_int>; 103 }; 104 105 vcc_flash: flash-regulator { 106 compatible = "regulator-fixed"; 107 regulator-name = "vcc_flash"; 108 regulator-min-microvolt = <1800000>; 109 regulator-max-microvolt = <1800000>; 110 vin-supply = <&vcc_io>; 111 }; 112 113 vcc_sd: sdmmc-regulator { 114 compatible = "regulator-fixed"; 115 gpio = <&gpio7 11 GPIO_ACTIVE_LOW>; 116 pinctrl-names = "default"; 117 pinctrl-0 = <&sdmmc_pwr>; 118 regulator-name = "vcc_sd"; 119 regulator-min-microvolt = <3300000>; 120 regulator-max-microvolt = <3300000>; 121 startup-delay-us = <100000>; 122 vin-supply = <&vcc_io>; 123 }; 124 125 vcc_sys: vsys-regulator { 126 compatible = "regulator-fixed"; 127 regulator-name = "vcc_sys"; 128 regulator-min-microvolt = <5000000>; 129 regulator-max-microvolt = <5000000>; 130 regulator-always-on; 131 regulator-boot-on; 132 }; 133 134 /* 135 * A PT5128 creates both dovdd_1v8 and vcc28_dvp, controlled 136 * by the dvp_pwr pin. 137 */ 138 vcc18_dvp: vcc18-dvp-regulator { 139 compatible = "regulator-fixed"; 140 regulator-name = "vcc18-dvp"; 141 regulator-min-microvolt = <1800000>; 142 regulator-max-microvolt = <1800000>; 143 vin-supply = <&vcc28_dvp>; 144 }; 145 146 vcc28_dvp: vcc28-dvp-regulator { 147 compatible = "regulator-fixed"; 148 enable-active-high; 149 gpio = <&gpio0 17 GPIO_ACTIVE_HIGH>; 150 pinctrl-names = "default"; 151 pinctrl-0 = <&dvp_pwr>; 152 regulator-name = "vcc28_dvp"; 153 regulator-min-microvolt = <2800000>; 154 regulator-max-microvolt = <2800000>; 155 regulator-always-on; 156 vin-supply = <&vcc_io>; 157 }; 158}; 159 160&cpu0 { 161 cpu0-supply = <&vdd_cpu>; 162}; 163 164&emmc { 165 broken-cd; 166 bus-width = <8>; 167 cap-mmc-highspeed; 168 disable-wp; 169 non-removable; 170 num-slots = <1>; 171 pinctrl-names = "default"; 172 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>; 173 vmmc-supply = <&vcc_io>; 174 vqmmc-supply = <&vcc_flash>; 175 status = "okay"; 176}; 177 178&sdmmc { 179 bus-width = <4>; 180 cap-mmc-highspeed; 181 cap-sd-highspeed; 182 card-detect-delay = <200>; 183 disable-wp; /* wp not hooked up */ 184 num-slots = <1>; 185 pinctrl-names = "default"; 186 pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; 187 vmmc-supply = <&vcc_sd>; 188 vqmmc-supply = <&vccio_sd>; 189 status = "okay"; 190}; 191 192&gmac { 193 phy-supply = <&vcc_lan>; 194 phy-mode = "rgmii"; 195 clock_in_out = "input"; 196 snps,reset-gpio = <&gpio4 7 0>; 197 snps,reset-active-low; 198 snps,reset-delays-us = <0 10000 1000000>; 199 assigned-clocks = <&cru SCLK_MAC>; 200 assigned-clock-parents = <&ext_gmac>; 201 pinctrl-names = "default"; 202 pinctrl-0 = <&rgmii_pins>; 203 tx_delay = <0x30>; 204 rx_delay = <0x10>; 205 status = "ok"; 206}; 207 208&hdmi { 209 ddc-i2c-bus = <&i2c5>; 210 status = "okay"; 211}; 212 213&i2c0 { 214 status = "okay"; 215 clock-frequency = <400000>; 216 217 rk808: pmic@1b { 218 compatible = "rockchip,rk808"; 219 reg = <0x1b>; 220 interrupt-parent = <&gpio0>; 221 interrupts = <4 IRQ_TYPE_LEVEL_LOW>; 222 pinctrl-names = "default"; 223 pinctrl-0 = <&pmic_int &global_pwroff>; 224 rockchip,system-power-controller; 225 wakeup-source; 226 #clock-cells = <1>; 227 clock-output-names = "xin32k", "rk808-clkout2"; 228 229 vcc1-supply = <&vcc_sys>; 230 vcc2-supply = <&vcc_sys>; 231 vcc3-supply = <&vcc_sys>; 232 vcc4-supply = <&vcc_sys>; 233 vcc6-supply = <&vcc_sys>; 234 vcc7-supply = <&vcc_sys>; 235 vcc8-supply = <&vcc_18>; 236 vcc9-supply = <&vcc_io>; 237 vcc10-supply = <&vcc_io>; 238 vcc11-supply = <&vcc_sys>; 239 vcc12-supply = <&vcc_io>; 240 vddio-supply = <&vcc_io>; 241 242 regulators { 243 vdd_cpu: DCDC_REG1 { 244 regulator-always-on; 245 regulator-boot-on; 246 regulator-min-microvolt = <750000>; 247 regulator-max-microvolt = <1350000>; 248 regulator-name = "vdd_arm"; 249 regulator-state-mem { 250 regulator-off-in-suspend; 251 }; 252 }; 253 254 vdd_gpu: DCDC_REG2 { 255 regulator-always-on; 256 regulator-boot-on; 257 regulator-min-microvolt = <850000>; 258 regulator-max-microvolt = <1250000>; 259 regulator-name = "vdd_gpu"; 260 regulator-state-mem { 261 regulator-on-in-suspend; 262 regulator-suspend-microvolt = <1000000>; 263 }; 264 }; 265 266 vcc_ddr: DCDC_REG3 { 267 regulator-always-on; 268 regulator-boot-on; 269 regulator-name = "vcc_ddr"; 270 regulator-state-mem { 271 regulator-on-in-suspend; 272 }; 273 }; 274 275 vcc_io: DCDC_REG4 { 276 regulator-always-on; 277 regulator-boot-on; 278 regulator-min-microvolt = <3300000>; 279 regulator-max-microvolt = <3300000>; 280 regulator-name = "vcc_io"; 281 regulator-state-mem { 282 regulator-on-in-suspend; 283 regulator-suspend-microvolt = <3300000>; 284 }; 285 }; 286 287 vcc_lan: LDO_REG1 { 288 regulator-always-on; 289 regulator-boot-on; 290 regulator-min-microvolt = <3300000>; 291 regulator-max-microvolt = <3300000>; 292 regulator-name = "vcc_lan"; 293 regulator-state-mem { 294 regulator-on-in-suspend; 295 regulator-suspend-microvolt = <3300000>; 296 }; 297 }; 298 299 vccio_sd: LDO_REG2 { 300 regulator-always-on; 301 regulator-boot-on; 302 regulator-min-microvolt = <3300000>; 303 regulator-max-microvolt = <3300000>; 304 regulator-name = "vccio_sd"; 305 regulator-state-mem { 306 regulator-off-in-suspend; 307 }; 308 }; 309 310 vdd_10: LDO_REG3 { 311 regulator-always-on; 312 regulator-boot-on; 313 regulator-min-microvolt = <1000000>; 314 regulator-max-microvolt = <1000000>; 315 regulator-name = "vdd_10"; 316 regulator-state-mem { 317 regulator-on-in-suspend; 318 regulator-suspend-microvolt = <1000000>; 319 }; 320 }; 321 322 vcc18_lcd: LDO_REG4 { 323 regulator-always-on; 324 regulator-boot-on; 325 regulator-min-microvolt = <1800000>; 326 regulator-max-microvolt = <1800000>; 327 regulator-name = "vcc18_lcd"; 328 regulator-state-mem { 329 regulator-on-in-suspend; 330 regulator-suspend-microvolt = <1800000>; 331 }; 332 }; 333 334 ldo5: LDO_REG5 { 335 regulator-always-on; 336 regulator-min-microvolt = <1800000>; 337 regulator-max-microvolt = <3300000>; 338 regulator-name = "ldo5"; 339 }; 340 341 vdd10_lcd: LDO_REG6 { 342 regulator-always-on; 343 regulator-boot-on; 344 regulator-min-microvolt = <1000000>; 345 regulator-max-microvolt = <1000000>; 346 regulator-name = "vdd10_lcd"; 347 regulator-state-mem { 348 regulator-on-in-suspend; 349 regulator-suspend-microvolt = <1000000>; 350 }; 351 }; 352 353 vcc_18: LDO_REG7 { 354 regulator-always-on; 355 regulator-boot-on; 356 regulator-min-microvolt = <1800000>; 357 regulator-max-microvolt = <1800000>; 358 regulator-name = "vcc_18"; 359 regulator-state-mem { 360 regulator-on-in-suspend; 361 regulator-suspend-microvolt = <1800000>; 362 }; 363 }; 364 365 vcca_33: LDO_REG8 { 366 regulator-always-on; 367 regulator-boot-on; 368 regulator-min-microvolt = <3300000>; 369 regulator-max-microvolt = <3300000>; 370 regulator-name = "vcca_33"; 371 regulator-state-mem { 372 regulator-on-in-suspend; 373 regulator-suspend-microvolt = <3300000>; 374 }; 375 }; 376 377 vccio_wl: SWITCH_REG1 { 378 regulator-always-on; 379 regulator-boot-on; 380 regulator-name = "vccio_wl"; 381 regulator-state-mem { 382 regulator-on-in-suspend; 383 }; 384 }; 385 386 vcc_lcd: SWITCH_REG2 { 387 regulator-always-on; 388 regulator-boot-on; 389 regulator-name = "vcc_lcd"; 390 regulator-state-mem { 391 regulator-on-in-suspend; 392 }; 393 }; 394 }; 395 }; 396}; 397 398&i2c1 { 399 status = "okay"; 400 clock-frequency = <400000>; 401 402 ak8963: ak8963@0d { 403 compatible = "asahi-kasei,ak8975"; 404 reg = <0x0d>; 405 interrupt-parent = <&gpio8>; 406 interrupts = <1 IRQ_TYPE_EDGE_RISING>; 407 pinctrl-names = "default"; 408 pinctrl-0 = <&comp_int>; 409 }; 410 411 l3g4200d: l3g4200d@68 { 412 compatible = "st,l3g4200d-gyro"; 413 st,drdy-int-pin = <2>; 414 reg = <0x6b>; 415 }; 416 417 mma8452: mma8452@1d { 418 compatible = "fsl,mma8452"; 419 reg = <0x1d>; 420 interrupt-parent = <&gpio8>; 421 interrupts = <0 IRQ_TYPE_EDGE_RISING>; 422 pinctrl-names = "default"; 423 pinctrl-0 = <&gsensor_int>; 424 }; 425}; 426 427&i2c2 { 428 status = "okay"; 429}; 430 431&i2c3 { 432 status = "okay"; 433}; 434 435&i2c4 { 436 status = "okay"; 437}; 438 439&i2c5 { 440 status = "okay"; 441}; 442 443&pinctrl { 444 ak8963 { 445 comp_int: comp-int { 446 rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_up>; 447 }; 448 }; 449 450 buttons { 451 pwrbtn: pwrbtn { 452 rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>; 453 }; 454 }; 455 456 dvp { 457 dvp_pwr: dvp-pwr { 458 rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_pull_none>; 459 }; 460 }; 461 462 ir { 463 ir_int: ir-int { 464 rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_up>; 465 }; 466 }; 467 468 mma8452 { 469 gsensor_int: gsensor-int { 470 rockchip,pins = <8 0 RK_FUNC_GPIO &pcfg_pull_up>; 471 }; 472 }; 473 474 pmic { 475 pmic_int: pmic-int { 476 rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>; 477 }; 478 }; 479 480 sdmmc { 481 sdmmc_pwr: sdmmc-pwr { 482 rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>; 483 }; 484 }; 485}; 486 487&tsadc { 488 rockchip,hw-tshut-mode = <0>; 489 rockchip,hw-tshut-polarity = <0>; 490 status = "okay"; 491}; 492 493&vopb { 494 status = "okay"; 495}; 496 497&vopb_mmu { 498 status = "okay"; 499}; 500 501&vopl { 502 status = "okay"; 503}; 504 505&vopl_mmu { 506 status = "okay"; 507}; 508 509&uart0 { 510 status = "okay"; 511}; 512 513&uart1 { 514 status = "okay"; 515}; 516 517&uart2 { 518 status = "okay"; 519}; 520 521&uart3 { 522 status = "okay"; 523}; 524 525&uart4 { 526 status = "okay"; 527}; 528 529&usbphy { 530 status = "okay"; 531}; 532