| // 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>; | 
|             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 | 
|                  * (usually) be: 1800 MHz and 1200 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 (14 steps for big, | 
|                  * 8 steps for LITTLE). | 
|                  */ | 
|                 cpu0_cooling_map4: map4 { | 
|                     trip = <&cpu0_alert4>; | 
|                     cooling-device = <&cpu0 3 8>, | 
|                              <&cpu1 3 8>, | 
|                              <&cpu2 3 8>, | 
|                              <&cpu3 3 8>, | 
|                              <&cpu4 3 14>, | 
|                              <&cpu5 3 14>, | 
|                              <&cpu6 3 14>, | 
|                              <&cpu7 3 14>; | 
|                 }; | 
|             }; | 
|         }; | 
|         cpu1_thermal: cpu1-thermal { | 
|             thermal-sensors = <&tmu_cpu1>; | 
|             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>; | 
|                 }; | 
|                 cpu1_cooling_map4: map4 { | 
|                     trip = <&cpu1_alert4>; | 
|                     cooling-device = <&cpu0 3 8>, | 
|                              <&cpu1 3 8>, | 
|                              <&cpu2 3 8>, | 
|                              <&cpu3 3 8>, | 
|                              <&cpu4 3 14>, | 
|                              <&cpu5 3 14>, | 
|                              <&cpu6 3 14>, | 
|                              <&cpu7 3 14>; | 
|                 }; | 
|             }; | 
|         }; | 
|         cpu2_thermal: cpu2-thermal { | 
|             thermal-sensors = <&tmu_cpu2>; | 
|             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>; | 
|                 }; | 
|                 cpu2_cooling_map4: map4 { | 
|                     trip = <&cpu2_alert4>; | 
|                     cooling-device = <&cpu0 3 8>, | 
|                              <&cpu1 3 8>, | 
|                              <&cpu2 3 8>, | 
|                              <&cpu3 3 8>, | 
|                              <&cpu4 3 14>, | 
|                              <&cpu5 3 14>, | 
|                              <&cpu6 3 14>, | 
|                              <&cpu7 3 14>; | 
|                 }; | 
|             }; | 
|         }; | 
|         cpu3_thermal: cpu3-thermal { | 
|             thermal-sensors = <&tmu_cpu3>; | 
|             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>; | 
|                 }; | 
|                 cpu3_cooling_map4: map4 { | 
|                     trip = <&cpu3_alert4>; | 
|                     cooling-device = <&cpu0 3 8>, | 
|                              <&cpu1 3 8>, | 
|                              <&cpu2 3 8>, | 
|                              <&cpu3 3 8>, | 
|                              <&cpu4 3 14>, | 
|                              <&cpu5 3 14>, | 
|                              <&cpu6 3 14>, | 
|                              <&cpu7 3 14>; | 
|                 }; | 
|             }; | 
|         }; | 
|         gpu_thermal: gpu-thermal { | 
|             thermal-sensors = <&tmu_gpu>; | 
|             polling-delay-passive = <250>; | 
|             polling-delay = <0>; | 
|             trips { | 
|                 gpu_alert0: gpu-alert-0 { | 
|                     temperature = <50000>; | 
|                     hysteresis = <5000>; | 
|                     type = "active"; | 
|                 }; | 
|                 gpu_alert1: gpu-alert-1 { | 
|                     temperature = <60000>; | 
|                     hysteresis = <5000>; | 
|                     type = "active"; | 
|                 }; | 
|                 gpu_alert2: gpu-alert-2 { | 
|                     temperature = <70000>; | 
|                     hysteresis = <5000>; | 
|                     type = "active"; | 
|                 }; | 
|                 gpu_crit0: gpu-crit-0 { | 
|                     temperature = <120000>; | 
|                     hysteresis = <0>; | 
|                     type = "critical"; | 
|                 }; | 
|                 gpu_alert3: gpu-alert-3 { | 
|                     temperature = <70000>; | 
|                     hysteresis = <10000>; | 
|                     type = "passive"; | 
|                 }; | 
|                 gpu_alert4: gpu-alert-4 { | 
|                     temperature = <85000>; | 
|                     hysteresis = <10000>; | 
|                     type = "passive"; | 
|                 }; | 
|             }; | 
|             cooling-maps { | 
|                 map0 { | 
|                     trip = <&gpu_alert0>; | 
|                     cooling-device = <&fan0 0 1>; | 
|                 }; | 
|                 map1 { | 
|                     trip = <&gpu_alert1>; | 
|                     cooling-device = <&fan0 1 2>; | 
|                 }; | 
|                 map2 { | 
|                     trip = <&gpu_alert2>; | 
|                     cooling-device = <&fan0 2 3>; | 
|                 }; | 
|                 map3 { | 
|                     trip = <&gpu_alert3>; | 
|                     cooling-device = <&gpu 0 2>; | 
|                 }; | 
|                 map4 { | 
|                     trip = <&gpu_alert4>; | 
|                     cooling-device = <&gpu 3 6>; | 
|                 }; | 
|             }; | 
|         }; | 
|     }; | 
| }; | 
|   | 
| &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>; | 
|     }; | 
| }; |