Tegra K1 内建溫度感知器監控 CPU, GPU, 記憶體控制器等裝置.

溫控調頻 (Thermal Throttling) 表定義於 board-ardbeg-sensors.c.

"cpu-balanced" 溫控調頻表

static struct throttle_table cpu_throttle_table[] = {
    /* CPU_THROT_LOW cannot be used by other than CPU */
    /*      CPU,    GPU,  C2BUS,  C3BUS,   SCLK,    EMC   */
    { { 2295000, NO_CAP, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
    { { 2269500, NO_CAP, NO_CAP, NO_CAP, NO_CAP, NO_CAP } },
   ...
    { {  229500,  84000, 288000, 420000, 252000, 396000 } },
    { {  204000,  84000, 288000, 420000, 252000, 396000 } },
};

Jetson TK1 溫控調頻结構定義於 board-ardbeg-power.c.

static struct soctherm_platform_data ardbeg_soctherm_data = {
    .oc_irq_base = TEGRA_SOC_OC_IRQ_BASE,
    .num_oc_irqs = TEGRA_SOC_OC_NUM_IRQ,
    .therm = {
        [THERM_CPU] = {
            .zone_enable = true,
            .passive_delay = 1000,
            .hotspot_offset = 6000,
            .num_trips = 3,
            .trips = {
                {
                    .cdev_type = "tegra-shutdown",
                    .trip_temp = 101000,
                    .trip_type = THERMAL_TRIP_CRITICAL,
                    .upper = THERMAL_NO_LIMIT,
                    .lower = THERMAL_NO_LIMIT,
                },
                {
                    .cdev_type = "tegra-heavy",
                    .trip_temp = 99000,
                    .trip_type = THERMAL_TRIP_HOT,
                    .upper = THERMAL_NO_LIMIT,
                    .lower = THERMAL_NO_LIMIT,
                },
                {
                    .cdev_type = "cpu-balanced",
                    .trip_temp = 90000,
                    .trip_type = THERMAL_TRIP_PASSIVE,
                    .upper = THERMAL_NO_LIMIT,
                    .lower = THERMAL_NO_LIMIT,
                },
            },
            .tzp = &soctherm_tzp,
        },

範例:

<< 導入以下修正使 R21.2 溫控調頻啟動 >>

diff --git a/arch/arm/mach-tegra/board-ardbeg-sensors.c b/arch/arm/mach-tegra/bo
index b8ea94d..602f652 100644
--- a/arch/arm/mach-tegra/board-ardbeg-sensors.c
+++ b/arch/arm/mach-tegra/board-ardbeg-sensors.c
@@ -1506,6 +1506,7 @@ static struct balanced_throttle emergency_throttle = {
 static int __init ardbeg_balanced_throttle_init(void)
 {
        if (of_machine_is_compatible("nvidia,ardbeg") ||
+               of_machine_is_compatible("nvidia,jetson-tk1") ||
                of_machine_is_compatible("nvidia,norrin") ||
                of_machine_is_compatible("nvidia,bowmore") ||
                of_machine_is_compatible("nvidia,tn8")) {

<< 取得目前溫度感知器溫度 >>

ubuntu@tegra-ubuntu:~$ sudo su
[sudo] password for ubuntu:
root@tegra-ubuntu:/home/ubuntu# ls /sys/kernel/debug/tegra_soctherm
convert       cputemp       gputemp       memtemp       plltemp       regs          temp_log      tempoverride  
root@tegra-ubuntu:/home/ubuntu# cat /sys/kernel/debug/tegra_soctherm/temp_log
  2901.914887    INVALID    INVALID    INVALID    INVALID    28500    29000    31500    29500

 

 

文章標籤
創作者介紹
創作者 版大 的頭像
版大

嵌入式系統

版大 發表在 痞客邦 留言(0) 人氣()