exynos_thermal 2.8 KB
Newer Older
1
Kernel driver exynos_tmu
D
Donggeun Kim 已提交
2 3 4
=================

Supported chips:
5
* ARM SAMSUNG EXYNOS4, EXYNOS5 series of SoC
D
Donggeun Kim 已提交
6 7 8
  Datasheet: Not publicly available

Authors: Donggeun Kim <dg77.kim@samsung.com>
9
Authors: Amit Daniel <amit.daniel@samsung.com>
D
Donggeun Kim 已提交
10

11 12
TMU controller Description:
---------------------------
D
Donggeun Kim 已提交
13

14
This driver allows to read temperature inside SAMSUNG EXYNOS4/5 series of SoC.
D
Donggeun Kim 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36

The chip only exposes the measured 8-bit temperature code value
through a register.
Temperature can be taken from the temperature code.
There are three equations converting from temperature to temperature code.

The three equations are:
  1. Two point trimming
	Tc = (T - 25) * (TI2 - TI1) / (85 - 25) + TI1

  2. One point trimming
	Tc = T + TI1 - 25

  3. No trimming
	Tc = T + 50

  Tc: Temperature code, T: Temperature,
  TI1: Trimming info for 25 degree Celsius (stored at TRIMINFO register)
       Temperature code measured at 25 degree Celsius which is unchanged
  TI2: Trimming info for 85 degree Celsius (stored at TRIMINFO register)
       Temperature code measured at 85 degree Celsius which is unchanged

37
TMU(Thermal Management Unit) in EXYNOS4/5 generates interrupt
D
Donggeun Kim 已提交
38
when temperature exceeds pre-defined levels.
39
The maximum number of configurable threshold is five.
D
Donggeun Kim 已提交
40 41 42 43 44 45 46 47 48
The threshold levels are defined as follows:
  Level_0: current temperature > trigger_level_0 + threshold
  Level_1: current temperature > trigger_level_1 + threshold
  Level_2: current temperature > trigger_level_2 + threshold
  Level_3: current temperature > trigger_level_3 + threshold

  The threshold and each trigger_level are set
  through the corresponding registers.

49
When an interrupt occurs, this driver notify kernel thermal framework
50
with the function exynos_report_trigger.
D
Donggeun Kim 已提交
51
Although an interrupt condition for level_0 can be set,
52
it can be used to synchronize the cooling action.
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

TMU driver description:
-----------------------

The exynos thermal driver is structured as,

					Kernel Core thermal framework
				(thermal_core.c, step_wise.c, cpu_cooling.c)
								^
								|
								|
TMU configuration data -------> TMU Driver  <------> Exynos Core thermal wrapper
(exynos_tmu_data.c)	      (exynos_tmu.c)	   (exynos_thermal_common.c)
(exynos_tmu_data.h)	      (exynos_tmu.h)	   (exynos_thermal_common.h)

a) TMU configuration data: This consist of TMU register offsets/bitfields
		described through structure exynos_tmu_registers. Also several
		other platform data (struct exynos_tmu_platform_data) members
		are used to configure the TMU.
b) TMU driver: This component initialises the TMU controller and sets different
		thresholds. It invokes core thermal implementation with the call
		exynos_report_trigger.
c) Exynos Core thermal wrapper: This provides 3 wrapper function to use the
		Kernel core thermal framework. They are exynos_unregister_thermal,
		exynos_register_thermal and exynos_report_trigger.