内核驱动 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 位温度代码值。 可以从温度代码中获取温度。 有三个等式可将温度转换为温度代码。

三个等式是
  1. 两点修正

    Tc = (T - 25) * (TI2 - TI1) / (85 - 25) + TI1
    
  2. 单点修正

    Tc = T + TI1 - 25
    
  3. 无修正

    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)
  1. TMU 配置数据

    这包括通过结构 exynos_tmu_registers 描述的 TMU 寄存器偏移/位域。 此外,几个其他平台数据(struct exynos_tmu_platform_data)成员用于配置 TMU。

  2. TMU 驱动程序

    此组件初始化 TMU 控制器并设置不同的阈值。 它使用调用 exynos_report_trigger 调用核心热管理实现。

  3. Exynos 核心热管理包装器

    这提供了 3 个包装函数来使用内核核心热管理框架。 它们是 exynos_unregister_thermal、exynos_register_thermal 和 exynos_report_trigger。