blob: 1d31ac55764966c08748810434bb4f76234365f8 [file] [log] [blame]
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -07001/*
2 * Copyright (c) 2020, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 *
18 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
19 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
22 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
25 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
28 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#ifndef THERMAL_THERMAL_COMMON_H__
32#define THERMAL_THERMAL_COMMON_H__
33
34#include "thermalData.h"
35
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070036namespace aidl {
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070037namespace android {
38namespace hardware {
39namespace thermal {
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070040
Ram Chandrasekar9e1b3262021-07-29 15:41:00 -070041#define RETRY_CT 3
42
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070043class ThermalCommon {
44 public:
45 ThermalCommon();
46 ~ThermalCommon() = default;
47
Ram Chandrasekardbc52fc2020-11-17 13:57:40 -080048 int readFromFile(std::string_view path, std::string& out);
49 int initThermalZones(std::vector<struct target_therm_cfg>& cfg);
50 void initThreshold(struct therm_sensor& sens);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070051 int initCdev();
52
Ram Chandrasekardbc52fc2020-11-17 13:57:40 -080053 int read_cdev_state(struct therm_cdev& cdev);
54 int read_temperature(struct therm_sensor& sensor);
55 int estimateSeverity(struct therm_sensor& sensor);
Manaf Meethalavalappu Pallikunhi4d2b7142024-08-22 01:18:41 +053056 int findLimitProfile(void);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070057
58 std::vector<struct therm_sensor> fetch_sensor_list()
59 {
60 return sens;
61 };
62 std::vector<struct therm_cdev> fetch_cdev_list()
63 {
64 return cdev;
65 };
66
67 private:
68 int ncpus;
69 std::vector<struct target_therm_cfg> cfg;
70 std::vector<struct therm_sensor> sens;
71 std::vector<struct therm_cdev> cdev;
72
Priyansh Jaine98d33d2025-05-09 08:53:44 +053073 ThrottlingSeverity left_display_throttle_severity{ThrottlingSeverity::NONE};
74 ThrottlingSeverity right_display_throttle_severity{ThrottlingSeverity::NONE};
75
Ram Chandrasekardbc52fc2020-11-17 13:57:40 -080076 int initializeCpuSensor(struct target_therm_cfg& cpu_cfg);
77 int initialize_sensor(struct target_therm_cfg& cfg,
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070078 int sens_idx);
79};
80
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070081} // namespace thermal
82} // namespace hardware
83} // namespace android
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070084} // namespace aidl
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070085#endif // THERMAL_THERMAL_COMMON_H__