exynos_tmu.h 3.6 KB
Newer Older
D
Donggeun Kim 已提交
1
/*
2
 * exynos_tmu.h - Samsung EXYNOS TMU (Thermal Management Unit)
D
Donggeun Kim 已提交
3 4 5
 *
 *  Copyright (C) 2011 Samsung Electronics
 *  Donggeun Kim <dg77.kim@samsung.com>
6
 *  Amit Daniel Kachhap <amit.daniel@samsung.com>
D
Donggeun Kim 已提交
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 *
 * 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
 */

23 24
#ifndef _EXYNOS_TMU_H
#define _EXYNOS_TMU_H
25
#include <linux/cpu_cooling.h>
D
Donggeun Kim 已提交
26

27 28
#include "exynos_thermal_common.h"

D
Donggeun Kim 已提交
29 30 31 32 33 34
enum calibration_type {
	TYPE_ONE_POINT_TRIMMING,
	TYPE_TWO_POINT_TRIMMING,
	TYPE_NONE,
};

35 36 37 38
enum soc_type {
	SOC_ARCH_EXYNOS4210 = 1,
	SOC_ARCH_EXYNOS,
};
39

D
Donggeun Kim 已提交
40
/**
41
 * struct exynos_tmu_platform_data
D
Donggeun Kim 已提交
42 43
 * @threshold: basic temperature for generating interrupt
 *	       25 <= threshold <= 125 [unit: degree Celsius]
44 45
 * @threshold_falling: differntial value for setting threshold
 *		       of temperature falling interrupt.
D
Donggeun Kim 已提交
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
 * @trigger_levels: array for each interrupt levels
 *	[unit: degree Celsius]
 *	0: temperature for trigger_level0 interrupt
 *	   condition for trigger_level0 interrupt:
 *		current temperature > threshold + trigger_levels[0]
 *	1: temperature for trigger_level1 interrupt
 *	   condition for trigger_level1 interrupt:
 *		current temperature > threshold + trigger_levels[1]
 *	2: temperature for trigger_level2 interrupt
 *	   condition for trigger_level2 interrupt:
 *		current temperature > threshold + trigger_levels[2]
 *	3: temperature for trigger_level3 interrupt
 *	   condition for trigger_level3 interrupt:
 *		current temperature > threshold + trigger_levels[3]
 * @trigger_level0_en:
 *	1 = enable trigger_level0 interrupt,
 *	0 = disable trigger_level0 interrupt
 * @trigger_level1_en:
 *	1 = enable trigger_level1 interrupt,
 *	0 = disable trigger_level1 interrupt
 * @trigger_level2_en:
 *	1 = enable trigger_level2 interrupt,
 *	0 = disable trigger_level2 interrupt
 * @trigger_level3_en:
 *	1 = enable trigger_level3 interrupt,
 *	0 = disable trigger_level3 interrupt
 * @gain: gain of amplifier in the positive-TC generator block
 *	0 <= gain <= 15
 * @reference_voltage: reference voltage of amplifier
 *	in the positive-TC generator block
 *	0 <= reference_voltage <= 31
77 78 79 80
 * @noise_cancel_mode: noise cancellation mode
 *	000, 100, 101, 110 and 111 can be different modes
 * @type: determines the type of SOC
 * @efuse_value: platform defined fuse value
D
Donggeun Kim 已提交
81
 * @cal_type: calibration type for temperature
82 83 84
 * @freq_clip_table: Table representing frequency reduction percentage.
 * @freq_tab_count: Count of the above table as frequency reduction may
 *	applicable to only some of the trigger levels.
D
Donggeun Kim 已提交
85
 *
86
 * This structure is required for configuration of exynos_tmu driver.
D
Donggeun Kim 已提交
87
 */
88
struct exynos_tmu_platform_data {
D
Donggeun Kim 已提交
89
	u8 threshold;
90
	u8 threshold_falling;
D
Donggeun Kim 已提交
91 92 93 94 95 96 97 98
	u8 trigger_levels[4];
	bool trigger_level0_en;
	bool trigger_level1_en;
	bool trigger_level2_en;
	bool trigger_level3_en;

	u8 gain;
	u8 reference_voltage;
99 100
	u8 noise_cancel_mode;
	u32 efuse_value;
D
Donggeun Kim 已提交
101 102

	enum calibration_type cal_type;
103
	enum soc_type type;
104 105
	struct freq_clip_table freq_tab[4];
	unsigned int freq_tab_count;
D
Donggeun Kim 已提交
106
};
107
#endif /* _EXYNOS_TMU_H */