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