1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Common definition for Hardkernel's Exynos4412 based ODROID-X/X2/U2/U3 boards 4 * device tree source 5 */ 6 7#include <dt-bindings/sound/samsung-i2s.h> 8#include <dt-bindings/input/input.h> 9#include <dt-bindings/clock/maxim,max77686.h> 10#include "exynos4412.dtsi" 11#include "exynos4412-ppmu-common.dtsi" 12#include <dt-bindings/gpio/gpio.h> 13#include "exynos-mfc-reserved-memory.dtsi" 14 15/ { 16 chosen { 17 stdout-path = &serial_1; 18 }; 19 20 firmware@204f000 { 21 compatible = "samsung,secure-firmware"; 22 reg = <0x0204F000 0x1000>; 23 }; 24 25 gpio_keys: gpio-keys { 26 compatible = "gpio-keys"; 27 pinctrl-names = "default"; 28 pinctrl-0 = <&gpio_power_key>; 29 30 power-key { 31 gpios = <&gpx1 3 GPIO_ACTIVE_LOW>; 32 linux,code = <KEY_POWER>; 33 label = "power key"; 34 debounce-interval = <10>; 35 wakeup-source; 36 }; 37 }; 38 39 sound: sound { 40 compatible = "hardkernel,odroid-xu4-audio"; 41 42 cpu { 43 sound-dai = <&i2s0 0>; 44 }; 45 46 codec { 47 sound-dai = <&hdmi>, <&max98090>; 48 }; 49 }; 50 51 emmc_pwrseq: pwrseq { 52 pinctrl-0 = <&emmc_rstn>; 53 pinctrl-names = "default"; 54 compatible = "mmc-pwrseq-emmc"; 55 reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>; 56 }; 57 58 fixed-rate-clocks { 59 xxti { 60 compatible = "samsung,clock-xxti"; 61 clock-frequency = <0>; 62 }; 63 64 xusbxti { 65 compatible = "samsung,clock-xusbxti"; 66 clock-frequency = <24000000>; 67 }; 68 }; 69}; 70 71&bus_dmc { 72 devfreq-events = <&ppmu_dmc0_3>, <&ppmu_dmc1_3>; 73 vdd-supply = <&buck1_reg>; 74 status = "okay"; 75}; 76 77&bus_acp { 78 devfreq = <&bus_dmc>; 79 status = "okay"; 80}; 81 82&bus_c2c { 83 devfreq = <&bus_dmc>; 84 status = "okay"; 85}; 86 87&bus_leftbus { 88 devfreq-events = <&ppmu_leftbus_3>, <&ppmu_rightbus_3>; 89 vdd-supply = <&buck3_reg>; 90 status = "okay"; 91}; 92 93&bus_rightbus { 94 devfreq = <&bus_leftbus>; 95 status = "okay"; 96}; 97 98&bus_display { 99 devfreq = <&bus_leftbus>; 100 status = "okay"; 101}; 102 103&bus_fsys { 104 devfreq = <&bus_leftbus>; 105 status = "okay"; 106}; 107 108&bus_peri { 109 devfreq = <&bus_leftbus>; 110 status = "okay"; 111}; 112 113&bus_mfc { 114 devfreq = <&bus_leftbus>; 115 status = "okay"; 116}; 117 118&camera { 119 status = "okay"; 120 pinctrl-names = "default"; 121 pinctrl-0 = <>; 122}; 123 124&clock { 125 clocks = <&clock CLK_XUSBXTI>; 126 assigned-clocks = <&clock CLK_FOUT_EPLL>; 127 assigned-clock-rates = <45158401>; 128}; 129 130&clock_audss { 131 assigned-clocks = <&clock_audss EXYNOS_MOUT_AUDSS>, 132 <&clock_audss EXYNOS_MOUT_I2S>, 133 <&clock_audss EXYNOS_DOUT_SRP>, 134 <&clock_audss EXYNOS_DOUT_AUD_BUS>, 135 <&clock_audss EXYNOS_DOUT_I2S>; 136 137 assigned-clock-parents = <&clock CLK_FOUT_EPLL>, 138 <&clock_audss EXYNOS_MOUT_AUDSS>; 139 140 assigned-clock-rates = <0>, <0>, 141 <196608001>, 142 <(196608001 / 2)>, 143 <(196608001 / 8)>; 144}; 145 146&cpu0 { 147 cpu0-supply = <&buck2_reg>; 148}; 149 150&cpu0_opp_table { 151 opp-1000000000 { 152 opp-suspend; 153 }; 154 opp-800000000 { 155 /delete-property/opp-suspend; 156 }; 157}; 158 159&cpu_thermal { 160 cooling-maps { 161 cooling_map0: map0 { 162 /* Corresponds to 800MHz at freq_table */ 163 cooling-device = <&cpu0 7 7>, <&cpu1 7 7>, 164 <&cpu2 7 7>, <&cpu3 7 7>; 165 }; 166 cooling_map1: map1 { 167 /* Corresponds to 200MHz at freq_table */ 168 cooling-device = <&cpu0 13 13>, <&cpu1 13 13>, 169 <&cpu2 13 13>, <&cpu3 13 13>; 170 }; 171 }; 172}; 173 174&pinctrl_1 { 175 gpio_power_key: power-key-pins { 176 samsung,pins = "gpx1-3"; 177 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 178 }; 179 180 max77686_irq: max77686-irq-pins { 181 samsung,pins = "gpx3-2"; 182 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 183 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 184 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 185 }; 186 187 hdmi_hpd: hdmi-hpd-pins { 188 samsung,pins = "gpx3-7"; 189 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 190 }; 191 192 emmc_rstn: emmc-rstn-pins { 193 samsung,pins = "gpk1-2"; 194 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; 195 }; 196}; 197 198&ehci { 199 status = "okay"; 200}; 201 202&exynos_usbphy { 203 status = "okay"; 204}; 205 206&fimc_0 { 207 status = "okay"; 208 assigned-clocks = <&clock CLK_MOUT_FIMC0>, 209 <&clock CLK_SCLK_FIMC0>; 210 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>; 211 assigned-clock-rates = <0>, <176000000>; 212}; 213 214&fimc_1 { 215 status = "okay"; 216 assigned-clocks = <&clock CLK_MOUT_FIMC1>, 217 <&clock CLK_SCLK_FIMC1>; 218 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>; 219 assigned-clock-rates = <0>, <176000000>; 220}; 221 222&fimc_2 { 223 status = "okay"; 224 assigned-clocks = <&clock CLK_MOUT_FIMC2>, 225 <&clock CLK_SCLK_FIMC2>; 226 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>; 227 assigned-clock-rates = <0>, <176000000>; 228}; 229 230&fimc_3 { 231 status = "okay"; 232 assigned-clocks = <&clock CLK_MOUT_FIMC3>, 233 <&clock CLK_SCLK_FIMC3>; 234 assigned-clock-parents = <&clock CLK_MOUT_MPLL_USER_T>; 235 assigned-clock-rates = <0>, <176000000>; 236}; 237 238&gpu { 239 mali-supply = <&buck4_reg>; 240 status = "okay"; 241}; 242 243&hdmi { 244 hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; 245 pinctrl-names = "default"; 246 pinctrl-0 = <&hdmi_hpd>; 247 vdd-supply = <&ldo8_reg>; 248 vdd_osc-supply = <&ldo10_reg>; 249 vdd_pll-supply = <&ldo8_reg>; 250 ddc = <&i2c_2>; 251 status = "okay"; 252}; 253 254&hdmicec { 255 status = "okay"; 256}; 257 258&hsotg { 259 status = "okay"; 260 vusb_d-supply = <&ldo15_reg>; 261 vusb_a-supply = <&ldo12_reg>; 262}; 263 264&i2c_0 { 265 samsung,i2c-sda-delay = <100>; 266 samsung,i2c-max-bus-freq = <400000>; 267 status = "okay"; 268 269 usb3503: usb-hub@8 { 270 compatible = "smsc,usb3503"; 271 reg = <0x08>; 272 273 intn-gpios = <&gpx3 0 GPIO_ACTIVE_HIGH>; 274 connect-gpios = <&gpx3 4 GPIO_ACTIVE_HIGH>; 275 reset-gpios = <&gpx3 5 GPIO_ACTIVE_LOW>; 276 initial-mode = <1>; 277 }; 278 279 max77686: pmic@9 { 280 compatible = "maxim,max77686"; 281 interrupt-parent = <&gpx3>; 282 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; 283 pinctrl-names = "default"; 284 pinctrl-0 = <&max77686_irq>; 285 wakeup-source; 286 reg = <0x09>; 287 #clock-cells = <1>; 288 289 voltage-regulators { 290 ldo1_reg: LDO1 { 291 regulator-name = "VDD_ALIVE_1.0V"; 292 regulator-min-microvolt = <1000000>; 293 regulator-max-microvolt = <1000000>; 294 regulator-always-on; 295 }; 296 297 ldo2_reg: LDO2 { 298 regulator-name = "VDDQ_M1_2_1.8V"; 299 regulator-min-microvolt = <1800000>; 300 regulator-max-microvolt = <1800000>; 301 regulator-always-on; 302 }; 303 304 ldo3_reg: LDO3 { 305 regulator-name = "VDDQ_EXT_1.8V"; 306 regulator-min-microvolt = <1800000>; 307 regulator-max-microvolt = <1800000>; 308 regulator-always-on; 309 }; 310 311 ldo4_reg: LDO4 { 312 regulator-name = "VDDQ_MMC2_2.8V"; 313 regulator-min-microvolt = <2800000>; 314 regulator-max-microvolt = <2800000>; 315 regulator-boot-on; 316 }; 317 318 ldo5_reg: LDO5 { 319 regulator-name = "VDDQ_MMC1_3_1.8V"; 320 regulator-min-microvolt = <1800000>; 321 regulator-max-microvolt = <1800000>; 322 regulator-always-on; 323 regulator-boot-on; 324 }; 325 326 ldo6_reg: LDO6 { 327 regulator-name = "VDD10_MPLL_1.0V"; 328 regulator-min-microvolt = <1000000>; 329 regulator-max-microvolt = <1000000>; 330 regulator-always-on; 331 }; 332 333 ldo7_reg: LDO7 { 334 regulator-name = "VDD10_XPLL_1.0V"; 335 regulator-min-microvolt = <1000000>; 336 regulator-max-microvolt = <1000000>; 337 regulator-always-on; 338 }; 339 340 ldo8_reg: LDO8 { 341 regulator-name = "VDD10_HDMI_1.0V"; 342 regulator-min-microvolt = <1000000>; 343 regulator-max-microvolt = <1000000>; 344 }; 345 346 ldo10_reg: LDO10 { 347 regulator-name = "VDDQ_MIPIHSI_1.8V"; 348 regulator-min-microvolt = <1800000>; 349 regulator-max-microvolt = <1800000>; 350 }; 351 352 ldo11_reg: LDO11 { 353 regulator-name = "VDD18_ABB1_1.8V"; 354 regulator-min-microvolt = <1800000>; 355 regulator-max-microvolt = <1800000>; 356 regulator-always-on; 357 }; 358 359 ldo12_reg: LDO12 { 360 regulator-name = "VDD33_USB_3.3V"; 361 regulator-min-microvolt = <3300000>; 362 regulator-max-microvolt = <3300000>; 363 regulator-always-on; 364 regulator-boot-on; 365 }; 366 367 ldo13_reg: LDO13 { 368 regulator-name = "VDDQ_C2C_W_1.8V"; 369 regulator-min-microvolt = <1800000>; 370 regulator-max-microvolt = <1800000>; 371 regulator-always-on; 372 regulator-boot-on; 373 }; 374 375 ldo14_reg: LDO14 { 376 regulator-name = "VDD18_ABB0_2_1.8V"; 377 regulator-min-microvolt = <1800000>; 378 regulator-max-microvolt = <1800000>; 379 regulator-always-on; 380 regulator-boot-on; 381 }; 382 383 ldo15_reg: LDO15 { 384 regulator-name = "VDD10_HSIC_1.0V"; 385 regulator-min-microvolt = <1000000>; 386 regulator-max-microvolt = <1000000>; 387 regulator-always-on; 388 regulator-boot-on; 389 }; 390 391 ldo16_reg: LDO16 { 392 regulator-name = "VDD18_HSIC_1.8V"; 393 regulator-min-microvolt = <1800000>; 394 regulator-max-microvolt = <1800000>; 395 regulator-always-on; 396 regulator-boot-on; 397 }; 398 399 ldo20_reg: LDO20 { 400 regulator-name = "LDO20_1.8V"; 401 regulator-min-microvolt = <1800000>; 402 regulator-max-microvolt = <1800000>; 403 }; 404 405 ldo21_reg: LDO21 { 406 regulator-name = "TFLASH_2.8V"; 407 regulator-min-microvolt = <2800000>; 408 regulator-max-microvolt = <2800000>; 409 regulator-boot-on; 410 }; 411 412 ldo22_reg: LDO22 { 413 /* 414 * Only U3 uses it, so let it define the 415 * constraints 416 */ 417 regulator-name = "LDO22"; 418 regulator-boot-on; 419 }; 420 421 ldo25_reg: LDO25 { 422 regulator-name = "VDDQ_LCD_1.8V"; 423 regulator-min-microvolt = <1800000>; 424 regulator-max-microvolt = <1800000>; 425 regulator-always-on; 426 regulator-boot-on; 427 }; 428 429 buck1_reg: BUCK1 { 430 regulator-name = "VDD_MIF"; 431 regulator-min-microvolt = <900000>; 432 regulator-max-microvolt = <1100000>; 433 regulator-always-on; 434 regulator-boot-on; 435 }; 436 437 buck2_reg: BUCK2 { 438 regulator-name = "VDD_ARM"; 439 regulator-min-microvolt = <900000>; 440 regulator-max-microvolt = <1350000>; 441 regulator-always-on; 442 regulator-boot-on; 443 }; 444 445 buck3_reg: BUCK3 { 446 regulator-name = "VDD_INT"; 447 regulator-min-microvolt = <900000>; 448 regulator-max-microvolt = <1050000>; 449 regulator-always-on; 450 regulator-boot-on; 451 }; 452 453 buck4_reg: BUCK4 { 454 regulator-name = "VDD_G3D"; 455 regulator-min-microvolt = <900000>; 456 regulator-max-microvolt = <1100000>; 457 regulator-microvolt-offset = <50000>; 458 }; 459 460 buck5_reg: BUCK5 { 461 regulator-name = "VDDQ_CKEM1_2_1.2V"; 462 regulator-min-microvolt = <1200000>; 463 regulator-max-microvolt = <1200000>; 464 regulator-always-on; 465 regulator-boot-on; 466 }; 467 468 buck6_reg: BUCK6 { 469 regulator-name = "BUCK6_1.35V"; 470 regulator-min-microvolt = <1350000>; 471 regulator-max-microvolt = <1350000>; 472 regulator-always-on; 473 regulator-boot-on; 474 }; 475 476 buck7_reg: BUCK7 { 477 regulator-name = "BUCK7_2.0V"; 478 regulator-min-microvolt = <2000000>; 479 regulator-max-microvolt = <2000000>; 480 regulator-always-on; 481 }; 482 483 buck8_reg: BUCK8 { 484 /* 485 * Constraints set by specific board: X, 486 * X2 and U3. 487 */ 488 regulator-name = "BUCK8_2.8V"; 489 }; 490 }; 491 }; 492}; 493 494&i2c_1 { 495 status = "okay"; 496 max98090: audio-codec@10 { 497 compatible = "maxim,max98090"; 498 reg = <0x10>; 499 interrupt-parent = <&gpx0>; 500 interrupts = <0 IRQ_TYPE_NONE>; 501 clocks = <&i2s0 CLK_I2S_CDCLK>; 502 clock-names = "mclk"; 503 #sound-dai-cells = <0>; 504 }; 505}; 506 507&i2c_2 { 508 status = "okay"; 509}; 510 511&i2c_8 { 512 status = "okay"; 513}; 514 515&i2s0 { 516 pinctrl-0 = <&i2s0_bus>; 517 pinctrl-names = "default"; 518 status = "okay"; 519 assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>; 520 assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>; 521}; 522 523&mixer { 524 status = "okay"; 525}; 526 527&mshc_0 { 528 pinctrl-0 = <&sd4_clk &sd4_cmd &sd4_bus4 &sd4_bus8>; 529 pinctrl-names = "default"; 530 vmmc-supply = <&ldo20_reg>; 531 mmc-pwrseq = <&emmc_pwrseq>; 532 status = "okay"; 533 534 broken-cd; 535 card-detect-delay = <200>; 536 samsung,dw-mshc-ciu-div = <3>; 537 samsung,dw-mshc-sdr-timing = <2 3>; 538 samsung,dw-mshc-ddr-timing = <1 2>; 539 bus-width = <8>; 540 cap-mmc-highspeed; 541}; 542 543&rtc { 544 status = "okay"; 545 clocks = <&clock CLK_RTC>, <&max77686 MAX77686_CLK_AP>; 546 clock-names = "rtc", "rtc_src"; 547}; 548 549&sdhci_2 { 550 bus-width = <4>; 551 pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus4>; 552 pinctrl-names = "default"; 553 vmmc-supply = <&ldo21_reg>; 554 vqmmc-supply = <&ldo4_reg>; 555 cd-gpios = <&gpk2 2 GPIO_ACTIVE_LOW>; 556 status = "okay"; 557}; 558 559&serial_0 { 560 status = "okay"; 561}; 562 563&serial_1 { 564 status = "okay"; 565}; 566 567&tmu { 568 vtmu-supply = <&ldo10_reg>; 569 status = "okay"; 570}; 571