mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-12 00:38:55 +00:00
bb34b4c8cf
This patch adds entries min_efuse_value, max_efuse_value, default_temp_offset, trigger_type, cal_type, trim_first_point, trim_second_point, max_trigger_level trigger_enable in the TMU platform data structure. Also the driver is modified to use the data passed by these new platform memebers instead of the constant macros. All these changes helps in separating the SOC specific data part from the TMU driver. Acked-by: Kukjin Kim <kgene.kim@samsung.com> Acked-by: Jonghwa Lee <jonghwa3.lee@samsung.com> Signed-off-by: Amit Daniel Kachhap <amit.daniel@samsung.com> Acked-by: Eduardo Valentin <eduardo.valentin@ti.com> Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
107 lines
3.0 KiB
C
107 lines
3.0 KiB
C
/*
|
|
* 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 4
|
|
|
|
#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)
|
|
|
|
#define EXYNOS_ZONE_COUNT 3
|
|
|
|
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_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 *private_data;
|
|
};
|
|
|
|
/*Functions used exynos based thermal sensor driver*/
|
|
#ifdef CONFIG_EXYNOS_THERMAL_CORE
|
|
void exynos_unregister_thermal(void);
|
|
int exynos_register_thermal(struct thermal_sensor_conf *sensor_conf);
|
|
void exynos_report_trigger(void);
|
|
#else
|
|
static inline void
|
|
exynos_unregister_thermal(void) { return; }
|
|
|
|
static inline int
|
|
exynos_register_thermal(struct thermal_sensor_conf *sensor_conf) { return 0; }
|
|
|
|
static inline void
|
|
exynos_report_trigger(void) { return; }
|
|
|
|
#endif /* CONFIG_EXYNOS_THERMAL_CORE */
|
|
#endif /* _EXYNOS_THERMAL_COMMON_H */
|