2017-12-25 11:40:09 +01:00
// SPDX-License-Identifier: GPL-2.0
2015-05-25 21:13:17 +09:00
/*
2018-11-13 20:46:26 +01:00
* Hardkernel Odroid XU3/XU3-Lite/XU4 boards common device tree source
2015-05-25 21:13:17 +09:00
*
* Copyright (c) 2013 Samsung Electronics Co., Ltd.
* http://www.samsung.com
2016-05-09 08:19:49 +02:00
* Copyright (c) 2014 Collabora Ltd.
* Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com>
* Anand Moon <linux.amoon@gmail.com>
2017-12-25 11:40:09 +01:00
*/
2015-05-25 21:13:17 +09:00
2017-09-12 13:57:54 +02:00
#include <dt-bindings/input/input.h>
2017-10-02 08:39:34 +02:00
#include "exynos5422-odroid-core.dtsi"
2015-05-25 21:13:17 +09:00
/ {
2017-09-12 13:57:54 +02:00
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;
};
};
2015-05-25 21:13:17 +09:00
emmc_pwrseq: pwrseq {
pinctrl-0 = <&emmc_nrst_pin>;
pinctrl-names = "default";
compatible = "mmc-pwrseq-emmc";
2015-10-08 07:39:58 +09:00
reset-gpios = <&gpd1 0 GPIO_ACTIVE_LOW>;
2015-05-25 21:13:17 +09:00
};
2015-06-15 12:23:20 +09:30
fan0: pwm-fan {
compatible = "pwm-fan";
pwms = <&pwm 0 20972 0>;
#cooling-cells = <2>;
cooling-levels = <0 130 170 230>;
};
2016-05-09 08:19:49 +02:00
thermal-zones {
cpu0_thermal: cpu0-thermal {
thermal-sensors = <&tmu_cpu0 0>;
polling-delay-passive = <250>;
polling-delay = <0>;
trips {
2017-09-07 18:10:00 +02:00
cpu0_alert0: cpu-alert-0 {
2016-05-09 08:19:49 +02:00
temperature = <50000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "active";
};
2017-09-07 18:10:00 +02:00
cpu0_alert1: cpu-alert-1 {
2016-05-09 08:19:49 +02:00
temperature = <60000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "active";
};
2017-09-07 18:10:00 +02:00
cpu0_alert2: cpu-alert-2 {
2016-05-09 08:19:49 +02:00
temperature = <70000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "active";
};
2017-09-07 18:10:00 +02:00
cpu0_crit0: cpu-crit-0 {
2016-05-09 08:19:49 +02:00
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
2017-09-07 18:10:00 +02:00
* interrupt-driven trip: cpu0_alert2
2016-05-09 08:19:49 +02:00
*/
2017-09-07 18:10:00 +02:00
cpu0_alert3: cpu-alert-3 {
2016-05-09 08:19:49 +02:00
temperature = <70000>; /* millicelsius */
hysteresis = <10000>; /* millicelsius */
type = "passive";
};
2017-09-07 18:10:00 +02:00
cpu0_alert4: cpu-alert-4 {
2016-05-09 08:19:49 +02:00
temperature = <85000>; /* millicelsius */
hysteresis = <10000>; /* millicelsius */
type = "passive";
};
};
cooling-maps {
map0 {
2017-09-07 18:10:00 +02:00
trip = <&cpu0_alert0>;
2016-05-09 08:19:49 +02:00
cooling-device = <&fan0 0 1>;
};
map1 {
2017-09-07 18:10:00 +02:00
trip = <&cpu0_alert1>;
2016-05-09 08:19:49 +02:00
cooling-device = <&fan0 1 2>;
};
map2 {
2017-09-07 18:10:00 +02:00
trip = <&cpu0_alert2>;
2016-05-09 08:19:49 +02:00
cooling-device = <&fan0 2 3>;
};
/*
2017-09-07 18:10:00 +02:00
* When reaching cpu0_alert3, reduce CPU
2016-05-09 08:19:49 +02:00
* by 2 steps. On Exynos5422/5800 that would
* be: 1600 MHz and 1100 MHz.
*/
map3 {
2017-09-07 18:10:00 +02:00
trip = <&cpu0_alert3>;
2018-11-16 15:31:10 +05:30
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>;
2016-05-09 08:19:49 +02:00
};
/*
2017-09-07 18:10:00 +02:00
* When reaching cpu0_alert4, reduce CPU
* further, down to 600 MHz (12 steps for big,
2016-05-09 08:19:49 +02:00
* 7 steps for LITTLE).
*/
2018-11-16 15:31:10 +05:30
map4 {
2017-09-07 18:10:00 +02:00
trip = <&cpu0_alert4>;
2018-11-16 15:31:10 +05:30
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>;
2017-09-07 18:10:00 +02:00
};
};
};
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>;
2018-11-16 15:31:10 +05:30
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>;
2017-09-07 18:10:00 +02:00
};
map4 {
trip = <&cpu1_alert4>;
2018-11-16 15:31:10 +05:30
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>;
2017-09-07 18:10:00 +02:00
};
};
};
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>;
2018-11-16 15:31:10 +05:30
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>;
2017-09-07 18:10:00 +02:00
};
map4 {
trip = <&cpu2_alert4>;
2018-11-16 15:31:10 +05:30
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>;
2017-09-07 18:10:00 +02:00
};
};
};
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>;
2018-11-16 15:31:10 +05:30
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>;
2017-09-07 18:10:00 +02:00
};
map4 {
trip = <&cpu3_alert4>;
2018-11-16 15:31:10 +05:30
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>;
2016-05-09 08:19:49 +02:00
};
};
};
};
2015-05-25 21:13:17 +09:00
};
2019-06-20 20:34:52 +02:00
&buck10_reg {
/* Supplies vmmc-supply of mmc_0 */
regulator-always-on;
regulator-boot-on;
};
2015-05-25 21:13:17 +09:00
&hdmi {
status = "okay";
2017-09-15 11:11:21 +02:00
ddc = <&i2c_2>;
2016-08-24 22:07:16 +09:00
hpd-gpios = <&gpx3 7 GPIO_ACTIVE_HIGH>;
2015-05-25 21:13:17 +09:00
pinctrl-names = "default";
pinctrl-0 = <&hdmi_hpd_irq>;
vdd_osc-supply = <&ldo7_reg>;
vdd_pll-supply = <&ldo6_reg>;
vdd-supply = <&ldo6_reg>;
};
2017-05-31 13:00:17 +02:00
&hdmicec {
status = "okay";
2017-08-23 18:24:50 +02:00
needs-hpd;
2017-05-31 13:00:17 +02:00
};
2015-05-25 21:13:17 +09:00
&i2c_2 {
samsung,i2c-sda-delay = <100>;
samsung,i2c-max-bus-freq = <66000>;
2017-09-15 11:11:21 +02:00
/* used by HDMI DDC */
2015-05-25 21:13:17 +09:00
status = "okay";
};
2018-08-06 18:09:32 +02:00
&ldo26_reg {
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-always-on;
};
2017-09-15 11:11:23 +02:00
&mixer {
status = "okay";
};
2015-05-25 21:13:17 +09:00
&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;
2018-09-27 14:07:37 +00:00
max-frequency = <200000000>;
2016-04-04 11:55:13 +02:00
vmmc-supply = <&ldo18_reg>;
vqmmc-supply = <&ldo3_reg>;
2015-05-25 21:13:17 +09:00
};
&pinctrl_0 {
2017-09-12 13:57:54 +02:00
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>;
};
2015-05-25 21:13:17 +09:00
hdmi_hpd_irq: hdmi-hpd-irq {
samsung,pins = "gpx3-7";
2016-09-04 13:04:14 +02:00
samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
2015-05-25 21:13:17 +09:00
};
};
&pinctrl_1 {
emmc_nrst_pin: emmc-nrst {
samsung,pins = "gpd1-0";
2016-09-04 13:04:14 +02:00
samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
2015-05-25 21:13:17 +09:00
};
};