内核驱动 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。