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