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