1 /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. 2 * 3 * Redistribution and use in source and binary forms, with or without 4 * modification, are permitted provided that the following conditions are 5 * met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above 9 * copyright notice, this list of conditions and the following 10 * disclaimer in the documentation and/or other materials provided 11 * with the distribution. 12 * * Neither the name of The Linux Foundation nor the names of its 13 * contributors may be used to endorse or promote products derived 14 * from this software without specific prior written permission. 15 16 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS 20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 23 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 26 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #include <hardware/thermal.h> 30 #define ARRAY_SIZE(x) (int)(sizeof(x)/sizeof(x[0])) 31 32 enum therm_msm_id { 33 THERM_MSM_UNKNOWN = 0, 34 THERM_MSM_8953, 35 THERM_SDM_660, 36 THERM_SDM_630, 37 THERM_SDM_710, 38 THERM_QCS_605, 39 THERM_SDM_632, 40 THERM_SDM_439, 41 THERM_MSMNILE, 42 THERM_TALOS, 43 THERM_SDMMAGPIE, 44 THERM_MSM_8917, 45 THERM_TRINKET, 46 THERM_KONA, 47 THERM_LITO, 48 THERM_ATOLL, 49 THERM_BENGAL, 50 }; 51 52 struct target_therm_cfg { 53 enum temperature_type type; 54 char **sensor_list; 55 uint8_t sens_cnt; 56 char *label; 57 float mult; 58 int throt_thresh; 59 int shutdwn_thresh; 60 int vr_thresh; 61 }; 62 63 struct vendor_temperature { 64 int tzn; 65 float mult; 66 temperature_t t; 67 }; 68 69 70 int read_line_from_file(const char *path, char *buf, size_t count); 71 size_t get_num_cpus(); 72 const char *get_cpu_label(unsigned int cpu_num); 73 int thermal_zone_init(struct target_therm_cfg *v_sen_t, int cfg_cnt); 74 ssize_t get_temperature_for_all(temperature_t *list, size_t size); 75