Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  omap4-thermal-data.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0-only
/*
 * OMAP4 thermal driver.
 *
 * Copyright (C) 2011-2012 Texas Instruments Inc.
 * Contact:
 * Eduardo Valentin <eduardo.valentin@ti.com>
 */


#include "ti-thermal.h"
#include "ti-bandgap.h"
#include "omap4xxx-bandgap.h"

/*
 * OMAP4430 has one instance of thermal sensor for MPU
 * need to describe the individual bit fields
 */

static struct temp_sensor_registers
omap4430_mpu_temp_sensor_registers = {
 .temp_sensor_ctrl = OMAP4430_TEMP_SENSOR_CTRL_OFFSET,
 .bgap_tempsoff_mask = OMAP4430_BGAP_TEMPSOFF_MASK,
 .bgap_soc_mask = OMAP4430_BGAP_TEMP_SENSOR_SOC_MASK,
 .bgap_eocz_mask = OMAP4430_BGAP_TEMP_SENSOR_EOCZ_MASK,
 .bgap_dtemp_mask = OMAP4430_BGAP_TEMP_SENSOR_DTEMP_MASK,

 .bgap_mode_ctrl = OMAP4430_TEMP_SENSOR_CTRL_OFFSET,
 .mode_ctrl_mask = OMAP4430_CONTINUOUS_MODE_MASK,

 .bgap_efuse = OMAP4430_FUSE_OPP_BGAP,
};

/* Thresholds and limits for OMAP4430 MPU temperature sensor */
static struct temp_sensor_data omap4430_mpu_temp_sensor_data = {
 .min_freq = OMAP4430_MIN_FREQ,
 .max_freq = OMAP4430_MAX_FREQ,
};

/*
 * Temperature values in milli degree celsius
 * ADC code values from 13 to 107, see TRM
 * "18.4.10.2.3 ADC Codes Versus Temperature".
 */

static const int
omap4430_adc_to_temp[OMAP4430_ADC_END_VALUE - OMAP4430_ADC_START_VALUE + 1] = {
 -40000, -38000, -35000, -34000, -32000, -30000, -28000, -26000, -24000,
 -22000, -20000, -18500, -17000, -15000, -13500, -12000, -10000, -8000,
 -6500, -5000, -3500, -1500, 0, 2000, 3500, 5000, 6500, 8500, 10000,
 12000, 13500, 15000, 17000, 19000, 21000, 23000, 25000, 27000, 28500,
 30000, 32000, 33500, 35000, 37000, 38500, 40000, 42000, 43500, 45000,
 47000, 48500, 50000, 52000, 53500, 55000, 57000, 58500, 60000, 62000,
 64000, 66000, 68000, 70000, 71500, 73500, 75000, 77000, 78500, 80000,
 82000, 83500, 85000, 87000, 88500, 90000, 92000, 93500, 95000, 97000,
 98500, 100000, 102000, 103500, 105000, 107000, 109000, 111000, 113000,
 115000, 117000, 118500, 120000, 122000, 123500, 125000,
};

/* OMAP4430 data */
const struct ti_bandgap_data omap4430_data = {
 .features = TI_BANDGAP_FEATURE_MODE_CONFIG |
   TI_BANDGAP_FEATURE_CLK_CTRL |
   TI_BANDGAP_FEATURE_POWER_SWITCH |
   TI_BANDGAP_FEATURE_CONT_MODE_ONLY,
 .fclock_name = "bandgap_fclk",
 .div_ck_name = "bandgap_fclk",
 .conv_table = omap4430_adc_to_temp,
 .adc_start_val = OMAP4430_ADC_START_VALUE,
 .adc_end_val = OMAP4430_ADC_END_VALUE,
 .expose_sensor = ti_thermal_expose_sensor,
 .remove_sensor = ti_thermal_remove_sensor,
 .sensors = {
  {
  .registers = &omap4430_mpu_temp_sensor_registers,
  .ts_data = &omap4430_mpu_temp_sensor_data,
  .domain = "cpu",
  .slope_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4430,
  .constant_pcb = OMAP_GRADIENT_CONST_W_PCB_4430,
  .register_cooling = ti_thermal_register_cpu_cooling,
  .unregister_cooling = ti_thermal_unregister_cpu_cooling,
  },
 },
 .sensor_count = 1,
};
/*
 * OMAP4460 has one instance of thermal sensor for MPU
 * need to describe the individual bit fields
 */

