1 /* 2 * int340x_thermal_zone.h 3 * Copyright (c) 2015, Intel Corporation. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms and conditions of the GNU General Public License, 7 * version 2, as published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12 * more details. 13 * 14 */ 15 16 #ifndef __INT340X_THERMAL_ZONE_H__ 17 #define __INT340X_THERMAL_ZONE_H__ 18 19 #include <acpi/acpi_lpat.h> 20 21 #define INT340X_THERMAL_MAX_ACT_TRIP_COUNT 10 22 23 struct active_trip { 24 int temp; 25 int id; 26 bool valid; 27 }; 28 29 struct int34x_thermal_zone { 30 struct acpi_device *adev; 31 struct active_trip act_trips[INT340X_THERMAL_MAX_ACT_TRIP_COUNT]; 32 unsigned long *aux_trips; 33 int aux_trip_nr; 34 int psv_temp; 35 int psv_trip_id; 36 int crt_temp; 37 int crt_trip_id; 38 int hot_temp; 39 int hot_trip_id; 40 struct thermal_zone_device *zone; 41 struct thermal_zone_device_ops *override_ops; 42 void *priv_data; 43 struct acpi_lpat_conversion_table *lpat_table; 44 }; 45 46 struct int34x_thermal_zone *int340x_thermal_zone_add(struct acpi_device *, 47 struct thermal_zone_device_ops *override_ops); 48 void int340x_thermal_zone_remove(struct int34x_thermal_zone *); 49 int int340x_thermal_read_trips(struct int34x_thermal_zone *int34x_zone); 50 51 static inline void int340x_thermal_zone_set_priv_data( 52 struct int34x_thermal_zone *tzone, void *priv_data) 53 { 54 tzone->priv_data = priv_data; 55 } 56 57 static inline void *int340x_thermal_zone_get_priv_data( 58 struct int34x_thermal_zone *tzone) 59 { 60 return tzone->priv_data; 61 } 62 63 static inline void int340x_thermal_zone_device_update( 64 struct int34x_thermal_zone *tzone, 65 enum thermal_notify_event event) 66 { 67 thermal_zone_device_update(tzone->zone, event); 68 } 69 70 #endif 71