1Kernel driver exynos_tmu
2=================
3
4Supported chips:
5* ARM SAMSUNG EXYNOS4, EXYNOS5 series of SoC
6  Datasheet: Not publicly available
7
8Authors: Donggeun Kim <dg77.kim@samsung.com>
9Authors: Amit Daniel <amit.daniel@samsung.com>
10
11TMU controller Description:
12---------------------------
13
14This driver allows to read temperature inside SAMSUNG EXYNOS4/5 series of SoC.
15
16The chip only exposes the measured 8-bit temperature code value
17through a register.
18Temperature can be taken from the temperature code.
19There are three equations converting from temperature to temperature code.
20
21The three equations are:
22  1. Two point trimming
23	Tc = (T - 25) * (TI2 - TI1) / (85 - 25) + TI1
24
25  2. One point trimming
26	Tc = T + TI1 - 25
27
28  3. No trimming
29	Tc = T + 50
30
31  Tc: Temperature code, T: Temperature,
32  TI1: Trimming info for 25 degree Celsius (stored at TRIMINFO register)
33       Temperature code measured at 25 degree Celsius which is unchanged
34  TI2: Trimming info for 85 degree Celsius (stored at TRIMINFO register)
35       Temperature code measured at 85 degree Celsius which is unchanged
36
37TMU(Thermal Management Unit) in EXYNOS4/5 generates interrupt
38when temperature exceeds pre-defined levels.
39The maximum number of configurable threshold is five.
40The threshold levels are defined as follows:
41  Level_0: current temperature > trigger_level_0 + threshold
42  Level_1: current temperature > trigger_level_1 + threshold
43  Level_2: current temperature > trigger_level_2 + threshold
44  Level_3: current temperature > trigger_level_3 + threshold
45
46  The threshold and each trigger_level are set
47  through the corresponding registers.
48
49When an interrupt occurs, this driver notify kernel thermal framework
50with the function exynos_report_trigger.
51Although an interrupt condition for level_0 can be set,
52it can be used to synchronize the cooling action.
53
54TMU driver description:
55-----------------------
56
57The exynos thermal driver is structured as,
58
59					Kernel Core thermal framework
60				(thermal_core.c, step_wise.c, cpu_cooling.c)
61								^
62								|
63								|
64TMU configuration data -------> TMU Driver  <------> Exynos Core thermal wrapper
65(exynos_tmu_data.c)	      (exynos_tmu.c)	   (exynos_thermal_common.c)
66(exynos_tmu_data.h)	      (exynos_tmu.h)	   (exynos_thermal_common.h)
67
68a) TMU configuration data: This consist of TMU register offsets/bitfields
69		described through structure exynos_tmu_registers. Also several
70		other platform data (struct exynos_tmu_platform_data) members
71		are used to configure the TMU.
72b) TMU driver: This component initialises the TMU controller and sets different
73		thresholds. It invokes core thermal implementation with the call
74		exynos_report_trigger.
75c) Exynos Core thermal wrapper: This provides 3 wrapper function to use the
76		Kernel core thermal framework. They are exynos_unregister_thermal,
77		exynos_register_thermal and exynos_report_trigger.
78