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