static struct temp_sensor_registers
omap4460_mpu_temp_sensor_registers = {
 .temp_sensor_ctrl = OMAP4460_TEMP_SENSOR_CTRL_OFFSET,
 .bgap_tempsoff_mask = OMAP4460_BGAP_TEMPSOFF_MASK,
 .bgap_soc_mask = OMAP4460_BGAP_TEMP_SENSOR_SOC_MASK,
 .bgap_eocz_mask = OMAP4460_BGAP_TEMP_SENSOR_EOCZ_MASK,
 .bgap_dtemp_mask = OMAP4460_BGAP_TEMP_SENSOR_DTEMP_MASK,

 .bgap_mask_ctrl = OMAP4460_BGAP_CTRL_OFFSET,
 .mask_hot_mask = OMAP4460_MASK_HOT_MASK,
 .mask_cold_mask = OMAP4460_MASK_COLD_MASK,

 .bgap_mode_ctrl = OMAP4460_BGAP_CTRL_OFFSET,
 .mode_ctrl_mask = OMAP4460_CONTINUOUS_MODE_MASK,

 .bgap_counter = OMAP4460_BGAP_COUNTER_OFFSET,
 .counter_mask = OMAP4460_COUNTER_MASK,

 .bgap_threshold = OMAP4460_BGAP_THRESHOLD_OFFSET,
 .threshold_thot_mask = OMAP4460_T_HOT_MASK,
 .threshold_tcold_mask = OMAP4460_T_COLD_MASK,

 .tshut_threshold = OMAP4460_BGAP_TSHUT_OFFSET,
 .tshut_hot_mask = OMAP4460_TSHUT_HOT_MASK,
 .tshut_cold_mask = OMAP4460_TSHUT_COLD_MASK,

 .bgap_status = OMAP4460_BGAP_STATUS_OFFSET,
 .status_hot_mask = OMAP4460_HOT_FLAG_MASK,
 .status_cold_mask = OMAP4460_COLD_FLAG_MASK,

 .bgap_efuse = OMAP4460_FUSE_OPP_BGAP,
};

/* Thresholds and limits for OMAP4460 MPU temperature sensor */
static struct temp_sensor_data omap4460_mpu_temp_sensor_data = {
 .tshut_hot = OMAP4460_TSHUT_HOT,
 .tshut_cold = OMAP4460_TSHUT_COLD,
 .t_hot = OMAP4460_T_HOT,
 .t_cold = OMAP4460_T_COLD,
 .min_freq = OMAP4460_MIN_FREQ,
 .max_freq = OMAP4460_MAX_FREQ,
};

/*
 * Temperature values in milli degree celsius
 * ADC code values from 530 to 923
 */

static const int
omap4460_adc_to_temp[OMAP4460_ADC_END_VALUE - OMAP4460_ADC_START_VALUE + 1] = {
 -40000, -40000, -40000, -40000, -39800, -39400, -39000, -38600, -38200,
 -37800, -37300, -36800, -36400, -36000, -35600, -35200, -34800,
 -34300, -33800, -33400, -33000, -32600, -32200, -31800, -31300,
 -30800, -30400, -30000, -29600, -29200, -28700, -28200, -27800,
 -27400, -27000, -26600, -26200, -25700, -25200, -24800, -24400,
 -24000, -23600, -23200, -22700, -22200, -21800, -21400, -21000,
 -20600, -20200, -19700, -19200, -18800, -18400, -18000, -17600,
 -17200, -16700, -16200, -15800, -15400, -15000, -14600, -14200,
 -13700, -13200, -12800, -12400, -12000, -11600, -11200, -10700,
 -10200, -9800, -9400, -9000, -8600, -8200, -7700, -7200, -6800,
 -6400, -6000, -5600, -5200, -4800, -4300, -3800, -3400, -3000,
 -2600, -2200, -1800, -1300, -800, -400, 0, 400, 800, 1200, 1600,
 2100, 2600, 3000, 3400, 3800, 4200, 4600, 5100, 5600, 6000, 6400,
 6800, 7200, 7600, 8000, 8500, 9000, 9400, 9800, 10200, 10600, 11000,
 11400, 11900, 12400, 12800, 13200, 13600, 14000, 14400, 14800,
 15300, 15800, 16200, 16600, 17000, 17400, 17800, 18200, 18700,
 19200, 19600, 20000, 20400, 20800, 21200, 21600, 22100, 22600,
 23000, 23400, 23800, 24200, 24600, 25000, 25400, 25900, 26400,
 26800, 27200, 27600, 28000, 28400, 28800, 29300, 29800, 30200,
 30600, 31000, 31400, 31800, 32200, 32600, 33100, 33600, 34000,
 34400, 34800, 35200, 35600, 36000, 36400, 36800, 37300, 37800,
 38200, 38600, 39000, 39400, 39800, 40200, 40600, 41100, 41600,
 42000, 42400, 42800, 43200, 43600, 44000, 44400, 44800, 45300,
 45800, 46200, 46600, 47000, 47400, 47800, 48200, 48600, 49000,
 49500, 50000, 50400, 50800, 51200, 51600, 52000, 52400, 52800,
 53200, 53700, 54200, 54600, 55000, 55400, 55800, 56200, 56600,
 57000, 57400, 57800, 58200, 58700, 59200, 59600, 60000, 60400,
 60800, 61200, 61600, 62000, 62400, 62800, 63300, 63800, 64200,
 64600, 65000, 65400, 65800, 66200, 66600, 67000, 67400, 67800,
 68200, 68700, 69200, 69600, 70000, 70400, 70800, 71200, 71600,
 72000, 72400, 72800, 73200, 73600, 74100, 74600, 75000, 75400,
 75800, 76200, 76600, 77000, 77400, 77800, 78200, 78600, 79000,
 79400, 79800, 80300, 80800, 81200, 81600, 82000, 82400, 82800,
 83200, 83600, 84000, 84400, 84800, 85200, 85600, 86000, 86400,
 86800, 87300, 87800, 88200, 88600, 89000, 89400, 89800, 90200,
 90600, 91000, 91400, 91800, 92200, 92600, 93000, 93400, 93800,
 94200, 94600, 95000, 95500, 96000, 96400, 96800, 97200, 97600,
 98000, 98400, 98800, 99200, 99600, 100000, 100400, 100800, 101200,
 101600, 102000, 102400, 102800, 103200, 103600, 104000, 104400,
 104800, 105200, 105600, 106100, 106600, 107000, 107400, 107800,
 108200, 108600, 109000, 109400, 109800, 110200, 110600, 111000,
 111400, 111800, 112200, 112600, 113000, 113400, 113800, 114200,
 114600, 115000, 115400, 115800, 116200, 116600, 117000, 117400,
 117800, 118200, 118600, 119000, 119400, 119800, 120200, 120600,
 121000, 121400, 121800, 122200, 122600, 123000, 123400, 123800, 124200,
 124600, 124900, 125000, 125000, 125000, 125000
};

