diff options
-rw-r--r-- | Android.bp | 1 | ||||
-rw-r--r-- | android.hardware.thermal@2.0-service.qti.rc | 7 | ||||
-rw-r--r-- | thermal.cpp | 52 | ||||
-rw-r--r-- | thermalCommon.cpp | 37 | ||||
-rw-r--r-- | thermalConfig.cpp | 735 | ||||
-rw-r--r-- | thermalData.h | 34 | ||||
-rw-r--r-- | thermalUtils.cpp | 34 | ||||
-rw-r--r-- | thermalUtilsNetlink.cpp | 34 |
8 files changed, 912 insertions, 22 deletions
@@ -19,7 +19,6 @@ cc_binary { "libbase", "libcutils", "libhidlbase", - "libhidltransport", "libutils", "liblog", "android.hardware.thermal@1.0", diff --git a/android.hardware.thermal@2.0-service.qti.rc b/android.hardware.thermal@2.0-service.qti.rc index 4c9186c..5c98ab4 100644 --- a/android.hardware.thermal@2.0-service.qti.rc +++ b/android.hardware.thermal@2.0-service.qti.rc @@ -25,6 +25,10 @@ # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN # IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# Changes from Qualcomm Innovation Center are provided under the following license: +# Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. +# SPDX-License-Identifier: BSD-3-Clause-Clear service android.thermal-hal /vendor/bin/hw/android.hardware.thermal@2.0-service.qti interface android.hardware.thermal@1.0::IThermal default @@ -32,3 +36,6 @@ service android.thermal-hal /vendor/bin/hw/android.hardware.thermal@2.0-service. class hal user root group root + +on property:sys.boot_completed=1 + restart android.thermal-hal diff --git a/thermal.cpp b/thermal.cpp index cb379c8..c1211a6 100644 --- a/thermal.cpp +++ b/thermal.cpp @@ -26,6 +26,39 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted (subject to the limitations in the + * disclaimer below) provided that the following conditions are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * * Neither the name of Qualcomm Innovation Center, Inc. nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE + * GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT + * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR + * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE + * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <ctype.h> @@ -59,6 +92,13 @@ static const Temperature_1_0 dummy_temp_1_0 = { .vrThrottlingThreshold = 40, }; +static const Temperature dummy_temp_2_0 = { + .type = TemperatureType::SKIN, + .name = "test sensor", + .value = 25.0, + .throttlingStatus = ThrottlingSeverity::NONE, +}; + template <typename A, typename B> Return<void> exit_hal(A _cb, hidl_vec<B> _data, std::string_view _msg) { ThermalStatus _status; @@ -169,9 +209,15 @@ Return<void> Thermal::getCurrentTemperatures( return exit_hal(_hidl_cb, temperatures, "ThermalHAL not initialized properly."); - if (utils.readTemperatures(filterType, type, temperatures) <= 0) - return exit_hal(_hidl_cb, temperatures, - "Sensor Temperature read failure."); + if (utils.readTemperatures(filterType, type, temperatures) <= 0) { + if (filterType && type != dummy_temp_2_0.type) { + status.code = ThermalStatusCode::FAILURE; + status.debugMessage = "Failed to read dummy temperature value"; + } else { + temperatures = {dummy_temp_2_0}; + LOG(INFO) << "Returning Dummy Temperature Value" << std::endl; + } + } _hidl_cb(status, temperatures); diff --git a/thermalCommon.cpp b/thermalCommon.cpp index 9c9d632..5e9ac15 100644 --- a/thermalCommon.cpp +++ b/thermalCommon.cpp @@ -26,6 +26,38 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Qualcomm Innovation Center, Inc. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED + * BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + *(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <cstdio> @@ -262,6 +294,7 @@ int ThermalCommon::initialize_sensor(struct target_therm_cfg& cfg, int sens_idx) sensor.lastThrottleStatus = sensor.t.throttlingStatus = ThrottlingSeverity::NONE; sensor.thresh.type = sensor.t.type = cfg.type; + sensor.throt_severity = cfg.throt_severity; sensor.thresh.vrThrottlingThreshold = UNKNOWN_TEMPERATURE; for (idx = 0; idx <= (size_t)ThrottlingSeverity::SHUTDOWN; idx++) { @@ -271,10 +304,10 @@ int ThermalCommon::initialize_sensor(struct target_therm_cfg& cfg, int sens_idx) } if (cfg.throt_thresh != 0 && cfg.positive_thresh_ramp) - sensor.thresh.hotThrottlingThresholds[(size_t)ThrottlingSeverity::SEVERE] = + sensor.thresh.hotThrottlingThresholds[(size_t)sensor.throt_severity] = cfg.throt_thresh / (float)sensor.mulFactor; else if (cfg.throt_thresh != 0 && !cfg.positive_thresh_ramp) - sensor.thresh.coldThrottlingThresholds[(size_t)ThrottlingSeverity::SEVERE] = + sensor.thresh.coldThrottlingThresholds[(size_t)sensor.throt_severity] = cfg.throt_thresh / (float)sensor.mulFactor; if (cfg.shutdwn_thresh != 0 && cfg.positive_thresh_ramp) diff --git a/thermalConfig.cpp b/thermalConfig.cpp index a1aeee3..9ce4726 100644 --- a/thermalConfig.cpp +++ b/thermalConfig.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2020,2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are @@ -46,6 +47,239 @@ namespace V2_0 { namespace implementation { constexpr std::string_view socIDPath("/sys/devices/soc0/soc_id"); + std::vector<std::string> cpu_sensors_439 = + { + "apc1-cpu0-usr", + "apc1-cpu1-usr", + "apc1-cpu2-usr", + "apc1-cpu3-usr", + "cpuss0-usr", + "cpuss0-usr", + "cpuss0-usr", + "cpuss0-usr", + }; + + std::vector<struct target_therm_cfg> sensor_cfg_439 = + { + { + TemperatureType::CPU, + cpu_sensors_439, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpu-usr" }, + "GPU", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::SKIN, + { "quiet-therm-adc" }, + "skin", + 40000, + 95000, + 40000, + true, + }, + { + TemperatureType::BCL_VOLTAGE, + { "vbat_adc" }, + "vbat", + 3200, + 3000, + 3200, + false, + }, + { + TemperatureType::BCL_CURRENT, + { "ibat-high" }, + "ibat", + 4200, + 4400, + 4200, + true, + }, + { + TemperatureType::BCL_PERCENTAGE, + { "soc" }, + "soc", + 10, + 2, + 10, + false, + }, + }; + + std::vector<std::string> cpu_sensors_talos = + { + "cpuss-2-usr", + "cpuss-2-usr", + "cpuss-1-usr", + "cpuss-1-usr", + "cpuss-0-usr", + "cpuss-0-usr", + "cpu-1-0-usr", + "cpu-1-2-usr", + }; + + std::vector<struct target_therm_cfg> sensor_cfg_talos_common = + { + { + TemperatureType::CPU, + cpu_sensors_talos, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpu-usr" }, + "gpu", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::SKIN, + { "xo-therm-adc" }, + "skin", + 40000, + 95000, + 40000, + true, + }, + }; + + std::vector<struct target_therm_cfg> sensor_cfg_talos_specific = { + { + TemperatureType::BCL_PERCENTAGE, + { "soc" }, + "soc", + 10, + 2, + 10, + false, + }, + }; + + std::vector<std::string> cpu_sensors_monaco = + { + "cpuss-0-usr", + "cpuss-1-usr", + "cpuss-0-usr", + "cpuss-1-usr", + }; + + std::vector<struct target_therm_cfg> sensor_cfg_monaco = + { + { + TemperatureType::CPU, + cpu_sensors_monaco, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpu-usr" }, + "gpu", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::SKIN, + { "pa-therm0-usr" }, + "skin", + 40000, + 95000, + 40000, + true, + }, + { + TemperatureType::BCL_CURRENT, + { "pm5100-ibat-lvl0" }, + "ibat", + 1100, + 1500, + 1100, + true, + }, + }; + + std::vector<std::string> cpu_sensors_sdm845 = + { + "cpu0-silver-usr", + "cpu1-silver-usr", + "cpu2-silver-usr", + "cpu3-silver-usr", + "cpu0-gold-usr", + "cpu1-gold-usr", + "cpu2-gold-usr", + "cpu3-gold-usr", + }; + + std::vector<struct target_therm_cfg> sensor_cfg_sdm845 = { + { + TemperatureType::CPU, + cpu_sensors_sdm845, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + {"gpu0-usr"}, + "gpu0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + {"gpu1-usr"}, + "gpu1", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::SKIN, + {"xo-therm-adc"}, + "skin", + 40000, + 95000, + 40000, + true, + }, + { + TemperatureType::BCL_PERCENTAGE, + {"soc"}, + "soc", + 10, + 2, + 10, + false, + }, + }; + std::vector<std::string> cpu_sensors_bengal = { "cpuss-2-usr", @@ -493,7 +727,7 @@ namespace implementation { "cpu-1-3", }; - std::vector<struct target_therm_cfg> sensor_cfg_msmnile = { + std::vector<struct target_therm_cfg> sensor_cfg_msmnile_common = { { TemperatureType::CPU, cpu_sensors_kona, @@ -530,6 +764,9 @@ namespace implementation { 40000, true, }, + }; + + std::vector<struct target_therm_cfg> sensor_cfg_msmnile_specific = { { TemperatureType::BCL_CURRENT, { "pm8150b-ibat-lvl0" }, @@ -865,6 +1102,69 @@ namespace implementation { }, }; + std::vector<struct target_therm_cfg> diwali_common = { + { + TemperatureType::CPU, + cpu_sensors_waipio, + "", + 95000, + 115000, + 95000, + true, + ThrottlingSeverity::LIGHT, + }, + { + TemperatureType::GPU, + { "gpuss-0" }, + "GPU0", + 95000, + 115000, + 95000, + true, + ThrottlingSeverity::LIGHT, + }, + { + TemperatureType::GPU, + { "gpuss-1" }, + "GPU1", + 95000, + 115000, + 95000, + true, + ThrottlingSeverity::LIGHT, + }, + { + TemperatureType::NPU, + { "nspss-0" }, + "nsp0", + 95000, + 115000, + 95000, + true, + ThrottlingSeverity::LIGHT, + }, + { + TemperatureType::NPU, + { "nspss-1" }, + "nsp1", + 95000, + 115000, + 95000, + true, + ThrottlingSeverity::LIGHT, + }, + { + TemperatureType::NPU, + { "nspss-2" }, + "nsp2", + 95000, + 115000, + 95000, + true, + ThrottlingSeverity::LIGHT, + }, + }; + std::vector<struct target_therm_cfg> waipio_specific = { { TemperatureType::BCL_CURRENT, @@ -1042,7 +1342,154 @@ namespace implementation { std::vector<struct target_therm_cfg> diwali_specific = { { TemperatureType::BCL_CURRENT, - { "pm8350b-ibat-lvl0" }, + { "pm7250b-ibat-lvl0" }, + "ibat", + 9000, + 9500, + 9000, + true, + }, + { + TemperatureType::SKIN, + { "quiet-therm" }, + "skin", + 46000, + 95000, + 46000, + true, + ThrottlingSeverity::LIGHT, + }, + }; + + std::vector<std::string> cpu_sensors_neo = + { + "cpu-0-0", + "cpu-0-1", + "cpu-0-2", + "cpu-0-3", + }; + + std::vector<struct target_therm_cfg> neo_common = { + { + TemperatureType::CPU, + cpu_sensors_neo, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-0" }, + "GPU0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-1" }, + "GPU1", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-0" }, + "nsp0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-1" }, + "nsp1", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-2" }, + "nsp2", + 95000, + 115000, + 95000, + true, + }, + }; + + std::vector<std::string> cpu_sensors_parrot = + { + "cpu-0-0", + "cpu-0-1", + "cpu-0-2", + "cpu-0-3", + "cpu-1-0", + "cpu-1-2", + "cpu-1-4", + "cpu-1-6", + }; + + std::vector<struct target_therm_cfg> parrot_common = { + { + TemperatureType::CPU, + cpu_sensors_parrot, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-0" }, + "GPU0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-1" }, + "GPU1", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-0" }, + "nsp0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-1" }, + "nsp1", + 95000, + 115000, + 95000, + true, + }, + }; + + std::vector<struct target_therm_cfg> parrot_specific = { + { + TemperatureType::BCL_CURRENT, + { "pm7250b-ibat-lvl0" }, "ibat", 6000, 7500, @@ -1051,15 +1498,215 @@ namespace implementation { }, { TemperatureType::SKIN, - { "quiet-therm" }, + { "xo-therm" }, "skin", - 40000, + 55000, + 95000, + 55000, + true, + }, + }; + + std::vector<std::string> cpu_sensors_anorak = + { + "cpu-0-0-0", + "cpu-0-0-1", + "cpu-0-1-0", + "cpu-0-1-1", + "cpu-1-0-0", + "cpu-1-0-1", + "cpu-1-1-0", + "cpu-1-1-1", + "cpu-1-2-0", + "cpu-1-2-1", + "cpu-1-3-0", + "cpu-1-3-1", + }; + + std::vector<struct target_therm_cfg> anorak_common = { + { + TemperatureType::CPU, + cpu_sensors_anorak, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-0" }, + "nsp0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-1" }, + "nsp1", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::NPU, + { "nspss-2" }, + "nsp2", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-0" }, + "GPU0", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-1" }, + "GPU1", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-2" }, + "GPU2", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-3" }, + "GPU3", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-4" }, + "GPU4", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-5" }, + "GPU5", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-6" }, + "GPU6", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss-7" }, + "GPU7", + 95000, + 115000, + 95000, + true, + }, + }; + std::vector<struct target_therm_cfg> anorak_specific = { + { + TemperatureType::BCL_CURRENT, + { "pm8550b-ibat-lvl0" }, + "ibat", + 9000, + 10000, + 9000, + true, + }, + { + TemperatureType::SKIN, + { "sys-therm-0" }, + "skin", + 55000, + 95000, + 55000, + true, + }, + }; + + std::vector<std::string> cpu_sensors_ravelin = + { + "cpu-0-0", + "cpu-0-1", + "cpu-0-2", + "cpu-0-3", + "cpu-0-4", + "cpu-0-5", + "cpu-1-0", + "cpu-1-2", + }; + + std::vector<struct target_therm_cfg> ravelin_common = { + { + TemperatureType::CPU, + cpu_sensors_parrot, + "", + 95000, + 115000, + 95000, + true, + }, + { + TemperatureType::GPU, + { "gpuss" }, + "GPU", + 95000, + 115000, 95000, - 40000, true, }, }; + std::vector<struct target_therm_cfg> ravelin_specific = { + { + TemperatureType::BCL_CURRENT, + { "pm7250b-ibat-lvl0" }, + "ibat", + 6000, + 7500, + 6000, + true, + }, + { + TemperatureType::SKIN, + { "sys-therm6" }, + "skin", + 55000, + 95000, + 55000, + true, + }, + }; struct target_therm_cfg bat_conf = { TemperatureType::BATTERY, { "battery" }, @@ -1093,6 +1740,17 @@ namespace implementation { const std::unordered_map<int, std::vector<struct target_therm_cfg>> msm_soc_map = { + {353, sensor_cfg_439}, + {354, sensor_cfg_439}, + {363, sensor_cfg_439}, + {364, sensor_cfg_439}, + {416, sensor_cfg_439}, + {437, sensor_cfg_439}, + {355, sensor_cfg_talos_common}, + {377, sensor_cfg_talos_common}, + {380, sensor_cfg_talos_common}, + {321, sensor_cfg_sdm845}, + {341, sensor_cfg_sdm845}, {417, sensor_cfg_bengal}, // bengal {420, sensor_cfg_bengal}, {444, sensor_cfg_bengal}, @@ -1117,10 +1775,10 @@ namespace implementation { {435, sensor_cfg_lito}, {459, sensor_cfg_lito}, {476, sensor_cfg_lito}, // orchid - {339, sensor_cfg_msmnile}, - {361, sensor_cfg_msmnile}, - {362, sensor_cfg_msmnile}, - {367, sensor_cfg_msmnile}, + {339, sensor_cfg_msmnile_common}, + {361, sensor_cfg_msmnile_common}, + {362, sensor_cfg_msmnile_common}, + {367, sensor_cfg_msmnile_common}, {356, kona_common}, // kona {415, lahaina_common}, // lahaina {439, lahaina_common}, // lahainap @@ -1129,15 +1787,40 @@ namespace implementation { {502, lahaina_common}, {450, lahaina_common}, // shima {454, sensor_cfg_holi}, // holi + {507, sensor_cfg_holi}, // blair {475, sensor_cfg_yupik}, // yupik {515, sensor_cfg_yupik}, // YUPIK-LTE + {576, sensor_cfg_yupik}, // yupik qcm5430 modem + {575, sensor_cfg_yupik}, // yupik qcm5430 + {567, sensor_cfg_yupik}, // yupik + {563, sensor_cfg_yupik}, // yupik + {553, sensor_cfg_yupik}, // yupik + {546, sensor_cfg_yupik}, // yupik + {499, sensor_cfg_yupik}, // yupik + {498, sensor_cfg_yupik}, // yupik-iot + {497, sensor_cfg_yupik}, // yupik-iot mdm + {488, sensor_cfg_yupik}, // yupik + {487, sensor_cfg_yupik}, // yupik + {486, sensor_cfg_monaco}, // monaco + {517, sensor_cfg_monaco}, // monaco {457, waipio_common}, //Waipio {482, waipio_common}, //Waipio {552, waipio_common}, //Waipio-LTE - {506, waipio_common}, //diwali + {506, diwali_common}, //diwali + {547, diwali_common}, //diwali + {564, diwali_common}, //diwali-LTE {530, waipio_common}, // cape {531, waipio_common}, // cape {540, waipio_common}, // cape + {525, neo_common}, + {554, neo_common}, + {537, parrot_common}, //Netrani mobile + {583, parrot_common}, //Netrani mobile without modem + {613, parrot_common}, //Netrani APQ + {549, anorak_common}, + {568, ravelin_common}, //Clarence Mobile + {581, ravelin_common}, //Clarence IOT + {582, ravelin_common}, //Clarence IOT without modem {519, kalama_common}, //Kalama {536, kalama_common}, //Kalamap {600, kalama_common}, //Kalama_sg @@ -1150,6 +1833,10 @@ namespace implementation { const std::unordered_map<int, std::vector<struct target_therm_cfg>> msm_soc_specific = { + {355, sensor_cfg_talos_specific}, + {339, sensor_cfg_msmnile_specific}, + {361, sensor_cfg_msmnile_specific}, + {362, sensor_cfg_msmnile_specific}, {356, kona_specific}, // kona {415, lahaina_specific}, // lahaina {439, lahaina_specific}, // lahainap @@ -1161,9 +1848,18 @@ namespace implementation { {482, waipio_specific}, //Waipio {552, waipio_specific}, //Waipio-LTE {506, diwali_specific}, //diwali + {547, diwali_specific}, //diwali + {564, diwali_specific}, //diwali-LTE {530, waipio_specific}, // cape {531, waipio_specific}, // cape {540, waipio_specific}, // cape + {537, parrot_specific}, //Netrani mobile + {583, parrot_specific}, //Netrani mobile without modem + {613, parrot_specific}, //Netrani APQ + {549, anorak_specific}, + {568, ravelin_specific}, //Clarence Mobile + {581, ravelin_specific}, //Clarence IOT + {582, ravelin_specific}, //Clarence IOT without modem {519, kalama_specific}, //Kalama {536, kalama_specific}, //Kalamap {600, kalama_specific}, //Kalama_sg @@ -1172,6 +1868,13 @@ namespace implementation { {604, kalama_specific}, //Kalama_qcm }; + const std::unordered_map<int, bool> + battery_bcl_cfg_disable_map = { + {367, true}, + {377, true}, + {380, true}, + }; + std::vector<struct target_therm_cfg> add_target_config( int socID, std::vector<struct target_therm_cfg> conf) @@ -1190,6 +1893,7 @@ namespace implementation { ThermalConfig::ThermalConfig():cmnInst() { std::unordered_map<int, std::vector<struct target_therm_cfg>>::const_iterator it; + std::unordered_map<int, bool>::const_iterator it_2; std::vector<struct target_therm_cfg>::iterator it_vec; bool bcl_defined = false; std::string soc_val; @@ -1227,10 +1931,13 @@ namespace implementation { bcl_defined = true; } - thermalConfig.push_back(bat_conf); - if (!bcl_defined) - thermalConfig.insert(thermalConfig.end(), - bcl_conf.begin(), bcl_conf.end()); + it_2 = battery_bcl_cfg_disable_map.find(soc_id); + if (it_2 == battery_bcl_cfg_disable_map.end() || !it_2->second) { + thermalConfig.push_back(bat_conf); + if (!bcl_defined) + thermalConfig.insert(thermalConfig.end(), + bcl_conf.begin(), bcl_conf.end()); + } LOG(DEBUG) << "Total sensors:" << thermalConfig.size(); } } // namespace implementation diff --git a/thermalData.h b/thermalData.h index 93eb5cc..ded1441 100644 --- a/thermalData.h +++ b/thermalData.h @@ -26,6 +26,38 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Qualcomm Innovation Center, Inc. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED + * BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + *(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef THERMAL_THERMAL_DATA_H__ @@ -70,6 +102,7 @@ using ::android::hardware::thermal::V2_0::ThrottlingSeverity; int shutdwn_thresh; int vr_thresh; bool positive_thresh_ramp; + ThrottlingSeverity throt_severity = ThrottlingSeverity::SEVERE; }; struct therm_sensor { @@ -80,6 +113,7 @@ using ::android::hardware::thermal::V2_0::ThrottlingSeverity; ThrottlingSeverity lastThrottleStatus; Temperature t; TemperatureThreshold thresh; + ThrottlingSeverity throt_severity; }; struct therm_cdev { diff --git a/thermalUtils.cpp b/thermalUtils.cpp index 4cd94a2..f6216cc 100644 --- a/thermalUtils.cpp +++ b/thermalUtils.cpp @@ -26,6 +26,38 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Qualcomm Innovation Center, Inc. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED + * BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + *(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <android-base/file.h> @@ -131,7 +163,7 @@ int ThermalUtils::readTemperatures(hidl_vec<Temperature_1_0>& temp) _temp.name = sens.t.name; _temp.type = (TemperatureType_1_0)sens.t.type; _temp.throttlingThreshold = sens.thresh.hotThrottlingThresholds[ - (size_t)ThrottlingSeverity::SEVERE]; + (size_t)sens.throt_severity]; _temp.shutdownThreshold = sens.thresh.hotThrottlingThresholds[ (size_t)ThrottlingSeverity::SHUTDOWN]; _temp.vrThrottlingThreshold = sens.thresh.vrThrottlingThreshold; diff --git a/thermalUtilsNetlink.cpp b/thermalUtilsNetlink.cpp index 2b340f8..aced9c2 100644 --- a/thermalUtilsNetlink.cpp +++ b/thermalUtilsNetlink.cpp @@ -27,6 +27,38 @@ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * Changes from Qualcomm Innovation Center are provided under the following license: + * + * Copyright (c) 2022, Qualcomm Innovation Center, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of Qualcomm Innovation Center, Inc. nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * + * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE GRANTED + * BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS + * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER + * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + *(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <android-base/file.h> @@ -189,7 +221,7 @@ int ThermalUtils::readTemperatures(hidl_vec<Temperature_1_0>& temp) _temp.name = sens.t.name; _temp.type = (TemperatureType_1_0)sens.t.type; _temp.throttlingThreshold = sens.thresh.hotThrottlingThresholds[ - (size_t)ThrottlingSeverity::SEVERE]; + (size_t)sens.throt_severity]; _temp.shutdownThreshold = sens.thresh.hotThrottlingThresholds[ (size_t)ThrottlingSeverity::SHUTDOWN]; _temp.vrThrottlingThreshold = sens.thresh.vrThrottlingThreshold; |