| // SPDX-License-Identifier: GPL-2.0 |
| /* |
| * Hardkernel Odroid XU3/XU3-Lite/XU4 boards common device tree source |
| * |
| * Copyright (c) 2013 Samsung Electronics Co., Ltd. |
| * http://www.samsung.com |
| * Copyright (c) 2014 Collabora Ltd. |
| * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com> |
| * Anand Moon <linux.amoon@gmail.com> |
| */ |
| |
| #include <dt-bindings/input/input.h> |
| #include "exynos5422-odroid-core.dtsi" |
| |
| / { |
| gpio_keys { |
| compatible = "gpio-keys"; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&power_key>; |
| |
| power_key { |
| /* |
| * The power button (SW2) is connected to the PWRON |
| * pin (active high) of the S2MPS11 PMIC, which acts |
| * as a 16ms debouce filter and signal inverter with |
| * output on ONOB pin (active low). ONOB PMIC pin is |
| * then connected to XEINT3 SoC pin. |
| */ |
| gpios = <&gpx0 3 GPIO_ACTIVE_LOW>; |
| linux,code = <KEY_POWER>; |
| label = "power key"; |
| debounce-interval = <0>; |
| wakeup-source; |
| }; |
| }; |
| |
| emmc_pwrseq: pwrseq { |
| pinctrl-0 = <&emmc_nrst_pin>; |
| pinctrl-names = "default"; |
| compatible = "mmc-pwrseq-emmc"; |
| reset-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>; |
| }; |
| |
| fan0: pwm-fan { |
| compatible = "pwm-fan"; |
| pwms = <&pwm 0 20972 0>; |
| #cooling-cells = <2>; |
| cooling-levels = <0 130 170 230>; |
| }; |
| |
| thermal-zones { |
| cpu0_thermal: cpu0-thermal { |
| thermal-sensors = <&tmu_cpu0 0>; |
| polling-delay-passive = <250>; |
| polling-delay = <0>; |
| trips { |
| cpu0_alert0: cpu-alert-0 { |
| temperature = <50000>; /* millicelsius */ |
| hysteresis = <5000>; /* millicelsius */ |
| type = "active"; |
| }; |
| cpu0_alert1: cpu-alert-1 { |
| temperature = <60000>; /* millicelsius */ |
| hysteresis = <5000>; /* millicelsius */ |
| type = "active"; |
| }; |
| cpu0_alert2: cpu-alert-2 { |
| temperature = <70000>; /* millicelsius */ |
| hysteresis = <5000>; /* millicelsius */ |
| type = "active"; |
| }; |
| cpu0_crit0: cpu-crit-0 { |
| temperature = <120000>; /* millicelsius */ |
| hysteresis = <0>; /* millicelsius */ |
| type = "critical"; |
| }; |
| /* |
| * Exynos542x supports only 4 trip-points |
| * so for these polling mode is required. |
| * Start polling at temperature level of last |
| * interrupt-driven trip: cpu0_alert2 |
| */ |
| cpu0_alert3: cpu-alert-3 { |
| temperature = <70000>; /* millicelsius */ |
| hysteresis = <10000>; /* millicelsius */ |
| type = "passive"; |
| }; |
| cpu0_alert4: cpu-alert-4 { |
| temperature = <85000>; /* millicelsius */ |
| hysteresis = <10000>; /* millicelsius */ |
| type = "passive"; |
| }; |
| }; |
| cooling-maps { |
| map0 { |
| trip = <&cpu0_alert0>; |
| cooling-device = <&fan0 0 1>; |
| }; |
| map1 { |
| trip = <&cpu0_alert1>; |
| cooling-device = <&fan0 1 2>; |
| }; |
| map2 { |
| trip = <&cpu0_alert2>; |
| cooling-device = <&fan0 2 3>; |
| }; |
| /* |
| * When reaching cpu0_alert3, reduce CPU |
| * by 2 steps. On Exynos5422/5800 that would |
| * be: 1600 MHz and 1100 MHz. |
| */ |
| map3 { |
| trip = <&cpu0_alert3>; |
| cooling-device = <&cpu0 0 2>, |
| <&cpu1 0 2>, |
| <&cpu2 0 2>, |
| <&cpu3 0 2>, |
| <&cpu4 0 2>, |
| <&cpu5 0 2>, |
| <&cpu6 0 2>, |
| <&cpu7 0 2>; |
| }; |
| /* |
| * When reaching cpu0_alert4, reduce CPU |
| * further, down to 600 MHz (12 steps for big, |
| * 7 steps for LITTLE). |
| */ |
| map4 { |
| trip = <&cpu0_alert4>; |
| cooling-device = <&cpu0 3 7>, |
| <&cpu1 3 7>, |
| <&cpu2 3 7>, |
| <&cpu3 3 7>, |
| <&cpu4 3 12>, |
| <&cpu5 3 12>, |
| <&cpu6 3 12>, |
| <&cpu7 3 12>; |
| }; |
| }; |
| }; |
| cpu1_thermal: cpu1-thermal { |
| thermal-sensors = <&tmu_cpu1 0>; |
| polling-delay-passive = <250>; |
| polling-delay = <0>; |
| trips { |
| cpu1_alert0: cpu-alert-0 { |
| temperature = <50000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu1_alert1: cpu-alert-1 { |
| temperature = <60000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu1_alert2: cpu-alert-2 { |
| temperature = <70000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu1_crit0: cpu-crit-0 { |
| temperature = <120000>; |
| hysteresis = <0>; |
| type = "critical"; |
| }; |
| cpu1_alert3: cpu-alert-3 { |
| temperature = <70000>; |
| hysteresis = <10000>; |
| type = "passive"; |
| }; |
| cpu1_alert4: cpu-alert-4 { |
| temperature = <85000>; |
| hysteresis = <10000>; |
| type = "passive"; |
| }; |
| }; |
| cooling-maps { |
| map0 { |
| trip = <&cpu1_alert0>; |
| cooling-device = <&fan0 0 1>; |
| }; |
| map1 { |
| trip = <&cpu1_alert1>; |
| cooling-device = <&fan0 1 2>; |
| }; |
| map2 { |
| trip = <&cpu1_alert2>; |
| cooling-device = <&fan0 2 3>; |
| }; |
| map3 { |
| trip = <&cpu1_alert3>; |
| cooling-device = <&cpu0 0 2>, |
| <&cpu1 0 2>, |
| <&cpu2 0 2>, |
| <&cpu3 0 2>, |
| <&cpu4 0 2>, |
| <&cpu5 0 2>, |
| <&cpu6 0 2>, |
| <&cpu7 0 2>; |
| }; |
| map4 { |
| trip = <&cpu1_alert4>; |
| cooling-device = <&cpu0 3 7>, |
| <&cpu1 3 7>, |
| <&cpu2 3 7>, |
| <&cpu3 3 7>, |
| <&cpu4 3 12>, |
| <&cpu5 3 12>, |
| <&cpu6 3 12>, |
| <&cpu7 3 12>; |
| }; |
| }; |
| }; |
| cpu2_thermal: cpu2-thermal { |
| thermal-sensors = <&tmu_cpu2 0>; |
| polling-delay-passive = <250>; |
| polling-delay = <0>; |
| trips { |
| cpu2_alert0: cpu-alert-0 { |
| temperature = <50000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu2_alert1: cpu-alert-1 { |
| temperature = <60000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu2_alert2: cpu-alert-2 { |
| temperature = <70000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu2_crit0: cpu-crit-0 { |
| temperature = <120000>; |
| hysteresis = <0>; |
| type = "critical"; |
| }; |
| cpu2_alert3: cpu-alert-3 { |
| temperature = <70000>; |
| hysteresis = <10000>; |
| type = "passive"; |
| }; |
| cpu2_alert4: cpu-alert-4 { |
| temperature = <85000>; |
| hysteresis = <10000>; |
| type = "passive"; |
| }; |
| }; |
| cooling-maps { |
| map0 { |
| trip = <&cpu2_alert0>; |
| cooling-device = <&fan0 0 1>; |
| }; |
| map1 { |
| trip = <&cpu2_alert1>; |
| cooling-device = <&fan0 1 2>; |
| }; |
| map2 { |
| trip = <&cpu2_alert2>; |
| cooling-device = <&fan0 2 3>; |
| }; |
| map3 { |
| trip = <&cpu2_alert3>; |
| cooling-device = <&cpu0 0 2>, |
| <&cpu1 0 2>, |
| <&cpu2 0 2>, |
| <&cpu3 0 2>, |
| <&cpu4 0 2>, |
| <&cpu5 0 2>, |
| <&cpu6 0 2>, |
| <&cpu7 0 2>; |
| }; |
| map4 { |
| trip = <&cpu2_alert4>; |
| cooling-device = <&cpu0 3 7>, |
| <&cpu1 3 7>, |
| <&cpu2 3 7>, |
| <&cpu3 3 7>, |
| <&cpu4 3 12>, |
| <&cpu5 3 12>, |
| <&cpu6 3 12>, |
| <&cpu7 3 12>; |
| }; |
| }; |
| }; |
| cpu3_thermal: cpu3-thermal { |
| thermal-sensors = <&tmu_cpu3 0>; |
| polling-delay-passive = <250>; |
| polling-delay = <0>; |
| trips { |
| cpu3_alert0: cpu-alert-0 { |
| temperature = <50000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu3_alert1: cpu-alert-1 { |
| temperature = <60000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu3_alert2: cpu-alert-2 { |
| temperature = <70000>; |
| hysteresis = <5000>; |
| type = "active"; |
| }; |
| cpu3_crit0: cpu-crit-0 { |
| temperature = <120000>; |
| hysteresis = <0>; |
| type = "critical"; |
| }; |
| cpu3_alert3: cpu-alert-3 { |
| temperature = <70000>; |
| hysteresis = <10000>; |
| type = "passive"; |
| }; |
| cpu3_alert4: cpu-alert-4 { |
| temperature = <85000>; |
| hysteresis = <10000>; |
| type = "passive"; |
| }; |
| }; |
| cooling-maps { |
| map0 { |
| trip = <&cpu3_alert0>; |
| cooling-device = <&fan0 0 1>; |
| }; |
| map1 { |
| trip = <&cpu3_alert1>; |
| cooling-device = <&fan0 1 2>; |
| }; |
| map2 { |
| trip = <&cpu3_alert2>; |
| cooling-device = <&fan0 2 3>; |
| }; |
| map3 { |
| trip = <&cpu3_alert3>; |
| cooling-device = <&cpu0 0 2>, |
| <&cpu1 0 2>, |
| <&cpu2 0 2>, |
| <&cpu3 0 2>, |
| <&cpu4 0 2>, |
| <&cpu5 0 2>, |
| <&cpu6 0 2>, |
| <&cpu7 0 2>; |
| }; |
| map4 { |
| trip = <&cpu3_alert4>; |
| cooling-device = <&cpu0 3 7>, |
| <&cpu1 3 7>, |
| <&cpu2 3 7>, |
| <&cpu3 3 7>, |
| <&cpu4 3 12>, |
| <&cpu5 3 12>, |
| <&cpu6 3 12>, |
| <&cpu7 3 12>; |
| }; |
| }; |
| }; |
| }; |
| }; |
| |
| &buck10_reg { |
| /* Supplies vmmc-supply of mmc_0 */ |
| regulator-always-on; |
| regulator-boot-on; |
| }; |
| |
| &hdmi { |
| status = "okay"; |
| ddc = <&i2c_2>; |
| hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&hdmi_hpd_irq>; |
| |
| vdd_osc-supply = <&ldo7_reg>; |
| vdd_pll-supply = <&ldo6_reg>; |
| vdd-supply = <&ldo6_reg>; |
| }; |
| |
| &hdmicec { |
| status = "okay"; |
| needs-hpd; |
| }; |
| |
| &i2c_2 { |
| samsung,i2c-sda-delay = <100>; |
| samsung,i2c-max-bus-freq = <66000>; |
| /* used by HDMI DDC */ |
| status = "okay"; |
| }; |
| |
| &ldo26_reg { |
| regulator-min-microvolt = <3000000>; |
| regulator-max-microvolt = <3000000>; |
| regulator-always-on; |
| }; |
| |
| &mixer { |
| status = "okay"; |
| }; |
| |
| &mmc_0 { |
| status = "okay"; |
| mmc-pwrseq = <&emmc_pwrseq>; |
| card-detect-delay = <200>; |
| samsung,dw-mshc-ciu-div = <3>; |
| samsung,dw-mshc-sdr-timing = <0 4>; |
| samsung,dw-mshc-ddr-timing = <0 2>; |
| samsung,dw-mshc-hs400-timing = <0 2>; |
| samsung,read-strobe-delay = <90>; |
| pinctrl-names = "default"; |
| pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8 &sd0_cd &sd0_rclk>; |
| bus-width = <8>; |
| cap-mmc-highspeed; |
| mmc-hs200-1_8v; |
| mmc-hs400-1_8v; |
| max-frequency = <200000000>; |
| vmmc-supply = <&ldo18_reg>; |
| vqmmc-supply = <&ldo3_reg>; |
| }; |
| |
| &pinctrl_0 { |
| power_key: power-key { |
| samsung,pins = "gpx0-3"; |
| samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; |
| samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; |
| samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; |
| }; |
| |
| hdmi_hpd_irq: hdmi-hpd-irq { |
| samsung,pins = "gpx3-7"; |
| samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; |
| samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; |
| samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; |
| }; |
| }; |
| |
| &pinctrl_1 { |
| emmc_nrst_pin: emmc-nrst { |
| samsung,pins = "gpd1-0"; |
| samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; |
| samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>; |
| samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>; |
| }; |
| }; |