summaryrefslogtreecommitdiffstats
path: root/kernel/Documentation/devicetree/bindings/thermal/exynos-thermal.txt
blob: 695150a4136bb3c3291e94fcbf7f7cdddfe6045e (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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
* Exynos Thermal Management Unit (TMU)

** Required properties:

- compatible : One of the following:
	       "samsung,exynos3250-tmu"
	       "samsung,exynos4412-tmu"
	       "samsung,exynos4210-tmu"
	       "samsung,exynos5250-tmu"
	       "samsung,exynos5260-tmu"
	       "samsung,exynos5420-tmu" for TMU channel 0, 1 on Exynos5420
	       "samsung,exynos5420-tmu-ext-triminfo" for TMU channels 2, 3 and 4
			Exynos5420 (Must pass triminfo base and triminfo clock)
	       "samsung,exynos5440-tmu"
	       "samsung,exynos7-tmu"
- interrupt-parent : The phandle for the interrupt controller
- reg : Address range of the thermal registers. For soc's which has multiple
	instances of TMU and some registers are shared across all TMU's like
	interrupt related then 2 set of register has to supplied. First set
	belongs	to register set of TMU instance and second set belongs to
	registers shared with the TMU instance.

  NOTE: On Exynos5420, the TRIMINFO register is misplaced for TMU
	channels 2, 3 and 4
	Use "samsung,exynos5420-tmu-ext-triminfo" in cases, there is a misplaced
	register, also provide clock to access that base.

	TRIMINFO at 0x1006c000 contains data for TMU channel 3
	TRIMINFO at 0x100a0000 contains data for TMU channel 4
	TRIMINFO at 0x10068000 contains data for TMU channel 2

- interrupts : Should contain interrupt for thermal system
- clocks : The main clocks for TMU device
	-- 1. operational clock for TMU channel
	-- 2. optional clock to access the shared registers of TMU channel
	-- 3. optional special clock for functional operation
- clock-names : Thermal system clock name
	-- "tmu_apbif" operational clock for current TMU channel
	-- "tmu_triminfo_apbif" clock to access the shared triminfo register
		for current TMU channel
	-- "tmu_sclk" clock for functional operation of the current TMU
		channel
- vtmu-supply: This entry is optional and provides the regulator node supplying
		voltage to TMU. If needed this entry can be placed inside
		board/platform specific dts file.
Following properties are mandatory (depending on SoC):
- samsung,tmu_gain: Gain value for internal TMU operation.
- samsung,tmu_reference_voltage: Value of TMU IP block's reference voltage
- samsung,tmu_noise_cancel_mode: Mode for noise cancellation
- samsung,tmu_efuse_value: Default level of temperature - it is needed when
			   in factory fusing produced wrong value
- samsung,tmu_min_efuse_value: Minimum temperature fused value
- samsung,tmu_max_efuse_value: Maximum temperature fused value
- samsung,tmu_first_point_trim: First point trimming value
- samsung,tmu_second_point_trim: Second point trimming value
- samsung,tmu_default_temp_offset: Default temperature offset
- samsung,tmu_cal_type: Callibration type

Example 1):

	tmu@100C0000 {
		compatible = "samsung,exynos4412-tmu";
		interrupt-parent = <&combiner>;
		reg = <0x100C0000 0x100>;
		interrupts = <2 4>;
		clocks = <&clock 383>;
		clock-names = "tmu_apbif";
		status = "disabled";
		vtmu-supply = <&tmu_regulator_node>;
		#include "exynos4412-tmu-sensor-conf.dtsi"
	};

Example 2):

	tmuctrl_0: tmuctrl@160118 {
		compatible = "samsung,exynos5440-tmu";
		reg = <0x160118 0x230>, <0x160368 0x10>;
		interrupts = <0 58 0>;
		clocks = <&clock 21>;
		clock-names = "tmu_apbif";
		#include "exynos5440-tmu-sensor-conf.dtsi"
	};

Example 3): (In case of Exynos5420 "with misplaced TRIMINFO register")
	tmu_cpu2: tmu@10068000 {
		compatible = "samsung,exynos5420-tmu-ext-triminfo";
		reg = <0x10068000 0x100>, <0x1006c000 0x4>;
		interrupts = <0 184 0>;
		clocks = <&clock 318>, <&clock 318>;
		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
		#include "exynos4412-tmu-sensor-conf.dtsi"
	};

	tmu_cpu3: tmu@1006c000 {
		compatible = "samsung,exynos5420-tmu-ext-triminfo";
		reg = <0x1006c000 0x100>, <0x100a0000 0x4>;
		interrupts = <0 185 0>;
		clocks = <&clock 318>, <&clock 319>;
		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
		#include "exynos4412-tmu-sensor-conf.dtsi"
	};

	tmu_gpu: tmu@100a0000 {
		compatible = "samsung,exynos5420-tmu-ext-triminfo";
		reg = <0x100a0000 0x100>, <0x10068000 0x4>;
		interrupts = <0 215 0>;
		clocks = <&clock 319>, <&clock 318>;
		clock-names = "tmu_apbif", "tmu_triminfo_apbif";
		#include "exynos4412-tmu-sensor-conf.dtsi"
	};

Note: For multi-instance tmu each instance should have an alias correctly
numbered in "aliases" node.

Example:

aliases {
	tmuctrl0 = &tmuctrl_0;
	tmuctrl1 = &tmuctrl_1;
	tmuctrl2 = &tmuctrl_2;
};