内核驱动 exynos_tmu¶
支持的芯片
ARM Samsung Exynos4、Exynos5 系列 SoC
数据表:未公开提供
作者:Donggeun Kim <dg77.kim@samsung.com> 作者:Amit Daniel <amit.daniel@samsung.com>
TMU 控制器描述:¶
此驱动程序允许读取 Samsung Exynos4/5 系列 SoC 内部的温度。
该芯片仅通过寄存器公开测量的 8 位温度代码值。 可以从温度代码中获取温度。 有三个等式可将温度转换为温度代码。
- 三个等式是
两点修正
Tc = (T - 25) * (TI2 - TI1) / (85 - 25) + TI1
单点修正
Tc = T + TI1 - 25
无修正
Tc = T + 50
- Tc
温度代码,T:温度,
- TI1
25 摄氏度的修正信息(存储在 TRIMINFO 寄存器中)在 25 摄氏度下测量的温度代码保持不变
- TI2
85 摄氏度的修正信息(存储在 TRIMINFO 寄存器中)在 85 摄氏度下测量的温度代码保持不变
Exynos4/5 中的 TMU(热管理单元)在温度超过预定义级别时生成中断。 可配置阈值的最大数量为五个。 阈值级别定义如下
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
阈值和每个 trigger_level 通过相应的寄存器设置。
发生中断时,此驱动程序使用函数 exynos_report_trigger 通知内核热管理框架。 虽然可以设置 level_0 的中断条件,但它可用于同步冷却操作。
TMU 驱动程序描述:¶
exynos 热驱动程序的结构如下
Kernel Core thermal framework
(thermal_core.c, step_wise.c, cpufreq_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)
- TMU 配置数据
这包括通过结构 exynos_tmu_registers 描述的 TMU 寄存器偏移/位域。 此外,几个其他平台数据(struct exynos_tmu_platform_data)成员用于配置 TMU。
- TMU 驱动程序
此组件初始化 TMU 控制器并设置不同的阈值。 它使用调用 exynos_report_trigger 调用核心热管理实现。
- Exynos 核心热管理包装器
这提供了 3 个包装函数来使用内核核心热管理框架。 它们是 exynos_unregister_thermal、exynos_register_thermal 和 exynos_report_trigger。