diff options
author | Priyansh Jain <quic_priyjain@quicinc.com> | 2022-07-20 15:51:13 +0530 |
---|---|---|
committer | Jake Weinstein <jake@aospa.co> | 2023-03-09 01:07:13 +0900 |
commit | 011d4bb77cbdcbf158d75c3ab88e6d0942959fed (patch) | |
tree | 6e34dd10b2388d515bb639413594807ac90ec21c | |
parent | df1f5d7143594e92411c1808a5cd23bb0c4f0427 (diff) |
thermal-hal: add support for severity in HAL config for throttling threshold
Add support to selectively configure thermal HAL severity for
throttling threshold for any HAL config.
Signed-off-by: Priyansh Jain <quic_priyjain@quicinc.com>
-rw-r--r-- | thermalCommon.cpp | 37 | ||||
-rw-r--r-- | thermalConfig.cpp | 70 | ||||
-rw-r--r-- | thermalData.h | 34 | ||||
-rw-r--r-- | thermalUtils.cpp | 34 | ||||
-rw-r--r-- | thermalUtilsNetlink.cpp | 34 |
5 files changed, 202 insertions, 7 deletions
diff --git a/thermalCommon.cpp b/thermalCommon.cpp index 02c14e1..cf5a998 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> @@ -261,6 +293,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++) { @@ -270,10 +303,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 395100c..9ba3802 100644 --- a/thermalConfig.cpp +++ b/thermalConfig.cpp @@ -1052,6 +1052,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, @@ -1244,6 +1307,7 @@ namespace implementation { 95000, 40000, true, + ThrottlingSeverity::LIGHT, }, }; @@ -1481,9 +1545,9 @@ namespace implementation { {457, waipio_common}, //Waipio {482, waipio_common}, //Waipio {552, waipio_common}, //Waipio-LTE - {506, waipio_common}, //diwali - {547, waipio_common}, //diwali - {564, waipio_common}, //diwali-LTE + {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 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; |