123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- /*
- * exynos_thermal_common.h - Samsung EXYNOS common header file
- *
- * Copyright (C) 2013 Samsung Electronics
- * Amit Daniel Kachhap <amit.daniel@samsung.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
- #ifndef _EXYNOS_THERMAL_COMMON_H
- #define _EXYNOS_THERMAL_COMMON_H
- /* In-kernel thermal framework related macros & definations */
- #define SENSOR_NAME_LEN 16
- #define MAX_TRIP_COUNT 8
- #define MAX_COOLING_DEVICE 4
- #define MAX_THRESHOLD_LEVS 5
- #define ACTIVE_INTERVAL 500
- #define IDLE_INTERVAL 10000
- #define MCELSIUS 1000
- /* CPU Zone information */
- #define PANIC_ZONE 4
- #define WARN_ZONE 3
- #define MONITOR_ZONE 2
- #define SAFE_ZONE 1
- #define GET_ZONE(trip) (trip + 2)
- #define GET_TRIP(zone) (zone - 2)
- enum trigger_type {
- THROTTLE_ACTIVE = 1,
- THROTTLE_PASSIVE,
- SW_TRIP,
- HW_TRIP,
- };
- /**
- * struct freq_clip_table
- * @freq_clip_max: maximum frequency allowed for this cooling state.
- * @temp_level: Temperature level at which the temperature clipping will
- * happen.
- * @mask_val: cpumask of the allowed cpu's where the clipping will take place.
- *
- * This structure is required to be filled and passed to the
- * cpufreq_cooling_unregister function.
- */
- struct freq_clip_table {
- unsigned int freq_clip_max;
- unsigned int temp_level;
- const struct cpumask *mask_val;
- };
- struct thermal_trip_point_conf {
- int trip_val[MAX_TRIP_COUNT];
- int trip_type[MAX_TRIP_COUNT];
- int trip_count;
- unsigned char trigger_falling;
- };
- struct thermal_cooling_conf {
- struct freq_clip_table freq_data[MAX_TRIP_COUNT];
- int freq_clip_count;
- };
- struct thermal_sensor_conf {
- char name[SENSOR_NAME_LEN];
- int (*read_temperature)(void *data);
- int (*write_emul_temp)(void *drv_data, unsigned long temp);
- struct thermal_trip_point_conf trip_data;
- struct thermal_cooling_conf cooling_data;
- void *driver_data;
- void *pzone_data;
- struct device *dev;
- };
- /*Functions used exynos based thermal sensor driver*/
- #ifdef CONFIG_EXYNOS_THERMAL_CORE
- void exynos_unregister_thermal(struct thermal_sensor_conf *sensor_conf);
- int exynos_register_thermal(struct thermal_sensor_conf *sensor_conf);
- void exynos_report_trigger(struct thermal_sensor_conf *sensor_conf);
- #else
- static inline void
- exynos_unregister_thermal(struct thermal_sensor_conf *sensor_conf) { return; }
- static inline int
- exynos_register_thermal(struct thermal_sensor_conf *sensor_conf) { return 0; }
- static inline void
- exynos_report_trigger(struct thermal_sensor_conf *sensor_conf) { return; }
- #endif /* CONFIG_EXYNOS_THERMAL_CORE */
- #endif /* _EXYNOS_THERMAL_COMMON_H */
|