From 79277084b07c8ca6703b0093e70519db88248437 Mon Sep 17 00:00:00 2001 From: sashwinbalaji Date: Fri, 26 Apr 2024 18:22:42 +0800 Subject: [PATCH] thermal: Apply special thermal config for wingboard/MLB device - Add new thermal config for wingboard without dependency on: - chg_mdis - inner_brightness zone - Update init_thermal_config to check if wingboard, if so use the custom config Bug: 335005016 Test: Build and boot to verify thermal logs Change-Id: I58b9517de2acdfca0e371ce1a5dfe486eb6c15ee --- device-comet.mk | 5 + thermal/init_thermal_config.cpp | 19 +- .../thermal_info_config_comet_wingboard.json | 793 ++++++++++++++++++ 3 files changed, 816 insertions(+), 1 deletion(-) create mode 100644 thermal/thermal_info_config_comet_wingboard.json diff --git a/device-comet.mk b/device-comet.mk index 3c63153..6bc765e 100644 --- a/device-comet.mk +++ b/device-comet.mk @@ -142,6 +142,11 @@ PRODUCT_COPY_FILES += \ $(TARGET_VENDOR_THERMAL_CONFIG_PATH)/vt_estimation_model_comet.tflite:$(TARGET_COPY_OUT_VENDOR)/etc/vt_estimation_model.tflite \ $(TARGET_VENDOR_THERMAL_CONFIG_PATH)/vt_speaker_estimation_model_comet.tflite:$(TARGET_COPY_OUT_VENDOR)/etc/vt_speaker_estimation_model.tflite \ +ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT))) + PRODUCT_COPY_FILES += \ + $(TARGET_VENDOR_THERMAL_CONFIG_PATH)/thermal_info_config_comet_wingboard.json:$(TARGET_COPY_OUT_VENDOR)/etc/thermal_info_config_wingboard.json +endif + PRODUCT_PACKAGES += \ init_thermal_config diff --git a/thermal/init_thermal_config.cpp b/thermal/init_thermal_config.cpp index 2151ef3..247df91 100644 --- a/thermal/init_thermal_config.cpp +++ b/thermal/init_thermal_config.cpp @@ -19,7 +19,17 @@ #include namespace { +constexpr std::string_view kWingBoardHwId("0x00060603000100020000000000000000"); using android::base::GetProperty; +bool useThermalWingBoardConfig() { + const auto cdt_hwid = GetProperty("ro.boot.cdt_hwid", ""); + if (cdt_hwid == kWingBoardHwId) { + LOG(INFO) << "Using wingboard thermal config as found cdt_hwid " << cdt_hwid; + return true; + } + return false; +} + bool useThermalBackupConfig() { const auto panel_drv = GetProperty("ro.boot.primary_panel_drv", ""); const auto is_panel_available = (panel_drv.find("panel-google-ct3a") != std::string::npos) || @@ -39,11 +49,18 @@ bool useThermalBackupConfig() { } // namespace int main() { - if (useThermalBackupConfig()) { + if (useThermalWingBoardConfig()) { + if (!android::base::SetProperty("vendor.thermal.config", + "thermal_info_config_wingboard.json")) { + LOG(FATAL) << "Failed to set property vendor.thermal.config to " + "thermal_info_config_wingboard."; + } + } else if (useThermalBackupConfig()) { if (!android::base::SetProperty("vendor.thermal.config", "thermal_info_config_backup.json")) { LOG(FATAL) << "Failed to set property vendor.thermal.config to " "thermal_info_config_backup."; } } + return 0; } \ No newline at end of file diff --git a/thermal/thermal_info_config_comet_wingboard.json b/thermal/thermal_info_config_comet_wingboard.json new file mode 100644 index 0000000..e8faa47 --- /dev/null +++ b/thermal/thermal_info_config_comet_wingboard.json @@ -0,0 +1,793 @@ +{ + "Sensors": [ + { + "Name": "battery", + "Type": "BATTERY", + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "NAN", "NAN", "60.0"], + "Multiplier": 0.001 + }, + { + "Name": "battery_cycle", + "Type": "BCL_VOLTAGE" + }, + { + "Name": "maxfg_base", + "Type": "UNKNOWN", + "Multiplier": 0.001 + }, + { + "Name": "maxfg_secondary", + "Type": "UNKNOWN", + "Multiplier": 0.001 + }, + { + "Name": "soc", + "Type": "BCL_PERCENTAGE", + "HotThreshold": ["NAN", "NAN", 80, "NAN", "NAN", "NAN", "NAN"], + "Multiplier": 1 + }, + { + "Name": "BCL_AUDIO_BAACL", + "Type": "BCL_VOLTAGE", + "VirtualSensor": true, + "Formula": "COUNT_THRESHOLD", + "TriggerSensor": "soc", + "Combination": ["battery", "soc"], + "Coefficient": [-25000, 80], + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", 2.0, "NAN", "NAN"], + "PollingDelay": 0, + "PassiveDelay": 1000, + "Multiplier": 1, + "SendCallback": true + }, + { + "Name": "soc_therm", + "Type": "UNKNOWN", + "HotThreshold": ["NaN", 34.29, "NaN", "NaN", "NaN", "NaN", "NaN"], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "rffe_therm", + "Type": "UNKNOWN", + "HotThreshold": ["NaN", 35.07, "NaN", "NaN", "NaN", "NaN", "NaN"], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "modem_therm", + "Type": "UNKNOWN", + "HotThreshold": ["NaN", 33.31, "NaN", "NaN", "NaN", "NaN", "NaN"], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "gnss_tcxo_therm", + "Type": "UNKNOWN", + "HotThreshold": ["NaN", 32.08, "NaN", "NaN", "NaN", "NaN", "NaN"], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "usb_conn_therm", + "Type": "UNKNOWN", + "HotThreshold": ["NAN", 30.79, "NAN", "NAN", "NAN", "NAN", "NAN"], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "charger_therm", + "Type": "UNKNOWN", + "HotThreshold": ["NAN", 34.89, "NAN", "NAN", "NAN", "NAN", "NAN"], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "inner_display_therm", + "Type": "UNKNOWN", + "Multiplier": 0.001 + }, + { + "Name": "display_therm", + "Type": "UNKNOWN", + "Multiplier": 0.001 + }, + { + "Name": "VIRTUAL-SKIN-OPEN-SUB-1", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "Formula": "WEIGHTED_AVG", + "Combination": ["charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Coefficient": [0.144, 0.448, 0.402], + "Offset": -1113, + "Multiplier": 0.001 + }, + { + "Name": "VIRTUAL-SKIN-OPEN-SUB-2", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "Formula": "WEIGHTED_AVG", + "Combination": ["charger_therm", "modem_therm", "inner_display_therm", "display_therm", "gnss_tcxo_therm"], + "Coefficient": [0.12, 0.12, 0.37, 0.32, 0.12], + "Offset": -30, + "Multiplier": 0.001 + }, + { + "Name": "VIRTUAL-SKIN", + "Type": "SKIN", + "Version": "2.1", + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN-OPEN-SUB-1", "VIRTUAL-SKIN-OPEN-SUB-2"], + "Coefficient": [1.0, 1.0], + "HotThreshold": ["NAN", 39.0, 43.0, 45.0, 46.5, 53.0, 57.0], + "HotHysteresis": [0.0, 1.9, 1.9, 1.9, 1.4, 1.9, 1.9], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "SendCallback": true, + "BindedCdevInfo": [ + { + "CdevRequest": "tpu_cooling", + "LimitInfo": [0, 2, 3, 4, 5, 5, 5] + }, + { + "CdevRequest": "gxp-cooling", + "LimitInfo": [0, 0, 0, 0, 0, 99, 99] + } + ] + }, + { + "Name": "VIRTUAL-SKIN-HINT", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 37.0, 43.0, 45.0, 46.5, 53.0, 57.0], + "HotHysteresis": [0.0, 1.9, 1.9, 1.9, 1.4, 1.9, 1.9], + "Multiplier": 0.001, + "SendPowerHint": true, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "VIRTUAL-SKIN-CPU-LIGHT-ODPM", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 37.0, 39.0, "NAN", "NAN", "NAN", "NAN"], + "HotHysteresis": [0.0, 1.9, 1.9, 0.0, 0.0, 0.0, 0.0], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "PIDInfo": { + "K_Po": ["NAN", "NAN", 400, "NAN", "NAN", "NAN", "NAN"], + "K_Pu": ["NAN", "NAN", 400, "NAN", "NAN", "NAN", "NAN"], + "K_I": ["NAN", "NAN", 5, "NAN", "NAN", "NAN", "NAN"], + "K_D": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "I_Max": ["NAN", "NAN", 2200, "NAN", "NAN", "NAN", "NAN"], + "S_Power": ["NAN", "NAN", 800, "NAN", "NAN", "NAN", "NAN"], + "MinAllocPower": ["NAN", "NAN", 800, "NAN", "NAN", "NAN", "NAN"], + "MaxAllocPower": ["NAN", "NAN", 4600, "NAN", "NAN", "NAN", "NAN"], + "I_Cutoff": ["NAN", "NAN", 4, "NAN", "NAN", "NAN", "NAN"] + }, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 1, + "BindedPowerRail": "S4M_VDD_CPUCL0", + "CdevCeiling": [0, 2, 2, 2, 2, 2, 2] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "BindedPowerRail": "S2M_VDD_CPUCL1", + "CdevCeiling": [0, 6, 6, 6, 6, 6, 6] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "BindedPowerRail": "S3M_VDD_CPUCL2", + "CdevCeiling": [0, 15, 15, 15, 15, 15, 15] + } + ], + "Profile": [ + { + "Mode": "game", + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "BindedPowerRail": "S4M_VDD_CPUCL0", + "MaxReleaseStep": 1, + "Disabled":true + }, + { + "CdevRequest": "thermal-cpufreq-1", + "BindedPowerRail": "S2M_VDD_CPUCL1", + "MaxReleaseStep": 1, + "Disabled":true + }, + { + "CdevRequest": "thermal-cpufreq-2", + "BindedPowerRail": "S3M_VDD_CPUCL2", + "MaxReleaseStep": 1, + "Disabled":true + } + ] + } + ] + }, + { + "Name": "VIRTUAL-SKIN-CPU-MID", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 39.0, 41.0, "NAN", "NAN", "NAN", "NAN"], + "HotHysteresis": [0.0, 0.0, 1.9, 0.0, 0.0, 0.0, 0.0], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "PIDInfo": { + "K_Po": ["NAN", "NAN", 400, "NAN", "NAN", "NAN", "NAN"], + "K_Pu": ["NAN", "NAN", 400, "NAN", "NAN", "NAN", "NAN"], + "K_I": ["NAN", "NAN", 5, "NAN", "NAN", "NAN", "NAN"], + "K_D": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "I_Max": ["NAN", "NAN", 1500, "NAN", "NAN", "NAN", "NAN"], + "S_Power": ["NAN", "NAN", 700, "NAN", "NAN", "NAN", "NAN"], + "MinAllocPower": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "MaxAllocPower": ["NAN", "NAN", 2800, "NAN", "NAN", "NAN", "NAN"], + "I_Cutoff": ["NAN", "NAN", 4, "NAN", "NAN", "NAN", "NAN"] + }, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "CdevWeightForPID": [0.292, 0.292, 0.292, 0.292, 0.292, 0.292, 0.292], + "MaxReleaseStep": 1, + "MaxThrottleStep": 1, + "CdevCeiling": [0, 7, 7, 7, 7, 7, 7] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "CdevWeightForPID": [0.804, 0.804, 0.804, 0.804, 0.804, 0.804, 0.804], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "CdevCeiling": [0, 10, 10, 10, 10, 10, 10] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "CdevWeightForPID": [0.342, 0.342, 0.342, 0.342, 0.342, 0.342, 0.342], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "CdevCeiling": [0, 17, 17, 17, 17, 17, 17] + } + ], + "Profile": [ + { + "Mode": "game", + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "MaxReleaseStep": 1, + "Disabled": true + }, + { + "CdevRequest": "thermal-cpufreq-1", + "MaxReleaseStep": 1, + "Disabled": true + }, + { + "CdevRequest": "thermal-cpufreq-2", + "MaxReleaseStep": 1, + "Disabled": true + } + ] + }, + { + "Mode": "camera", + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "MaxReleaseStep": 1, + "Disabled": true + }, + { + "CdevRequest": "thermal-cpufreq-1", + "MaxReleaseStep": 1, + "Disabled": true + }, + { + "CdevRequest": "thermal-cpufreq-2", + "MaxReleaseStep": 1, + "Disabled": true + } + ] + } + ] + }, + { + "Name": "VIRTUAL-SKIN-CPU-HIGH", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 41.0, 43.0, 53.0, "NAN", "NAN", "NAN"], + "HotHysteresis": [0.0, 0.0, 1.9, 1.9, 0.0, 0.0, 0.0], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "PIDInfo": { + "K_Po": ["NAN", "NAN", 400, "NAN", "NAN", "NAN", "NAN"], + "K_Pu": ["NAN", "NAN", 400, "NAN", "NAN", "NAN", "NAN"], + "K_I": ["NAN", "NAN", 5, "NAN", "NAN", "NAN", "NAN"], + "K_D": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "I_Max": ["NAN", "NAN", 1000, "NAN", "NAN", "NAN", "NAN"], + "S_Power": ["NAN", "NAN", 600, "NAN", "NAN", "NAN", "NAN"], + "MinAllocPower": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "MaxAllocPower": ["NAN", "NAN", 1600, "NAN", "NAN", "NAN", "NAN"], + "I_Cutoff": ["NAN", "NAN", 4, "NAN", "NAN", "NAN", "NAN"] + }, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "CdevWeightForPID": [0.156, 0.156, 0.156, 0.156, 0.156, 0.156, 0.156], + "MaxReleaseStep": 1, + "MaxThrottleStep": 1, + "CdevCeiling": [0, 9, 9, 9, 9, 9, 9] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "CdevWeightForPID": [0.428, 0.428, 0.428, 0.428, 0.428, 0.428, 0.428], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "CdevCeiling": [0, 13, 13, 13, 13, 13, 13] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "CdevWeightForPID": [0.225, 0.225, 0.225, 0.225, 0.225, 0.225, 0.225], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "CdevCeiling": [0, 17, 17, 17, 17, 17, 17] + } + ], + "Profile": [ + { + "Mode": "game", + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "MaxReleaseStep": 1, + "Disabled": true + }, + { + "CdevRequest": "thermal-cpufreq-1", + "MaxReleaseStep": 1, + "Disabled": true + }, + { + "CdevRequest": "thermal-cpufreq-2", + "MaxReleaseStep": 1, + "Disabled": true + } + ] + }, + { + "Mode": "camera", + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "CdevWeightForPID": [ + 0.156, 0.156, 0.156, 0.156, 0.156, 0.156, 0.156 + ], + "MaxReleaseStep": 1, + "MaxThrottleStep": 1, + "CdevCeiling": [0, 2, 2, 2, 2, 2, 2] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "CdevWeightForPID": [ + 0.428, 0.428, 0.428, 0.428, 0.428, 0.428, 0.428 + ], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "CdevCeiling": [0, 6, 6, 6, 6, 6, 6] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "CdevWeightForPID": [ + 0.225, 0.225, 0.225, 0.225, 0.225, 0.225, 0.225 + ], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "CdevCeiling": [0, 15, 15, 15, 15, 15, 15] + } + ] + } + ] + }, + { + "Name": "VIRTUAL-SKIN-CPU-GPU", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 37.0, 43.0, 45.0, 46.5, 53.0, 57.0], + "HotHysteresis": [0.0, 1.9, 1.9, 1.9, 1.4, 1.9, 1.9], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "PIDInfo": { + "K_Po": ["NAN", "NAN", "NAN", 300, "NAN", "NAN", "NAN"], + "K_Pu": ["NAN", "NAN", "NAN", 300, "NAN", "NAN", "NAN"], + "K_I": ["NAN", "NAN", "NAN", 5, "NAN", "NAN", "NAN"], + "K_D": ["NAN", "NAN", "NAN", 0, "NAN", "NAN", "NAN"], + "I_Max": ["NAN", "NAN", "NAN", 2600, "NAN", "NAN", "NAN"], + "S_Power": ["NAN", "NAN", "NAN", 800, "NAN", "NAN", "NAN"], + "MinAllocPower": ["NAN", "NAN", "NAN", 0, "NAN", "NAN", "NAN"], + "MaxAllocPower": ["NAN", "NAN", "NAN", 3900, "NAN", "NAN", "NAN"], + "I_Cutoff": ["NAN", "NAN", "NAN", 8, "NAN", "NAN", "NAN"] + }, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-cpufreq-0", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 1, + "BindedPowerRail": "S4M_VDD_CPUCL0", + "CdevCeiling": [0, 9, 9, 9, 9, 9, 9], + "LimitInfo": [0, 0, 0, 0, 0, 9, 9] + }, + { + "CdevRequest": "thermal-cpufreq-1", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "BindedPowerRail": "S2M_VDD_CPUCL1", + "CdevCeiling": [0, 13, 13, 13, 14, 16, 16], + "LimitInfo": [0, 0, 0, 0, 0, 16, 16] + }, + { + "CdevRequest": "thermal-cpufreq-2", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 2, + "BindedPowerRail": "S3M_VDD_CPUCL2", + "CdevCeiling": [0, 17, 17, 17, 17, 17, 17], + "LimitInfo": [0, 0, 0, 0, 0, 17, 17] + }, + { + "CdevRequest": "thermal-gpufreq-0", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "MaxReleaseStep": 1, + "MaxThrottleStep": 1, + "BindedPowerRail": "S2S_VDD_G3D", + "CdevCeiling": [0, 9, 9, 9, 10, 12, 12], + "LimitInfo": [0, 0, 0, 0, 0, 12, 12] + } + ] + }, + { + "Name": "VIRTUAL-SKIN-GPU", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 43.0, 45.0, 46.5, 53.0, "NAN", "NAN"], + "HotHysteresis": [0.0, 1.9, 1.9, 1.4, 1.9, 0.0, 0.0], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "PIDInfo": { + "K_Po": ["NAN", "NAN", 700, "NAN", "NAN", "NAN", "NAN"], + "K_Pu": ["NAN", "NAN", 700, "NAN", "NAN", "NAN", "NAN"], + "K_I": ["NAN", "NAN", 5, "NAN", "NAN", "NAN", "NAN"], + "K_D": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "I_Max": ["NAN", "NAN", 1723, "NAN", "NAN", "NAN", "NAN"], + "S_Power": ["NAN", "NAN", 473, "NAN", "NAN", "NAN", "NAN"], + "MinAllocPower": ["NAN", "NAN", 0, "NAN", "NAN", "NAN", "NAN"], + "MaxAllocPower": ["NAN", "NAN", 2500, "NAN", "NAN", "NAN", "NAN"], + "I_Cutoff": ["NAN", "NAN", 4, "NAN", "NAN", "NAN", "NAN"] + }, + "BindedCdevInfo": [ + { + "CdevRequest": "thermal-gpufreq-0", + "CdevWeightForPID": [1, 1, 1, 1, 1, 1, 1], + "CdevCeiling": [0, 9, 9, 10, 12, 12, 12] + } + ] + }, + { + "Name": "cellular-emergency", + "Type": "POWER_AMPLIFIER", + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "NAN", 55.0, "NAN"], + "HotHysteresis": [0.0, 0.0, 0.0, 0.0, 0.0, 1.9, 0.0], + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "SendCallback": true + }, + { + "Name": "VIRTUAL-SKIN-OUTER-DISPLAY", + "Type": "DISPLAY", + "Version": "1.0", + "VirtualSensor": true, + "TriggerSensor": ["soc_therm", "rffe_therm", "charger_therm", "modem_therm", "gnss_tcxo_therm"], + "Formula": "MAXIMUM", + "Combination": ["VIRTUAL-SKIN"], + "Coefficient": [1.0], + "HotThreshold": ["NAN", 39.0, 43.0, 45.0, 46.5, 53.0, 57.0], + "HotHysteresis": [0.0, 1.9, 1.9, 1.9, 1.4, 1.9, 1.9], + "Multiplier": 0.001, + "SendCallback": true, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "VIRTUAL-SKIN-CHARGE-WIRED", + "Type": "UNKNOWN", + "Version": "0.2", + "VirtualSensor": true, + "TriggerSensor": "charger_therm", + "Formula": "WEIGHTED_AVG", + "Combination": ["soc_therm", "rffe_therm", "modem_therm", "gnss_tcxo_therm"], + "Coefficient": [0.119, 0.103, 0.481, 0.288], + "Offset": -203, + "Multiplier": 0.001 + }, + { + "Name": "VIRTUAL-SKIN-SPEAKER", + "Type": "UNKNOWN", + "Version": "0.1", + "VirtualSensor": true, + "TriggerSensor": "usb_conn_therm", + "Formula": "WEIGHTED_AVG", + "Combination": ["usb_conn_therm", "maxfg_base"], + "Coefficient": [0.89, 0.01], + "HotThreshold": ["NAN", 37.0, "NAN", "NAN", "NAN", "NAN", "NAN"], + "HotHysteresis": [0.0, 1.9, 0.0, 0.0, 0.0, 0.0, 0.0], + "Offset": 8426, + "Multiplier": 0.001, + "PollingDelay": 300000, + "PassiveDelay": 7000, + "SendCallback": true + }, + { + "Name": "USB-MINUS-CHARGER", + "Type": "UNKNOWN", + "VirtualSensor": true, + "Hidden": true, + "TriggerSensor": "usb_conn_therm", + "Formula": "WEIGHTED_AVG", + "Combination": ["usb_conn_therm", "charger_therm"], + "Coefficient": [1.0, -1.0], + "Multiplier": 0.001 + }, + { + "Name": "VIRTUAL-USB-THROTTLING", + "Type": "USB_PORT", + "Version": "0.1", + "VirtualSensor": true, + "Formula": "COUNT_THRESHOLD", + "TriggerSensor": "usb_conn_therm", + "Combination": ["usb_conn_therm", "USB-MINUS-CHARGER"], + "Coefficient": [46000, 7000], + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "2.0", "NAN", "NAN"], + "BindedCdevInfo": [ + { + "CdevRequest": "usbc-port", + "LimitInfo": [0, 0, 0, 0, 1, 1, 1] + } + ], + "Multiplier": 1, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "VIRTUAL-USB-UI", + "Type": "USB_PORT", + "Version": "0.1", + "VirtualSensor": true, + "Formula": "COUNT_THRESHOLD", + "TriggerSensor": "usb_conn_therm", + "Combination": ["usb_conn_therm", "USB-MINUS-CHARGER"], + "Coefficient": [46000, 10000], + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "NAN", "2.0", "NAN"], + "Multiplier": 1, + "SendCallback": true, + "PollingDelay": 300000, + "PassiveDelay": 7000 + }, + { + "Name": "LEFT-INNER-DISPLAY", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "Formula": "WEIGHTED_AVG", + "Combination": ["display_therm", "maxfg_secondary"], + "Coefficient": [0.516, 0.535], + "Offset": -26, + "Multiplier": 0.001 + }, + { + "Name": "RIGHT-INNER-DISPLAY", + "Type": "UNKNOWN", + "Hidden": true, + "VirtualSensor": true, + "Formula": "WEIGHTED_AVG", + "Combination": ["usb_conn_therm", "maxfg_base"], + "Coefficient": [0.045, 0.849], + "Offset": 2975, + "Multiplier": 0.001 + }, + { + "Name": "INNER-DISPLAY-DIFF", + "Type": "UNKNOWN", + "VirtualSensor": true, + "Formula": "WEIGHTED_AVG", + "Combination": ["RIGHT-INNER-DISPLAY", "LEFT-INNER-DISPLAY"], + "Coefficient": [1.0, -1.0], + "Multiplier": 0.001 + }, + { + "Name": "LITTLE", + "Type": "CPU", + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "NAN", "NAN", 115.0], + "VrThreshold": "NAN", + "Multiplier": 0.001 + }, + { + "Name": "MID", + "Type": "CPU", + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "NAN", "NAN", 115.0], + "VrThreshold": "NAN", + "Multiplier": 0.001 + }, + { + "Name": "BIG", + "Type": "CPU", + "HotThreshold": ["NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], + "Multiplier": 0.001 + }, + { + "Name": "G3D", + "Type": "GPU", + "HotThreshold": ["NAN", "NAN", "NAN", "NAN", "NAN", "NAN", 115.0], + "VrThreshold": "NAN", + "Multiplier": 0.001 + }, + { + "Name": "TPU", + "Type": "NPU", + "HotThreshold": ["NaN", "NaN", "NaN", "NaN", "NaN", "NaN", "NaN"], + "Multiplier": 0.001 + } + ], + "CoolingDevices": [ + { + "Name": "thermal-cpufreq-0", + "Type": "CPU", + "WritePath": "/dev/thermal/cdev-by-name/thermal-cpufreq-0/user_vote" + }, + { + "Name": "thermal-cpufreq-1", + "Type": "CPU", + "WritePath": "/dev/thermal/cdev-by-name/thermal-cpufreq-1/user_vote" + }, + { + "Name": "thermal-cpufreq-2", + "Type": "CPU", + "WritePath": "/dev/thermal/cdev-by-name/thermal-cpufreq-2/user_vote" + }, + { + "Name": "thermal-gpufreq-0", + "Type": "GPU", + "WritePath": "/dev/thermal/cdev-by-name/thermal-gpufreq-0/user_vote" + }, + { + "Name": "usbc-port", + "Type": "BATTERY" + }, + { + "Name": "tpu_cooling", + "Type": "NPU", + "WritePath": "/dev/thermal/cdev-by-name/tpu_cooling/user_vote" + }, + { + "Name": "gxp-cooling", + "Type": "NPU", + "WritePath": "/dev/thermal/cdev-by-name/gxp-cooling/user_vote" + } + ], + "PowerRails": [ + { + "Name": "S3M_VDD_CPUCL2", + "PowerSampleDelay": 7000, + "PowerSampleCount": 1 + }, + { + "Name": "S2M_VDD_CPUCL1", + "PowerSampleDelay": 7000, + "PowerSampleCount": 1 + }, + { + "Name": "S4M_VDD_CPUCL0", + "PowerSampleDelay": 7000, + "PowerSampleCount": 1 + }, + { + "Name": "S2S_VDD_G3D", + "PowerSampleDelay": 7000, + "PowerSampleCount": 1 + }, + { + "Name": "PARTIAL_SYSTEM_POWER", + "VirtualRails": true, + "Formula": "WEIGHTED_AVG", + "Combination": [ + "S1S_VDD_CAM", + "S2S_VDD_G3D", + "S4S_VDD2H_MEM", + "S5S_VDDQ_MEM", + "S9S_VDD_AOC", + "L2S_PLL_MIPI_UFS", + "L21S_VDD2L_MEM", + "VSYS_PWR_DISPLAY", + "VSYS_PWR_WLAN_BT", + "S1M_VDD_MIF", + "S3M_VDD_CPUCL2", + "S2M_VDD_CPUCL1", + "S4M_VDD_CPUCL0", + "S5M_VDD_INT", + "S6M_LLDO1", + "S7M_VDD_TPU", + "S8M_LLDO2", + "VSYS_PWR_MODEM" + ], + "Coefficient": [ + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, + 1.0, 1.0, 1.0, 1.0 + ], + "PowerSampleDelay": 7000, + "PowerSampleCount": 5 + } + ] +}