Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
[linux-2.6-block.git] / drivers / thermal / ti-soc-thermal / omap4-thermal-data.c
CommitLineData
9c92ab61 1// SPDX-License-Identifier: GPL-2.0-only
1a31270e
EV
2/*
3 * OMAP4 thermal driver.
4 *
5 * Copyright (C) 2011-2012 Texas Instruments Inc.
6 * Contact:
7 * Eduardo Valentin <eduardo.valentin@ti.com>
1a31270e
EV
8 */
9
7372add4
EV
10#include "ti-thermal.h"
11#include "ti-bandgap.h"
787f3c27 12#include "omap4xxx-bandgap.h"
1a31270e
EV
13
14/*
15 * OMAP4430 has one instance of thermal sensor for MPU
16 * need to describe the individual bit fields
17 */
18static struct temp_sensor_registers
19omap4430_mpu_temp_sensor_registers = {
20 .temp_sensor_ctrl = OMAP4430_TEMP_SENSOR_CTRL_OFFSET,
21 .bgap_tempsoff_mask = OMAP4430_BGAP_TEMPSOFF_MASK,
22 .bgap_soc_mask = OMAP4430_BGAP_TEMP_SENSOR_SOC_MASK,
23 .bgap_eocz_mask = OMAP4430_BGAP_TEMP_SENSOR_EOCZ_MASK,
24 .bgap_dtemp_mask = OMAP4430_BGAP_TEMP_SENSOR_DTEMP_MASK,
25
26 .bgap_mode_ctrl = OMAP4430_TEMP_SENSOR_CTRL_OFFSET,
c13636ba 27 .mode_ctrl_mask = OMAP4430_CONTINUOUS_MODE_MASK,
1a31270e
EV
28
29 .bgap_efuse = OMAP4430_FUSE_OPP_BGAP,
30};
31
32/* Thresholds and limits for OMAP4430 MPU temperature sensor */
33static struct temp_sensor_data omap4430_mpu_temp_sensor_data = {
34 .min_freq = OMAP4430_MIN_FREQ,
35 .max_freq = OMAP4430_MAX_FREQ,
1a31270e
EV
36};
37
38/*
39 * Temperature values in milli degree celsius
30d24fab
TL
40 * ADC code values from 13 to 107, see TRM
41 * "18.4.10.2.3 ADC Codes Versus Temperature".
1a31270e
EV
42 */
43static const int
44omap4430_adc_to_temp[OMAP4430_ADC_END_VALUE - OMAP4430_ADC_START_VALUE + 1] = {
30d24fab
TL
45 -40000, -38000, -35000, -34000, -32000, -30000, -28000, -26000, -24000,
46 -22000, -20000, -18500, -17000, -15000, -13500, -12000, -10000, -8000,
47 -6500, -5000, -3500, -1500, 0, 2000, 3500, 5000, 6500, 8500, 10000,
48 12000, 13500, 15000, 17000, 19000, 21000, 23000, 25000, 27000, 28500,
49 30000, 32000, 33500, 35000, 37000, 38500, 40000, 42000, 43500, 45000,
50 47000, 48500, 50000, 52000, 53500, 55000, 57000, 58500, 60000, 62000,
51 64000, 66000, 68000, 70000, 71500, 73500, 75000, 77000, 78500, 80000,
52 82000, 83500, 85000, 87000, 88500, 90000, 92000, 93500, 95000, 97000,
53 98500, 100000, 102000, 103500, 105000, 107000, 109000, 111000, 113000,
54 115000, 117000, 118500, 120000, 122000, 123500, 125000,
1a31270e
EV
55};
56
57/* OMAP4430 data */
03e859d3
EV
58const struct ti_bandgap_data omap4430_data = {
59 .features = TI_BANDGAP_FEATURE_MODE_CONFIG |
60 TI_BANDGAP_FEATURE_CLK_CTRL |
735c3535
TL
61 TI_BANDGAP_FEATURE_POWER_SWITCH |
62 TI_BANDGAP_FEATURE_CONT_MODE_ONLY,
1a31270e
EV
63 .fclock_name = "bandgap_fclk",
64 .div_ck_name = "bandgap_fclk",
65 .conv_table = omap4430_adc_to_temp,
26a70ed9
EV
66 .adc_start_val = OMAP4430_ADC_START_VALUE,
67 .adc_end_val = OMAP4430_ADC_END_VALUE,
03e859d3
EV
68 .expose_sensor = ti_thermal_expose_sensor,
69 .remove_sensor = ti_thermal_remove_sensor,
1a31270e
EV
70 .sensors = {
71 {
cff860f5
EV
72 .registers = &omap4430_mpu_temp_sensor_registers,
73 .ts_data = &omap4430_mpu_temp_sensor_data,
74 .domain = "cpu",
b763fdae
EV
75 .slope_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4430,
76 .constant_pcb = OMAP_GRADIENT_CONST_W_PCB_4430,
03e859d3
EV
77 .register_cooling = ti_thermal_register_cpu_cooling,
78 .unregister_cooling = ti_thermal_unregister_cpu_cooling,
1a31270e
EV
79 },
80 },
81 .sensor_count = 1,
82};
83/*
84 * OMAP4460 has one instance of thermal sensor for MPU
85 * need to describe the individual bit fields
86 */
87static struct temp_sensor_registers
88omap4460_mpu_temp_sensor_registers = {
89 .temp_sensor_ctrl = OMAP4460_TEMP_SENSOR_CTRL_OFFSET,
90 .bgap_tempsoff_mask = OMAP4460_BGAP_TEMPSOFF_MASK,
91 .bgap_soc_mask = OMAP4460_BGAP_TEMP_SENSOR_SOC_MASK,
92 .bgap_eocz_mask = OMAP4460_BGAP_TEMP_SENSOR_EOCZ_MASK,
93 .bgap_dtemp_mask = OMAP4460_BGAP_TEMP_SENSOR_DTEMP_MASK,
94
95 .bgap_mask_ctrl = OMAP4460_BGAP_CTRL_OFFSET,
96 .mask_hot_mask = OMAP4460_MASK_HOT_MASK,
97 .mask_cold_mask = OMAP4460_MASK_COLD_MASK,
98
99 .bgap_mode_ctrl = OMAP4460_BGAP_CTRL_OFFSET,
c13636ba 100 .mode_ctrl_mask = OMAP4460_CONTINUOUS_MODE_MASK,
1a31270e
EV
101
102 .bgap_counter = OMAP4460_BGAP_COUNTER_OFFSET,
103 .counter_mask = OMAP4460_COUNTER_MASK,
104
105 .bgap_threshold = OMAP4460_BGAP_THRESHOLD_OFFSET,
106 .threshold_thot_mask = OMAP4460_T_HOT_MASK,
107 .threshold_tcold_mask = OMAP4460_T_COLD_MASK,
108
109 .tshut_threshold = OMAP4460_BGAP_TSHUT_OFFSET,
110 .tshut_hot_mask = OMAP4460_TSHUT_HOT_MASK,
111 .tshut_cold_mask = OMAP4460_TSHUT_COLD_MASK,
112
113 .bgap_status = OMAP4460_BGAP_STATUS_OFFSET,
1a31270e
EV
114 .status_hot_mask = OMAP4460_HOT_FLAG_MASK,
115 .status_cold_mask = OMAP4460_COLD_FLAG_MASK,
116
117 .bgap_efuse = OMAP4460_FUSE_OPP_BGAP,
118};
119
120/* Thresholds and limits for OMAP4460 MPU temperature sensor */
121static struct temp_sensor_data omap4460_mpu_temp_sensor_data = {
122 .tshut_hot = OMAP4460_TSHUT_HOT,
123 .tshut_cold = OMAP4460_TSHUT_COLD,
124 .t_hot = OMAP4460_T_HOT,
125 .t_cold = OMAP4460_T_COLD,
126 .min_freq = OMAP4460_MIN_FREQ,
127 .max_freq = OMAP4460_MAX_FREQ,
1a31270e
EV
128};
129
130/*
131 * Temperature values in milli degree celsius
132 * ADC code values from 530 to 923
133 */
134static const int
135omap4460_adc_to_temp[OMAP4460_ADC_END_VALUE - OMAP4460_ADC_START_VALUE + 1] = {
136 -40000, -40000, -40000, -40000, -39800, -39400, -39000, -38600, -38200,
137 -37800, -37300, -36800, -36400, -36000, -35600, -35200, -34800,
138 -34300, -33800, -33400, -33000, -32600, -32200, -31800, -31300,
139 -30800, -30400, -30000, -29600, -29200, -28700, -28200, -27800,
140 -27400, -27000, -26600, -26200, -25700, -25200, -24800, -24400,
141 -24000, -23600, -23200, -22700, -22200, -21800, -21400, -21000,
142 -20600, -20200, -19700, -19200, -18800, -18400, -18000, -17600,
143 -17200, -16700, -16200, -15800, -15400, -15000, -14600, -14200,
144 -13700, -13200, -12800, -12400, -12000, -11600, -11200, -10700,
145 -10200, -9800, -9400, -9000, -8600, -8200, -7700, -7200, -6800,
146 -6400, -6000, -5600, -5200, -4800, -4300, -3800, -3400, -3000,
147 -2600, -2200, -1800, -1300, -800, -400, 0, 400, 800, 1200, 1600,
148 2100, 2600, 3000, 3400, 3800, 4200, 4600, 5100, 5600, 6000, 6400,
149 6800, 7200, 7600, 8000, 8500, 9000, 9400, 9800, 10200, 10600, 11000,
150 11400, 11900, 12400, 12800, 13200, 13600, 14000, 14400, 14800,
151 15300, 15800, 16200, 16600, 17000, 17400, 17800, 18200, 18700,
152 19200, 19600, 20000, 20400, 20800, 21200, 21600, 22100, 22600,
153 23000, 23400, 23800, 24200, 24600, 25000, 25400, 25900, 26400,
154 26800, 27200, 27600, 28000, 28400, 28800, 29300, 29800, 30200,
155 30600, 31000, 31400, 31800, 32200, 32600, 33100, 33600, 34000,
156 34400, 34800, 35200, 35600, 36000, 36400, 36800, 37300, 37800,
157 38200, 38600, 39000, 39400, 39800, 40200, 40600, 41100, 41600,
158 42000, 42400, 42800, 43200, 43600, 44000, 44400, 44800, 45300,
159 45800, 46200, 46600, 47000, 47400, 47800, 48200, 48600, 49000,
160 49500, 50000, 50400, 50800, 51200, 51600, 52000, 52400, 52800,
161 53200, 53700, 54200, 54600, 55000, 55400, 55800, 56200, 56600,
162 57000, 57400, 57800, 58200, 58700, 59200, 59600, 60000, 60400,
163 60800, 61200, 61600, 62000, 62400, 62800, 63300, 63800, 64200,
164 64600, 65000, 65400, 65800, 66200, 66600, 67000, 67400, 67800,
165 68200, 68700, 69200, 69600, 70000, 70400, 70800, 71200, 71600,
166 72000, 72400, 72800, 73200, 73600, 74100, 74600, 75000, 75400,
167 75800, 76200, 76600, 77000, 77400, 77800, 78200, 78600, 79000,
168 79400, 79800, 80300, 80800, 81200, 81600, 82000, 82400, 82800,
169 83200, 83600, 84000, 84400, 84800, 85200, 85600, 86000, 86400,
170 86800, 87300, 87800, 88200, 88600, 89000, 89400, 89800, 90200,
171 90600, 91000, 91400, 91800, 92200, 92600, 93000, 93400, 93800,
172 94200, 94600, 95000, 95500, 96000, 96400, 96800, 97200, 97600,
173 98000, 98400, 98800, 99200, 99600, 100000, 100400, 100800, 101200,
174 101600, 102000, 102400, 102800, 103200, 103600, 104000, 104400,
175 104800, 105200, 105600, 106100, 106600, 107000, 107400, 107800,
176 108200, 108600, 109000, 109400, 109800, 110200, 110600, 111000,
177 111400, 111800, 112200, 112600, 113000, 113400, 113800, 114200,
178 114600, 115000, 115400, 115800, 116200, 116600, 117000, 117400,
179 117800, 118200, 118600, 119000, 119400, 119800, 120200, 120600,
180 121000, 121400, 121800, 122200, 122600, 123000, 123400, 123800, 124200,
181 124600, 124900, 125000, 125000, 125000, 125000
182};
183
184/* OMAP4460 data */
03e859d3
EV
185const struct ti_bandgap_data omap4460_data = {
186 .features = TI_BANDGAP_FEATURE_TSHUT |
187 TI_BANDGAP_FEATURE_TSHUT_CONFIG |
188 TI_BANDGAP_FEATURE_TALERT |
189 TI_BANDGAP_FEATURE_MODE_CONFIG |
190 TI_BANDGAP_FEATURE_POWER_SWITCH |
191 TI_BANDGAP_FEATURE_CLK_CTRL |
192 TI_BANDGAP_FEATURE_COUNTER,
1a31270e
EV
193 .fclock_name = "bandgap_ts_fclk",
194 .div_ck_name = "div_ts_ck",
195 .conv_table = omap4460_adc_to_temp,
26a70ed9
EV
196 .adc_start_val = OMAP4460_ADC_START_VALUE,
197 .adc_end_val = OMAP4460_ADC_END_VALUE,
03e859d3
EV
198 .expose_sensor = ti_thermal_expose_sensor,
199 .remove_sensor = ti_thermal_remove_sensor,
7a779490 200 .report_temperature = ti_thermal_report_sensor_temperature,
1a31270e
EV
201 .sensors = {
202 {
cff860f5
EV
203 .registers = &omap4460_mpu_temp_sensor_registers,
204 .ts_data = &omap4460_mpu_temp_sensor_data,
205 .domain = "cpu",
cff860f5
EV
206 .slope_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4460,
207 .constant_pcb = OMAP_GRADIENT_CONST_W_PCB_4460,
03e859d3
EV
208 .register_cooling = ti_thermal_register_cpu_cooling,
209 .unregister_cooling = ti_thermal_unregister_cpu_cooling,
1a31270e
EV
210 },
211 },
212 .sensor_count = 1,
213};
214
215/* OMAP4470 data */
03e859d3
EV
216const struct ti_bandgap_data omap4470_data = {
217 .features = TI_BANDGAP_FEATURE_TSHUT |
218 TI_BANDGAP_FEATURE_TSHUT_CONFIG |
219 TI_BANDGAP_FEATURE_TALERT |
220 TI_BANDGAP_FEATURE_MODE_CONFIG |
221 TI_BANDGAP_FEATURE_POWER_SWITCH |
222 TI_BANDGAP_FEATURE_CLK_CTRL |
223 TI_BANDGAP_FEATURE_COUNTER,
1a31270e
EV
224 .fclock_name = "bandgap_ts_fclk",
225 .div_ck_name = "div_ts_ck",
226 .conv_table = omap4460_adc_to_temp,
26a70ed9
EV
227 .adc_start_val = OMAP4460_ADC_START_VALUE,
228 .adc_end_val = OMAP4460_ADC_END_VALUE,
03e859d3
EV
229 .expose_sensor = ti_thermal_expose_sensor,
230 .remove_sensor = ti_thermal_remove_sensor,
7a779490 231 .report_temperature = ti_thermal_report_sensor_temperature,
1a31270e
EV
232 .sensors = {
233 {
cff860f5
EV
234 .registers = &omap4460_mpu_temp_sensor_registers,
235 .ts_data = &omap4460_mpu_temp_sensor_data,
236 .domain = "cpu",
cff860f5
EV
237 .slope_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4470,
238 .constant_pcb = OMAP_GRADIENT_CONST_W_PCB_4470,
03e859d3
EV
239 .register_cooling = ti_thermal_register_cpu_cooling,
240 .unregister_cooling = ti_thermal_unregister_cpu_cooling,
1a31270e
EV
241 },
242 },
243 .sensor_count = 1,
244};