1 /* Copyright (c) 2018, 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 }; 48 49 struct target_therm_cfg { 50 enum temperature_type type; 51 char **sensor_list; 52 uint8_t sens_cnt; 53 char *label; 54 float mult; 55 int throt_thresh; 56 int shutdwn_thresh; 57 int vr_thresh; 58 }; 59 60 struct vendor_temperature { 61 int tzn; 62 float mult; 63 temperature_t t; 64 }; 65 66 67 int read_line_from_file(const char *path, char *buf, size_t count); 68 size_t get_num_cpus(); 69 const char *get_cpu_label(unsigned int cpu_num); 70 int thermal_zone_init(struct target_therm_cfg *v_sen_t, int cfg_cnt); 71 ssize_t get_temperature_for_all(temperature_t *list, size_t size); 72