Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.12-rc2 107 lines 3.2 kB view raw
1/* 2 * exynos_thermal_common.h - Samsung EXYNOS common header file 3 * 4 * Copyright (C) 2013 Samsung Electronics 5 * Amit Daniel Kachhap <amit.daniel@samsung.com> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 20 * 21 */ 22 23#ifndef _EXYNOS_THERMAL_COMMON_H 24#define _EXYNOS_THERMAL_COMMON_H 25 26/* In-kernel thermal framework related macros & definations */ 27#define SENSOR_NAME_LEN 16 28#define MAX_TRIP_COUNT 8 29#define MAX_COOLING_DEVICE 4 30#define MAX_THRESHOLD_LEVS 5 31 32#define ACTIVE_INTERVAL 500 33#define IDLE_INTERVAL 10000 34#define MCELSIUS 1000 35 36/* CPU Zone information */ 37#define PANIC_ZONE 4 38#define WARN_ZONE 3 39#define MONITOR_ZONE 2 40#define SAFE_ZONE 1 41 42#define GET_ZONE(trip) (trip + 2) 43#define GET_TRIP(zone) (zone - 2) 44 45enum trigger_type { 46 THROTTLE_ACTIVE = 1, 47 THROTTLE_PASSIVE, 48 SW_TRIP, 49 HW_TRIP, 50}; 51 52/** 53 * struct freq_clip_table 54 * @freq_clip_max: maximum frequency allowed for this cooling state. 55 * @temp_level: Temperature level at which the temperature clipping will 56 * happen. 57 * @mask_val: cpumask of the allowed cpu's where the clipping will take place. 58 * 59 * This structure is required to be filled and passed to the 60 * cpufreq_cooling_unregister function. 61 */ 62struct freq_clip_table { 63 unsigned int freq_clip_max; 64 unsigned int temp_level; 65 const struct cpumask *mask_val; 66}; 67 68struct thermal_trip_point_conf { 69 int trip_val[MAX_TRIP_COUNT]; 70 int trip_type[MAX_TRIP_COUNT]; 71 int trip_count; 72 unsigned char trigger_falling; 73}; 74 75struct thermal_cooling_conf { 76 struct freq_clip_table freq_data[MAX_TRIP_COUNT]; 77 int freq_clip_count; 78}; 79 80struct thermal_sensor_conf { 81 char name[SENSOR_NAME_LEN]; 82 int (*read_temperature)(void *data); 83 int (*write_emul_temp)(void *drv_data, unsigned long temp); 84 struct thermal_trip_point_conf trip_data; 85 struct thermal_cooling_conf cooling_data; 86 void *driver_data; 87 void *pzone_data; 88 struct device *dev; 89}; 90 91/*Functions used exynos based thermal sensor driver*/ 92#ifdef CONFIG_EXYNOS_THERMAL_CORE 93void exynos_unregister_thermal(struct thermal_sensor_conf *sensor_conf); 94int exynos_register_thermal(struct thermal_sensor_conf *sensor_conf); 95void exynos_report_trigger(struct thermal_sensor_conf *sensor_conf); 96#else 97static inline void 98exynos_unregister_thermal(struct thermal_sensor_conf *sensor_conf) { return; } 99 100static inline int 101exynos_register_thermal(struct thermal_sensor_conf *sensor_conf) { return 0; } 102 103static inline void 104exynos_report_trigger(struct thermal_sensor_conf *sensor_conf) { return; } 105 106#endif /* CONFIG_EXYNOS_THERMAL_CORE */ 107#endif /* _EXYNOS_THERMAL_COMMON_H */