核心驅動 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。