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