1/* 2 * Device tree file for Firefly Rockchip RK3288 Core board 3 * Copyright (c) 2016 Randy Li <ayaka@soulik.info> 4 * 5 * This file is dual-licensed: you can use it either under the terms 6 * of the GPL or the X11 license, at your option. Note that this dual 7 * licensing only applies to this file, and not this project as a 8 * whole. 9 * 10 * a) This file is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License as 12 * published by the Free Software Foundation; either version 2 of the 13 * License, or (at your option) any later version. 14 * 15 * This file is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * Or, alternatively, 21 * 22 * b) Permission is hereby granted, free of charge, to any person 23 * obtaining a copy of this software and associated documentation 24 * files (the "Software"), to deal in the Software without 25 * restriction, including without limitation the rights to use, 26 * copy, modify, merge, publish, distribute, sublicense, and/or 27 * sell copies of the Software, and to permit persons to whom the 28 * Software is furnished to do so, subject to the following 29 * conditions: 30 * 31 * The above copyright notice and this permission notice shall be 32 * included in all copies or substantial portions of the Software. 33 * 34 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 35 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 36 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 37 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 38 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 39 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 40 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 41 * OTHER DEALINGS IN THE SOFTWARE. 42 */ 43 44/dts-v1/; 45#include "rk3288-firefly-reload-core.dtsi" 46 47/ { 48 model = "Firefly-RK3288-reload"; 49 compatible = "firefly,firefly-rk3288-reload", "rockchip,rk3288"; 50 51 adc-keys { 52 compatible = "adc-keys"; 53 io-channels = <&saradc 1>; 54 io-channel-names = "buttons"; 55 keyup-threshold-microvolt = <1800000>; 56 57 button-recovery { 58 label = "Recovery"; 59 linux,code = <KEY_VENDOR>; 60 press-threshold-microvolt = <0>; 61 }; 62 }; 63 64 gpio-keys { 65 compatible = "gpio-keys"; 66 67 power { 68 wakeup-source; 69 gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>; 70 label = "GPIO Power"; 71 linux,code = <KEY_POWER>; 72 pinctrl-names = "default"; 73 pinctrl-0 = <&pwr_key>; 74 }; 75 }; 76 77 ir-receiver { 78 compatible = "gpio-ir-receiver"; 79 gpios = <&gpio7 RK_PA0 GPIO_ACTIVE_LOW>; 80 }; 81 82 leds { 83 compatible = "gpio-leds"; 84 85 power { 86 gpios = <&gpio8 RK_PA2 GPIO_ACTIVE_LOW>; 87 label = "firefly:blue:power"; 88 pinctrl-names = "default"; 89 pinctrl-0 = <&power_led>; 90 panic-indicator; 91 }; 92 93 work { 94 gpios = <&gpio8 RK_PA1 GPIO_ACTIVE_LOW>; 95 label = "firefly:blue:user"; 96 linux,default-trigger = "rc-feedback"; 97 pinctrl-names = "default"; 98 pinctrl-0 = <&work_led>; 99 }; 100 }; 101 102 sdio_pwrseq: sdio-pwrseq { 103 compatible = "mmc-pwrseq-simple"; 104 clocks = <&hym8563>; 105 clock-names = "ext_clock"; 106 pinctrl-names = "default"; 107 pinctrl-0 = <&wifi_enable>; 108 reset-gpios = <&gpio4 RK_PD4 GPIO_ACTIVE_LOW>; 109 }; 110 111 sound { 112 compatible = "simple-audio-card"; 113 simple-audio-card,name = "SPDIF"; 114 simple-audio-card,dai-link@1 { /* S/PDIF - S/PDIF */ 115 cpu { sound-dai = <&spdif>; }; 116 codec { sound-dai = <&spdif_out>; }; 117 }; 118 }; 119 120 spdif_out: spdif-out { 121 compatible = "linux,spdif-dit"; 122 #sound-dai-cells = <0>; 123 }; 124 125 vcc_host_5v: usb-host-regulator { 126 compatible = "regulator-fixed"; 127 enable-active-high; 128 gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; 129 pinctrl-names = "default"; 130 pinctrl-0 = <&host_vbus_drv>; 131 regulator-name = "vcc_host_5v"; 132 regulator-min-microvolt = <5000000>; 133 regulator-max-microvolt = <5000000>; 134 regulator-always-on; 135 vin-supply = <&vcc_5v>; 136 }; 137 138 vcc_5v: vcc_sys: vsys-regulator { 139 compatible = "regulator-fixed"; 140 regulator-name = "vcc_5v"; 141 regulator-min-microvolt = <5000000>; 142 regulator-max-microvolt = <5000000>; 143 regulator-always-on; 144 regulator-boot-on; 145 }; 146 147 vcc_sd: sdmmc-regulator { 148 compatible = "regulator-fixed"; 149 gpio = <&gpio7 RK_PB3 GPIO_ACTIVE_LOW>; 150 pinctrl-names = "default"; 151 pinctrl-0 = <&sdmmc_pwr>; 152 regulator-name = "vcc_sd"; 153 regulator-min-microvolt = <3300000>; 154 regulator-max-microvolt = <3300000>; 155 startup-delay-us = <100000>; 156 vin-supply = <&vcc_io>; 157 }; 158 159 vcc_otg_5v: usb-otg-regulator { 160 compatible = "regulator-fixed"; 161 enable-active-high; 162 gpio = <&gpio0 RK_PB4 GPIO_ACTIVE_HIGH>; 163 pinctrl-names = "default"; 164 pinctrl-0 = <&otg_vbus_drv>; 165 regulator-name = "vcc_otg_5v"; 166 regulator-min-microvolt = <5000000>; 167 regulator-max-microvolt = <5000000>; 168 regulator-always-on; 169 vin-supply = <&vcc_5v>; 170 }; 171 172 dovdd_1v8: dovdd-1v8-regulator { 173 compatible = "regulator-fixed"; 174 enable-active-high; 175 gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; 176 pinctrl-names = "default"; 177 pinctrl-0 = <&dvp_pwr>; 178 regulator-name = "dovdd_1v8"; 179 regulator-min-microvolt = <1800000>; 180 regulator-max-microvolt = <1800000>; 181 vin-supply = <&vcc_io>; 182 }; 183 184 vcc28_dvp: vcc28-dvp-regulator { 185 compatible = "regulator-fixed"; 186 enable-active-high; 187 gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; 188 pinctrl-names = "default"; 189 pinctrl-0 = <&dvp_pwr>; 190 regulator-name = "vcc28_dvp"; 191 regulator-min-microvolt = <2800000>; 192 regulator-max-microvolt = <2800000>; 193 vin-supply = <&vcc_io>; 194 }; 195 196 af_28: af_28-regulator { 197 compatible = "regulator-fixed"; 198 enable-active-high; 199 gpio = <&gpio0 RK_PB3 GPIO_ACTIVE_HIGH>; 200 pinctrl-names = "default"; 201 pinctrl-0 = <&dvp_pwr>; 202 regulator-name = "af_28"; 203 regulator-min-microvolt = <2800000>; 204 regulator-max-microvolt = <2800000>; 205 vin-supply = <&vcc_io>; 206 }; 207 208 dvdd_1v2: af_28-regulator { 209 compatible = "regulator-fixed"; 210 enable-active-high; 211 gpio = <&gpio7 RK_PB4 GPIO_ACTIVE_HIGH>; 212 pinctrl-names = "default"; 213 pinctrl-0 = <&cif_pwr>; 214 regulator-name = "dvdd_1v2"; 215 regulator-min-microvolt = <1200000>; 216 regulator-max-microvolt = <1200000>; 217 vin-supply = <&vcc_io>; 218 }; 219 220 vbat_wl: wifi-regulator { 221 compatible = "regulator-fixed"; 222 regulator-name = "vbat_wl"; 223 regulator-min-microvolt = <3300000>; 224 regulator-max-microvolt = <3300000>; 225 vin-supply = <&vcc_io>; 226 }; 227}; 228 229&i2c0 { 230 hym8563: hym8563@51 { 231 compatible = "haoyu,hym8563"; 232 reg = <0x51>; 233 #clock-cells = <0>; 234 clock-frequency = <32768>; 235 clock-output-names = "xin32k"; 236 interrupt-parent = <&gpio7>; 237 interrupts = <RK_PA4 IRQ_TYPE_EDGE_FALLING>; 238 pinctrl-names = "default"; 239 pinctrl-0 = <&rtc_int>; 240 }; 241}; 242 243&i2c2 { 244 status = "okay"; 245 246 codec: es8328@10 { 247 compatible = "everest,es8328"; 248 DVDD-supply = <&vcca_33>; 249 AVDD-supply = <&vcca_33>; 250 PVDD-supply = <&vcca_33>; 251 HPVDD-supply = <&vcca_33>; 252 clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>; 253 clock-names = "i2s_hclk", "i2s_clk"; 254 reg = <0x10>; 255 }; 256}; 257 258&i2s { 259 status = "okay"; 260}; 261 262&saradc { 263 status = "okay"; 264}; 265 266&sdmmc { 267 bus-width = <4>; 268 cap-mmc-highspeed; 269 cap-sd-highspeed; 270 card-detect-delay = <200>; 271 disable-wp; 272 pinctrl-names = "default"; 273 pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>; 274 vmmc-supply = <&vcc_sd>; 275 vqmmc-supply = <&vccio_sd>; 276 status = "okay"; 277}; 278 279&sdio0 { 280 bus-width = <4>; 281 cap-sd-highspeed; 282 cap-sdio-irq; 283 disable-wp; 284 mmc-pwrseq = <&sdio_pwrseq>; 285 non-removable; 286 pinctrl-names = "default"; 287 pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>, <&sdio0_int>; 288 sd-uhs-sdr12; 289 sd-uhs-sdr25; 290 sd-uhs-sdr50; 291 sd-uhs-ddr50; 292 vmmc-supply = <&vbat_wl>; 293 vqmmc-supply = <&vccio_wl>; 294 status = "okay"; 295}; 296 297&spdif { 298 status = "okay"; 299}; 300 301&uart0 { 302 pinctrl-names = "default"; 303 pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>; 304 status = "okay"; 305}; 306 307&uart1 { 308 status = "okay"; 309}; 310 311&uart2 { 312 status = "okay"; 313}; 314 315&uart3 { 316 status = "okay"; 317}; 318 319&usbphy { 320 status = "okay"; 321}; 322 323&usb_host1 { 324 pinctrl-names = "default"; 325 pinctrl-0 = <&usbhub_rst>; 326 status = "okay"; 327}; 328 329&usb_otg { 330 status = "okay"; 331}; 332 333&pinctrl { 334 ir { 335 ir_int: ir-int { 336 rockchip,pins = <7 0 RK_FUNC_GPIO &pcfg_pull_up>; 337 }; 338 }; 339 340 dvp { 341 dvp_pwr: dvp-pwr { 342 rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_none>; 343 }; 344 345 cif_pwr: cif-pwr { 346 rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_none>; 347 }; 348 }; 349 350 hym8563 { 351 rtc_int: rtc-int { 352 rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_up>; 353 }; 354 }; 355 356 keys { 357 pwr_key: pwr-key { 358 rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>; 359 }; 360 }; 361 362 leds { 363 power_led: power-led { 364 rockchip,pins = <8 2 RK_FUNC_GPIO &pcfg_pull_none>; 365 }; 366 367 work_led: work-led { 368 rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_none>; 369 }; 370 }; 371 372 sdmmc { 373 /* 374 * Default drive strength isn't enough to achieve even 375 * high-speed mode on firefly board so bump up to 12ma. 376 */ 377 sdmmc_bus4: sdmmc-bus4 { 378 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_12ma>, 379 <6 17 RK_FUNC_1 &pcfg_pull_up_drv_12ma>, 380 <6 18 RK_FUNC_1 &pcfg_pull_up_drv_12ma>, 381 <6 19 RK_FUNC_1 &pcfg_pull_up_drv_12ma>; 382 }; 383 384 sdmmc_clk: sdmmc-clk { 385 rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_12ma>; 386 }; 387 388 sdmmc_cmd: sdmmc-cmd { 389 rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_12ma>; 390 }; 391 392 sdmmc_pwr: sdmmc-pwr { 393 rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>; 394 }; 395 }; 396 397 sdio { 398 wifi_enable: wifi-enable { 399 rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>; 400 }; 401 }; 402 403 usb_host { 404 host_vbus_drv: host-vbus-drv { 405 rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>; 406 }; 407 408 usbhub_rst: usbhub-rst { 409 rockchip,pins = <8 3 RK_FUNC_GPIO &pcfg_output_high>; 410 }; 411 }; 412 413 usb_otg { 414 otg_vbus_drv: otg-vbus-drv { 415 rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>; 416 }; 417 }; 418}; 419