Donggeun Kim | 9d97e5c | 2011-09-07 18:49:08 +0900 | [diff] [blame] | 1 | Kernel driver exynos4_tmu |
| 2 | ================= |
| 3 | |
| 4 | Supported chips: |
| 5 | * ARM SAMSUNG EXYNOS4 series of SoC |
| 6 | Prefix: 'exynos4-tmu' |
| 7 | Datasheet: Not publicly available |
| 8 | |
| 9 | Authors: Donggeun Kim <dg77.kim@samsung.com> |
| 10 | |
| 11 | Description |
| 12 | ----------- |
| 13 | |
| 14 | This driver allows to read temperature inside SAMSUNG EXYNOS4 series of SoC. |
| 15 | |
| 16 | The chip only exposes the measured 8-bit temperature code value |
| 17 | through a register. |
| 18 | Temperature can be taken from the temperature code. |
| 19 | There are three equations converting from temperature to temperature code. |
| 20 | |
| 21 | The 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 | |
| 37 | TMU(Thermal Management Unit) in EXYNOS4 generates interrupt |
| 38 | when temperature exceeds pre-defined levels. |
| 39 | The maximum number of configurable threshold is four. |
| 40 | The 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 | |
| 49 | When an interrupt occurs, this driver notify user space of |
| 50 | one of four threshold levels for the interrupt |
| 51 | through kobject_uevent_env and sysfs_notify functions. |
| 52 | Although an interrupt condition for level_0 can be set, |
| 53 | it is not notified to user space through sysfs_notify function. |
| 54 | |
| 55 | Sysfs Interface |
| 56 | --------------- |
| 57 | name name of the temperature sensor |
| 58 | RO |
| 59 | |
| 60 | temp1_input temperature |
| 61 | RO |
| 62 | |
| 63 | temp1_max temperature for level_1 interrupt |
| 64 | RO |
| 65 | |
| 66 | temp1_crit temperature for level_2 interrupt |
| 67 | RO |
| 68 | |
| 69 | temp1_emergency temperature for level_3 interrupt |
| 70 | RO |
| 71 | |
| 72 | temp1_max_alarm alarm for level_1 interrupt |
| 73 | RO |
| 74 | |
| 75 | temp1_crit_alarm |
| 76 | alarm for level_2 interrupt |
| 77 | RO |
| 78 | |
| 79 | temp1_emergency_alarm |
| 80 | alarm for level_3 interrupt |
| 81 | RO |