1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Hardkernel Odroid XU3/XU3-Lite/XU4 boards common device tree source 4 * 5 * Copyright (c) 2013 Samsung Electronics Co., Ltd. 6 * http://www.samsung.com 7 * Copyright (c) 2014 Collabora Ltd. 8 * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com> 9 * Anand Moon <linux.amoon@gmail.com> 10 */ 11 12#include <dt-bindings/input/input.h> 13#include "exynos5422-odroid-core.dtsi" 14 15/ { 16 gpio-keys { 17 compatible = "gpio-keys"; 18 pinctrl-names = "default"; 19 pinctrl-0 = <&power_key>; 20 21 power-key { 22 /* 23 * The power button (SW2) is connected to the PWRON 24 * pin (active high) of the S2MPS11 PMIC, which acts 25 * as a 16ms debouce filter and signal inverter with 26 * output on ONOB pin (active low). ONOB PMIC pin is 27 * then connected to XEINT3 SoC pin. 28 */ 29 gpios = <&gpx0 3 GPIO_ACTIVE_LOW>; 30 linux,code = <KEY_POWER>; 31 label = "power key"; 32 debounce-interval = <0>; 33 wakeup-source; 34 }; 35 }; 36 37 emmc_pwrseq: pwrseq { 38 pinctrl-0 = <&emmc_nrst_pin>; 39 pinctrl-names = "default"; 40 compatible = "mmc-pwrseq-emmc"; 41 reset-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>; 42 }; 43 44 fan0: pwm-fan { 45 compatible = "pwm-fan"; 46 pwms = <&pwm 0 20972 0>; 47 #cooling-cells = <2>; 48 cooling-levels = <0 130 170 230>; 49 }; 50 51 thermal-zones { 52 cpu0_thermal: cpu0-thermal { 53 thermal-sensors = <&tmu_cpu0 0>; 54 polling-delay-passive = <250>; 55 polling-delay = <0>; 56 trips { 57 cpu0_alert0: cpu-alert-0 { 58 temperature = <50000>; /* millicelsius */ 59 hysteresis = <5000>; /* millicelsius */ 60 type = "active"; 61 }; 62 cpu0_alert1: cpu-alert-1 { 63 temperature = <60000>; /* millicelsius */ 64 hysteresis = <5000>; /* millicelsius */ 65 type = "active"; 66 }; 67 cpu0_alert2: cpu-alert-2 { 68 temperature = <70000>; /* millicelsius */ 69 hysteresis = <5000>; /* millicelsius */ 70 type = "active"; 71 }; 72 cpu0_crit0: cpu-crit-0 { 73 temperature = <120000>; /* millicelsius */ 74 hysteresis = <0>; /* millicelsius */ 75 type = "critical"; 76 }; 77 /* 78 * Exynos542x supports only 4 trip-points 79 * so for these polling mode is required. 80 * Start polling at temperature level of last 81 * interrupt-driven trip: cpu0_alert2 82 */ 83 cpu0_alert3: cpu-alert-3 { 84 temperature = <70000>; /* millicelsius */ 85 hysteresis = <10000>; /* millicelsius */ 86 type = "passive"; 87 }; 88 cpu0_alert4: cpu-alert-4 { 89 temperature = <85000>; /* millicelsius */ 90 hysteresis = <10000>; /* millicelsius */ 91 type = "passive"; 92 }; 93 }; 94 cooling-maps { 95 map0 { 96 trip = <&cpu0_alert0>; 97 cooling-device = <&fan0 0 1>; 98 }; 99 map1 { 100 trip = <&cpu0_alert1>; 101 cooling-device = <&fan0 1 2>; 102 }; 103 map2 { 104 trip = <&cpu0_alert2>; 105 cooling-device = <&fan0 2 3>; 106 }; 107 /* 108 * When reaching cpu0_alert3, reduce CPU 109 * by 2 steps. On Exynos5422/5800 that would 110 * (usually) be: 1800 MHz and 1200 MHz. 111 */ 112 map3 { 113 trip = <&cpu0_alert3>; 114 cooling-device = <&cpu0 0 2>, 115 <&cpu1 0 2>, 116 <&cpu2 0 2>, 117 <&cpu3 0 2>, 118 <&cpu4 0 2>, 119 <&cpu5 0 2>, 120 <&cpu6 0 2>, 121 <&cpu7 0 2>; 122 }; 123 /* 124 * When reaching cpu0_alert4, reduce CPU 125 * further, down to 600 MHz (14 steps for big, 126 * 8 steps for LITTLE). 127 */ 128 cpu0_cooling_map4: map4 { 129 trip = <&cpu0_alert4>; 130 cooling-device = <&cpu0 3 8>, 131 <&cpu1 3 8>, 132 <&cpu2 3 8>, 133 <&cpu3 3 8>, 134 <&cpu4 3 14>, 135 <&cpu5 3 14>, 136 <&cpu6 3 14>, 137 <&cpu7 3 14>; 138 }; 139 }; 140 }; 141 cpu1_thermal: cpu1-thermal { 142 thermal-sensors = <&tmu_cpu1 0>; 143 polling-delay-passive = <250>; 144 polling-delay = <0>; 145 trips { 146 cpu1_alert0: cpu-alert-0 { 147 temperature = <50000>; 148 hysteresis = <5000>; 149 type = "active"; 150 }; 151 cpu1_alert1: cpu-alert-1 { 152 temperature = <60000>; 153 hysteresis = <5000>; 154 type = "active"; 155 }; 156 cpu1_alert2: cpu-alert-2 { 157 temperature = <70000>; 158 hysteresis = <5000>; 159 type = "active"; 160 }; 161 cpu1_crit0: cpu-crit-0 { 162 temperature = <120000>; 163 hysteresis = <0>; 164 type = "critical"; 165 }; 166 cpu1_alert3: cpu-alert-3 { 167 temperature = <70000>; 168 hysteresis = <10000>; 169 type = "passive"; 170 }; 171 cpu1_alert4: cpu-alert-4 { 172 temperature = <85000>; 173 hysteresis = <10000>; 174 type = "passive"; 175 }; 176 }; 177 cooling-maps { 178 map0 { 179 trip = <&cpu1_alert0>; 180 cooling-device = <&fan0 0 1>; 181 }; 182 map1 { 183 trip = <&cpu1_alert1>; 184 cooling-device = <&fan0 1 2>; 185 }; 186 map2 { 187 trip = <&cpu1_alert2>; 188 cooling-device = <&fan0 2 3>; 189 }; 190 map3 { 191 trip = <&cpu1_alert3>; 192 cooling-device = <&cpu0 0 2>, 193 <&cpu1 0 2>, 194 <&cpu2 0 2>, 195 <&cpu3 0 2>, 196 <&cpu4 0 2>, 197 <&cpu5 0 2>, 198 <&cpu6 0 2>, 199 <&cpu7 0 2>; 200 }; 201 cpu1_cooling_map4: map4 { 202 trip = <&cpu1_alert4>; 203 cooling-device = <&cpu0 3 8>, 204 <&cpu1 3 8>, 205 <&cpu2 3 8>, 206 <&cpu3 3 8>, 207 <&cpu4 3 14>, 208 <&cpu5 3 14>, 209 <&cpu6 3 14>, 210 <&cpu7 3 14>; 211 }; 212 }; 213 }; 214 cpu2_thermal: cpu2-thermal { 215 thermal-sensors = <&tmu_cpu2 0>; 216 polling-delay-passive = <250>; 217 polling-delay = <0>; 218 trips { 219 cpu2_alert0: cpu-alert-0 { 220 temperature = <50000>; 221 hysteresis = <5000>; 222 type = "active"; 223 }; 224 cpu2_alert1: cpu-alert-1 { 225 temperature = <60000>; 226 hysteresis = <5000>; 227 type = "active"; 228 }; 229 cpu2_alert2: cpu-alert-2 { 230 temperature = <70000>; 231 hysteresis = <5000>; 232 type = "active"; 233 }; 234 cpu2_crit0: cpu-crit-0 { 235 temperature = <120000>; 236 hysteresis = <0>; 237 type = "critical"; 238 }; 239 cpu2_alert3: cpu-alert-3 { 240 temperature = <70000>; 241 hysteresis = <10000>; 242 type = "passive"; 243 }; 244 cpu2_alert4: cpu-alert-4 { 245 temperature = <85000>; 246 hysteresis = <10000>; 247 type = "passive"; 248 }; 249 }; 250 cooling-maps { 251 map0 { 252 trip = <&cpu2_alert0>; 253 cooling-device = <&fan0 0 1>; 254 }; 255 map1 { 256 trip = <&cpu2_alert1>; 257 cooling-device = <&fan0 1 2>; 258 }; 259 map2 { 260 trip = <&cpu2_alert2>; 261 cooling-device = <&fan0 2 3>; 262 }; 263 map3 { 264 trip = <&cpu2_alert3>; 265 cooling-device = <&cpu0 0 2>, 266 <&cpu1 0 2>, 267 <&cpu2 0 2>, 268 <&cpu3 0 2>, 269 <&cpu4 0 2>, 270 <&cpu5 0 2>, 271 <&cpu6 0 2>, 272 <&cpu7 0 2>; 273 }; 274 cpu2_cooling_map4: map4 { 275 trip = <&cpu2_alert4>; 276 cooling-device = <&cpu0 3 8>, 277 <&cpu1 3 8>, 278 <&cpu2 3 8>, 279 <&cpu3 3 8>, 280 <&cpu4 3 14>, 281 <&cpu5 3 14>, 282 <&cpu6 3 14>, 283 <&cpu7 3 14>; 284 }; 285 }; 286 }; 287 cpu3_thermal: cpu3-thermal { 288 thermal-sensors = <&tmu_cpu3 0>; 289 polling-delay-passive = <250>; 290 polling-delay = <0>; 291 trips { 292 cpu3_alert0: cpu-alert-0 { 293 temperature = <50000>; 294 hysteresis = <5000>; 295 type = "active"; 296 }; 297 cpu3_alert1: cpu-alert-1 { 298 temperature = <60000>; 299 hysteresis = <5000>; 300 type = "active"; 301 }; 302 cpu3_alert2: cpu-alert-2 { 303 temperature = <70000>; 304 hysteresis = <5000>; 305 type = "active"; 306 }; 307 cpu3_crit0: cpu-crit-0 { 308 temperature = <120000>; 309 hysteresis = <0>; 310 type = "critical"; 311 }; 312 cpu3_alert3: cpu-alert-3 { 313 temperature = <70000>; 314 hysteresis = <10000>; 315 type = "passive"; 316 }; 317 cpu3_alert4: cpu-alert-4 { 318 temperature = <85000>; 319 hysteresis = <10000>; 320 type = "passive"; 321 }; 322 }; 323 cooling-maps { 324 map0 { 325 trip = <&cpu3_alert0>; 326 cooling-device = <&fan0 0 1>; 327 }; 328 map1 { 329 trip = <&cpu3_alert1>; 330 cooling-device = <&fan0 1 2>; 331 }; 332 map2 { 333 trip = <&cpu3_alert2>; 334 cooling-device = <&fan0 2 3>; 335 }; 336 map3 { 337 trip = <&cpu3_alert3>; 338 cooling-device = <&cpu0 0 2>, 339 <&cpu1 0 2>, 340 <&cpu2 0 2>, 341 <&cpu3 0 2>, 342 <&cpu4 0 2>, 343 <&cpu5 0 2>, 344 <&cpu6 0 2>, 345 <&cpu7 0 2>; 346 }; 347 cpu3_cooling_map4: map4 { 348 trip = <&cpu3_alert4>; 349 cooling-device = <&cpu0 3 8>, 350 <&cpu1 3 8>, 351 <&cpu2 3 8>, 352 <&cpu3 3 8>, 353 <&cpu4 3 14>, 354 <&cpu5 3 14>, 355 <&cpu6 3 14>, 356 <&cpu7 3 14>; 357 }; 358 }; 359 }; 360 gpu_thermal: gpu-thermal { 361 thermal-sensors = <&tmu_gpu 0>; 362 polling-delay-passive = <250>; 363 polling-delay = <0>; 364 trips { 365 gpu_alert0: gpu-alert-0 { 366 temperature = <50000>; 367 hysteresis = <5000>; 368 type = "active"; 369 }; 370 gpu_alert1: gpu-alert-1 { 371 temperature = <60000>; 372 hysteresis = <5000>; 373 type = "active"; 374 }; 375 gpu_alert2: gpu-alert-2 { 376 temperature = <70000>; 377 hysteresis = <5000>; 378 type = "active"; 379 }; 380 gpu_crit0: gpu-crit-0 { 381 temperature = <120000>; 382 hysteresis = <0>; 383 type = "critical"; 384 }; 385 gpu_alert3: gpu-alert-3 { 386 temperature = <70000>; 387 hysteresis = <10000>; 388 type = "passive"; 389 }; 390 gpu_alert4: gpu-alert-4 { 391 temperature = <85000>; 392 hysteresis = <10000>; 393 type = "passive"; 394 }; 395 }; 396 cooling-maps { 397 map0 { 398 trip = <&gpu_alert0>; 399 cooling-device = <&fan0 0 1>; 400 }; 401 map1 { 402 trip = <&gpu_alert1>; 403 cooling-device = <&fan0 1 2>; 404 }; 405 map2 { 406 trip = <&gpu_alert2>; 407 cooling-device = <&fan0 2 3>; 408 }; 409 map3 { 410 trip = <&gpu_alert3>; 411 cooling-device = <&gpu 0 2>; 412 }; 413 map4 { 414 trip = <&gpu_alert4>; 415 cooling-device = <&gpu 3 6>; 416 }; 417 }; 418 }; 419 }; 420}; 421 422&buck10_reg { 423 /* Supplies vmmc-supply of mmc_0 */ 424 regulator-always-on; 425 regulator-boot-on; 426}; 427 428&hdmi { 429 status = "okay"; 430 ddc = <&i2c_2>; 431 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; 432 pinctrl-names = "default"; 433 pinctrl-0 = <&hdmi_hpd_irq>; 434 435 vdd_osc-supply = <&ldo7_reg>; 436 vdd_pll-supply = <&ldo6_reg>; 437 vdd-supply = <&ldo6_reg>; 438}; 439 440&hdmicec { 441 status = "okay"; 442 needs-hpd; 443}; 444 445&i2c_2 { 446 samsung,i2c-sda-delay = <100>; 447 samsung,i2c-max-bus-freq = <66000>; 448 /* used by HDMI DDC */ 449 status = "okay"; 450}; 451 452&ldo26_reg { 453 regulator-min-microvolt = <3000000>; 454 regulator-max-microvolt = <3000000>; 455 regulator-always-on; 456}; 457 458&mixer { 459 status = "okay"; 460}; 461 462&mmc_0 { 463 status = "okay"; 464 mmc-pwrseq = <&emmc_pwrseq>; 465 card-detect-delay = <200>; 466 samsung,dw-mshc-ciu-div = <3>; 467 samsung,dw-mshc-sdr-timing = <0 4>; 468 samsung,dw-mshc-ddr-timing = <0 2>; 469 samsung,dw-mshc-hs400-timing = <0 2>; 470 samsung,read-strobe-delay = <90>; 471 pinctrl-names = "default"; 472 pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd &sd0_rclk>; 473 bus-width = <8>; 474 cap-mmc-highspeed; 475 mmc-hs200-1_8v; 476 mmc-hs400-1_8v; 477 max-frequency = <200000000>; 478 vmmc-supply = <&ldo18_reg>; 479 vqmmc-supply = <&ldo3_reg>; 480}; 481 482&pinctrl_0 { 483 power_key: power-key-pins { 484 samsung,pins = "gpx0-3"; 485 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 486 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 487 samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; 488 }; 489 490 hdmi_hpd_irq: hdmi-hpd-irq-pins { 491 samsung,pins = "gpx3-7"; 492 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 493 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 494 samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; 495 }; 496}; 497 498&pinctrl_1 { 499 emmc_nrst_pin: emmc-nrst-pins { 500 samsung,pins = "gpd1-0"; 501 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 502 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 503 samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; 504 }; 505}; 506