exynos-thermal.txt 4.7 KB
Newer Older
1 2 3 4 5
* Exynos Thermal Management Unit (TMU)

** Required properties:

- compatible : One of the following:
6
	       "samsung,exynos3250-tmu"
7 8 9
	       "samsung,exynos4412-tmu"
	       "samsung,exynos4210-tmu"
	       "samsung,exynos5250-tmu"
10
	       "samsung,exynos5260-tmu"
11 12 13
	       "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)
14
               "samsung,exynos5433-tmu"
15
	       "samsung,exynos5440-tmu"
16
	       "samsung,exynos7-tmu"
17 18 19 20
- 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
21 22
	belongs	to register set of TMU instance and second set belongs to
	registers shared with the TMU instance.
23 24 25 26 27 28 29 30 31 32

  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

33
- interrupts : Should contain interrupt for thermal system
34 35 36
- clocks : The main clocks for TMU device
	-- 1. operational clock for TMU channel
	-- 2. optional clock to access the shared registers of TMU channel
37
	-- 3. optional special clock for functional operation
38
- clock-names : Thermal system clock name
39 40 41
	-- "tmu_apbif" operational clock for current TMU channel
	-- "tmu_triminfo_apbif" clock to access the shared triminfo register
		for current TMU channel
42 43
	-- "tmu_sclk" clock for functional operation of the current TMU
		channel
44 45 46 47 48 49 50 51

The Exynos TMU supports generating interrupts when reaching given
temperature thresholds. Number of supported thermal trip points depends
on the SoC (only first trip points defined in DT will be configured):
 - most of SoC: 4
 - samsung,exynos5433-tmu: 8
 - samsung,exynos7-tmu: 8

52 53 54 55 56 57 58 59 60 61 62 63
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
64

65 66 67 68 69 70
** Optional properties:

- 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.

71 72
Example 1):

73
	tmu@100c0000 {
74 75 76 77 78 79 80
		compatible = "samsung,exynos4412-tmu";
		interrupt-parent = <&combiner>;
		reg = <0x100C0000 0x100>;
		interrupts = <2 4>;
		clocks = <&clock 383>;
		clock-names = "tmu_apbif";
		vtmu-supply = <&tmu_regulator_node>;
81
		#include "exynos4412-tmu-sensor-conf.dtsi"
82 83 84 85 86 87 88 89 90 91
	};

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";
92
		#include "exynos5440-tmu-sensor-conf.dtsi"
93 94
	};

95 96 97 98 99 100 101
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";
102
		#include "exynos4412-tmu-sensor-conf.dtsi"
103 104 105 106 107 108 109 110
	};

	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";
111
		#include "exynos4412-tmu-sensor-conf.dtsi"
112 113 114 115 116 117 118 119
	};

	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";
120
		#include "exynos4412-tmu-sensor-conf.dtsi"
121 122
	};

123 124 125 126 127 128 129 130 131 132
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;
};