/* OMAP4460 data */
const struct ti_bandgap_data omap4460_data = {
 .features = TI_BANDGAP_FEATURE_TSHUT |
   TI_BANDGAP_FEATURE_TSHUT_CONFIG |
   TI_BANDGAP_FEATURE_TALERT |
   TI_BANDGAP_FEATURE_MODE_CONFIG |
   TI_BANDGAP_FEATURE_POWER_SWITCH |
   TI_BANDGAP_FEATURE_CLK_CTRL |
   TI_BANDGAP_FEATURE_COUNTER,
 .fclock_name = "bandgap_ts_fclk",
 .div_ck_name = "div_ts_ck",
 .conv_table = omap4460_adc_to_temp,
 .adc_start_val = OMAP4460_ADC_START_VALUE,
 .adc_end_val = OMAP4460_ADC_END_VALUE,
 .expose_sensor = ti_thermal_expose_sensor,
 .remove_sensor = ti_thermal_remove_sensor,
 .report_temperature = ti_thermal_report_sensor_temperature,
 .sensors = {
  {
  .registers = &omap4460_mpu_temp_sensor_registers,
  .ts_data = &omap4460_mpu_temp_sensor_data,
  .domain = "cpu",
  .slope_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4460,
  .constant_pcb = OMAP_GRADIENT_CONST_W_PCB_4460,
  .register_cooling = ti_thermal_register_cpu_cooling,
  .unregister_cooling = ti_thermal_unregister_cpu_cooling,
  },
 },
 .sensor_count = 1,
};

/* OMAP4470 data */
const struct ti_bandgap_data omap4470_data = {
 .features = TI_BANDGAP_FEATURE_TSHUT |
   TI_BANDGAP_FEATURE_TSHUT_CONFIG |
   TI_BANDGAP_FEATURE_TALERT |
   TI_BANDGAP_FEATURE_MODE_CONFIG |
   TI_BANDGAP_FEATURE_POWER_SWITCH |
   TI_BANDGAP_FEATURE_CLK_CTRL |
   TI_BANDGAP_FEATURE_COUNTER,
 .fclock_name = "bandgap_ts_fclk",
 .div_ck_name = "div_ts_ck",
 .conv_table = omap4460_adc_to_temp,
 .adc_start_val = OMAP4460_ADC_START_VALUE,
 .adc_end_val = OMAP4460_ADC_END_VALUE,
 .expose_sensor = ti_thermal_expose_sensor,
 .remove_sensor = ti_thermal_remove_sensor,
 .report_temperature = ti_thermal_report_sensor_temperature,
 .sensors = {
  {
  .registers = &omap4460_mpu_temp_sensor_registers,
  .ts_data = &omap4460_mpu_temp_sensor_data,
  .domain = "cpu",
  .slope_pcb = OMAP_GRADIENT_SLOPE_W_PCB_4470,
  .constant_pcb = OMAP_GRADIENT_CONST_W_PCB_4470,
  .register_cooling = ti_thermal_register_cpu_cooling,
  .unregister_cooling = ti_thermal_unregister_cpu_cooling,
  },
 },
 .sensor_count = 1,
};

Messung V0.5
C=98 H=99 G=98

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge