summaryrefslogtreecommitdiffstats
path: root/Documentation/hwmon/exynos4_tmu
blob: c3c6b41db607112d1502feb1b1fb36ed75da2b95 (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
Kernel driver exynos4_tmu
=================

Supported chips:
* ARM SAMSUNG EXYNOS4 series of SoC
  Prefix: 'exynos4-tmu'
  Datasheet: Not publicly available

Authors: Donggeun Kim <dg77.kim@samsung.com>

Description
-----------

This driver allows to read temperature inside SAMSUNG EXYNOS4 series of SoC.

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

TMU(Thermal Management Unit) in EXYNOS4 generates interrupt
when temperature exceeds pre-defined levels.
The maximum number of configurable threshold is four.
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.

When an interrupt occurs, this driver notify user space of
one of four threshold levels for the interrupt
through kobject_uevent_env and sysfs_notify functions.
Although an interrupt condition for level_0 can be set,
it is not notified to user space through sysfs_notify function.

Sysfs Interface
---------------
name		name of the temperature sensor
		RO

temp1_input	temperature
		RO

temp1_max	temperature for level_1 interrupt
		RO

temp1_crit	temperature for level_2 interrupt
		RO

temp1_emergency	temperature for level_3 interrupt
		RO

temp1_max_alarm	alarm for level_1 interrupt
		RO

temp1_crit_alarm
		alarm for level_2 interrupt
		RO

temp1_emergency_alarm
		alarm for level_3 interrupt
		RO