blob: 618df9308207f0eb5ae56c5bd1d066a4d537d8d7 [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);
Priyansh Jainc5ea5602024-08-12 11:18:21 +053050 int initNewThermalZone(struct target_therm_cfg& cfg);
Ram Chandrasekardbc52fc2020-11-17 13:57:40 -080051 void initThreshold(struct therm_sensor& sens);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070052 int initCdev();
53
Ram Chandrasekardbc52fc2020-11-17 13:57:40 -080054 int read_cdev_state(struct therm_cdev& cdev);
55 int read_temperature(struct therm_sensor& sensor);
56 int estimateSeverity(struct therm_sensor& sensor);
Manaf Meethalavalappu Pallikunhi4d2b7142024-08-22 01:18:41 +053057 int findLimitProfile(void);
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070058
59 std::vector<struct therm_sensor> fetch_sensor_list()
60 {
61 return sens;
62 };
63 std::vector<struct therm_cdev> fetch_cdev_list()
64 {
65 return cdev;
66 };
67
68 private:
69 int ncpus;
70 std::vector<struct target_therm_cfg> cfg;
71 std::vector<struct therm_sensor> sens;
72 std::vector<struct therm_cdev> cdev;
73
Priyansh Jaine98d33d2025-05-09 08:53:44 +053074 ThrottlingSeverity left_display_throttle_severity{ThrottlingSeverity::NONE};
75 ThrottlingSeverity right_display_throttle_severity{ThrottlingSeverity::NONE};
76
Ram Chandrasekardbc52fc2020-11-17 13:57:40 -080077 int initializeCpuSensor(struct target_therm_cfg& cpu_cfg);
78 int initialize_sensor(struct target_therm_cfg& cfg,
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070079 int sens_idx);
80};
81
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070082} // namespace thermal
83} // namespace hardware
84} // namespace android
Bavyasritha Alahari0a344f42023-04-26 17:16:51 -070085} // namespace aidl
Ram Chandrasekardac8f7d2020-06-10 12:23:28 -070086#endif // THERMAL_THERMAL_COMMON_H__