root/drivers/thermal/ti-soc-thermal/omap4-thermal-data.c

/* [<][>][^][v][top][bottom][index][help] */
   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * OMAP4 thermal driver.
   4  *
   5  * Copyright (C) 2011-2012 Texas Instruments Inc.
   6  * Contact:
   7  *      Eduardo Valentin <eduardo.valentin@ti.com>
   8  */
   9 
  10 #include "ti-thermal.h"
  11 #include "ti-bandgap.h"
  12 #include "omap4xxx-bandgap.h"
  13 
  14 /*
  15  * OMAP4430 has one instance of thermal sensor for MPU
  16  * need to describe the individual bit fields
  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 /* 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,
  36 };
  37 
  38 /*
  39  * Temperature values in milli degree celsius
  40  * ADC code values from 530 to 923
  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 /* OMAP4430 data */
  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  * OMAP4460 has one instance of thermal sensor for MPU
  83  * need to describe the individual bit fields
  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 /* Thresholds and limits for OMAP4460 MPU temperature sensor */
 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  * Temperature values in milli degree celsius
 130  * ADC code values from 530 to 923
 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 /* OMAP4460 data */
 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 /* OMAP4470 data */
 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 };

/* [<][>][^][v][top][bottom][index][help] */