summaryrefslogtreecommitdiffstats
path: root/dts/src/arm/exynos5422-cpu-thermal.dtsi
blob: 3e4c4ad96d6379a733177e52d3c565f3a62d4ae7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
 * Device tree sources for Exynos5422 thermal zone
 *
 * Copyright (c) 2015 Lukasz Majewski <l.majewski@samsung.com>
 *			Anand Moon <linux.amoon@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 *
 */

#include <dt-bindings/thermal/thermal.h>

/ {
	thermal-zones {
		cpu0_thermal: cpu0-thermal {
			thermal-sensors = <&tmu_cpu0 0>;
			polling-delay-passive = <250>;
			polling-delay = <0>;
			trips {
				cpu_alert0: cpu-alert-0 {
					temperature = <50000>; /* millicelsius */
					hysteresis = <5000>; /* millicelsius */
					type = "active";
				};
				cpu_alert1: cpu-alert-1 {
					temperature = <60000>; /* millicelsius */
					hysteresis = <5000>; /* millicelsius */
					type = "active";
				};
				cpu_alert2: cpu-alert-2 {
					temperature = <70000>; /* millicelsius */
					hysteresis = <5000>; /* millicelsius */
					type = "active";
				};
				cpu_crit0: cpu-crit-0 {
					temperature = <120000>; /* millicelsius */
					hysteresis = <0>; /* millicelsius */
					type = "critical";
				};
				/*
				 * Exyunos542x support only 4 trip-points
				 * so for these polling mode is required.
				 * Start polling at temperature level of last
				 * interrupt-driven trip: cpu_alert2
				 */
				cpu_alert3: cpu-alert-3 {
					temperature = <70000>; /* millicelsius */
					hysteresis = <10000>; /* millicelsius */
					type = "passive";
				};
				cpu_alert4: cpu-alert-4 {
					temperature = <85000>; /* millicelsius */
					hysteresis = <10000>; /* millicelsius */
					type = "passive";
				};

			};
			cooling-maps {
				map0 {
				     trip = <&cpu_alert0>;
				     cooling-device = <&fan0 0 1>;
				};
				map1 {
				     trip = <&cpu_alert1>;
				     cooling-device = <&fan0 1 2>;
				};
				map2 {
				     trip = <&cpu_alert2>;
				     cooling-device = <&fan0 2 3>;
				};
				/*
				 * When reaching cpu_alert3, reduce CPU
				 * by 2 steps. On Exynos5422/5800 that would
				 * be: 1500 MHz and 1100 MHz.
				 */
				map3 {
				     trip = <&cpu_alert3>;
				     cooling-device = <&cpu0 0 2>;
				};
				map4 {
				     trip = <&cpu_alert3>;
				     cooling-device = <&cpu4 0 2>;
				};

				/*
				 * When reaching cpu_alert4, reduce CPU
				 * further, down to 600 MHz (11 steps for big,
				 * 7 steps for LITTLE).
				 */
				map5 {
				     trip = <&cpu_alert4>;
				     cooling-device = <&cpu0 3 7>;
				};
				map6 {
				     trip = <&cpu_alert4>;
				     cooling-device = <&cpu4 3 11>;
				};
			};
		};
	};
};