Commit e740731d authored by Willy Wolff's avatar Willy Wolff Committed by Krzysztof Kozlowski

ARM: dts: exynos: fix incomplete Odroid-XU3/4 thermal-zones definition

Odroid XU3/4 boards have thermal sensors per 4 pairs of A7+A15
cores but currently there is only one thermal-zone (including
cooling maps) defined (for the first pair of cores - the first
core of the A7 cluster and the first core of A15 cluster) so
i.e. if the task is running on any of A15 cores but the first
one, such core can reach high temperature without any proper
cooling action.

Fix it by adding missing thermal-zones definitions.

Also while at it fix the number of steps in cpufreq cooling for
cpu4 (11 steps for A15 corresponds to 700MHz, for 600MHz 12 steps
should be used).
Signed-off-by: default avatarWilly Wolff <willy.mh.wolff@gmail.com>
[b.zolnierkie: rewrote patch subject & description + minor fixups]
Signed-off-by: default avatarBartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
parent 2bd6bf03
......@@ -63,22 +63,22 @@ cpu0_thermal: cpu0-thermal {
polling-delay-passive = <250>;
polling-delay = <0>;
trips {
cpu_alert0: cpu-alert-0 {
cpu0_alert0: cpu-alert-0 {
temperature = <50000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "active";
};
cpu_alert1: cpu-alert-1 {
cpu0_alert1: cpu-alert-1 {
temperature = <60000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "active";
};
cpu_alert2: cpu-alert-2 {
cpu0_alert2: cpu-alert-2 {
temperature = <70000>; /* millicelsius */
hysteresis = <5000>; /* millicelsius */
type = "active";
};
cpu_crit0: cpu-crit-0 {
cpu0_crit0: cpu-crit-0 {
temperature = <120000>; /* millicelsius */
hysteresis = <0>; /* millicelsius */
type = "critical";
......@@ -87,59 +87,258 @@ cpu_crit0: cpu-crit-0 {
* Exynos542x supports only 4 trip-points
* so for these polling mode is required.
* Start polling at temperature level of last
* interrupt-driven trip: cpu_alert2
* interrupt-driven trip: cpu0_alert2
*/
cpu_alert3: cpu-alert-3 {
cpu0_alert3: cpu-alert-3 {
temperature = <70000>; /* millicelsius */
hysteresis = <10000>; /* millicelsius */
type = "passive";
};
cpu_alert4: cpu-alert-4 {
cpu0_alert4: cpu-alert-4 {
temperature = <85000>; /* millicelsius */
hysteresis = <10000>; /* millicelsius */
type = "passive";
};
};
cooling-maps {
map0 {
trip = <&cpu_alert0>;
trip = <&cpu0_alert0>;
cooling-device = <&fan0 0 1>;
};
map1 {
trip = <&cpu_alert1>;
trip = <&cpu0_alert1>;
cooling-device = <&fan0 1 2>;
};
map2 {
trip = <&cpu_alert2>;
trip = <&cpu0_alert2>;
cooling-device = <&fan0 2 3>;
};
/*
* When reaching cpu_alert3, reduce CPU
* When reaching cpu0_alert3, reduce CPU
* by 2 steps. On Exynos5422/5800 that would
* be: 1600 MHz and 1100 MHz.
*/
map3 {
trip = <&cpu_alert3>;
trip = <&cpu0_alert3>;
cooling-device = <&cpu0 0 2>;
};
map4 {
trip = <&cpu_alert3>;
trip = <&cpu0_alert3>;
cooling-device = <&cpu4 0 2>;
};
/*
* When reaching cpu_alert4, reduce CPU
* further, down to 600 MHz (11 steps for big,
* When reaching cpu0_alert4, reduce CPU
* further, down to 600 MHz (12 steps for big,
* 7 steps for LITTLE).
*/
map5 {
trip = <&cpu_alert4>;
trip = <&cpu0_alert4>;
cooling-device = <&cpu0 3 7>;
};
map6 {
trip = <&cpu0_alert4>;
cooling-device = <&cpu4 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>;
};
map4 {
trip = <&cpu1_alert3>;
cooling-device = <&cpu4 0 2>;
};
map5 {
trip = <&cpu1_alert4>;
cooling-device = <&cpu0 3 7>;
};
map6 {
trip = <&cpu1_alert4>;
cooling-device = <&cpu4 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>;
};
map4 {
trip = <&cpu2_alert3>;
cooling-device = <&cpu4 0 2>;
};
map5 {
trip = <&cpu2_alert4>;
cooling-device = <&cpu0 3 7>;
};
map6 {
trip = <&cpu2_alert4>;
cooling-device = <&cpu4 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>;
};
map4 {
trip = <&cpu3_alert3>;
cooling-device = <&cpu4 0 2>;
};
map5 {
trip = <&cpu3_alert4>;
cooling-device = <&cpu0 3 7>;
};
map6 {
trip = <&cpu_alert4>;
cooling-device = <&cpu4 3 11>;
trip = <&cpu3_alert4>;
cooling-device = <&cpu4 3 12>;
};
};
};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment