]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/staging/omap-thermal/omap5-thermal.c
staging: omap-thermal: introduce new features of OMAP54xx
[karo-tx-linux.git] / drivers / staging / omap-thermal / omap5-thermal.c
index 32d3f878da123ea3d7fbfc361ee9df47709b364b..91618fd75b0b65476d953a7c0fafb48e5652840f 100644 (file)
 #include "omap-thermal.h"
 
 /*
- * omap5430 has one instance of thermal sensor for MPU
- * need to describe the individual bit fields
+ * OMAP5430 has three instances of thermal sensor for MPU, GPU & CORE,
+ * need to describe the individual registers and bit fields.
+ */
+
+/*
+ * OMAP5430 MPU thermal sensor register offset and bit-fields
  */
 static struct temp_sensor_registers
 omap5430_mpu_temp_sensor_registers = {
@@ -33,6 +37,10 @@ omap5430_mpu_temp_sensor_registers = {
        .bgap_mask_ctrl = OMAP5430_BGAP_CTRL_OFFSET,
        .mask_hot_mask = OMAP5430_MASK_HOT_MPU_MASK,
        .mask_cold_mask = OMAP5430_MASK_COLD_MPU_MASK,
+       .mask_sidlemode_mask = OMAP5430_MASK_SIDLEMODE_MASK,
+       .mask_freeze_mask = OMAP5430_MASK_FREEZE_MPU_MASK,
+       .mask_clear_mask = OMAP5430_MASK_CLEAR_MPU_MASK,
+       .mask_clear_accum_mask = OMAP5430_MASK_CLEAR_ACCUM_MPU_MASK,
 
 
        .bgap_counter = OMAP5430_BGAP_COUNTER_MPU_OFFSET,
@@ -52,12 +60,17 @@ omap5430_mpu_temp_sensor_registers = {
        .status_hot_mask = OMAP5430_HOT_MPU_FLAG_MASK,
        .status_cold_mask = OMAP5430_COLD_MPU_FLAG_MASK,
 
+       .bgap_cumul_dtemp = OMAP5430_BGAP_CUMUL_DTEMP_MPU_OFFSET,
+       .ctrl_dtemp_0 = OMAP5430_BGAP_DTEMP_MPU_0_OFFSET,
+       .ctrl_dtemp_1 = OMAP5430_BGAP_DTEMP_MPU_1_OFFSET,
+       .ctrl_dtemp_2 = OMAP5430_BGAP_DTEMP_MPU_2_OFFSET,
+       .ctrl_dtemp_3 = OMAP5430_BGAP_DTEMP_MPU_3_OFFSET,
+       .ctrl_dtemp_4 = OMAP5430_BGAP_DTEMP_MPU_4_OFFSET,
        .bgap_efuse = OMAP5430_FUSE_OPP_BGAP_MPU,
 };
 
 /*
- * omap5430 has one instance of thermal sensor for GPU
- * need to describe the individual bit fields
+ * OMAP5430 GPU thermal sensor register offset and bit-fields
  */
 static struct temp_sensor_registers
 omap5430_gpu_temp_sensor_registers = {
@@ -69,6 +82,10 @@ omap5430_gpu_temp_sensor_registers = {
        .bgap_mask_ctrl = OMAP5430_BGAP_CTRL_OFFSET,
        .mask_hot_mask = OMAP5430_MASK_HOT_GPU_MASK,
        .mask_cold_mask = OMAP5430_MASK_COLD_GPU_MASK,
+       .mask_sidlemode_mask = OMAP5430_MASK_SIDLEMODE_MASK,
+       .mask_freeze_mask = OMAP5430_MASK_FREEZE_GPU_MASK,
+       .mask_clear_mask = OMAP5430_MASK_CLEAR_GPU_MASK,
+       .mask_clear_accum_mask = OMAP5430_MASK_CLEAR_ACCUM_GPU_MASK,
 
        .bgap_counter = OMAP5430_BGAP_COUNTER_GPU_OFFSET,
        .counter_mask = OMAP5430_COUNTER_MASK,
@@ -87,12 +104,18 @@ omap5430_gpu_temp_sensor_registers = {
        .status_hot_mask = OMAP5430_HOT_GPU_FLAG_MASK,
        .status_cold_mask = OMAP5430_COLD_GPU_FLAG_MASK,
 
+       .bgap_cumul_dtemp = OMAP5430_BGAP_CUMUL_DTEMP_GPU_OFFSET,
+       .ctrl_dtemp_0 = OMAP5430_BGAP_DTEMP_GPU_0_OFFSET,
+       .ctrl_dtemp_1 = OMAP5430_BGAP_DTEMP_GPU_1_OFFSET,
+       .ctrl_dtemp_2 = OMAP5430_BGAP_DTEMP_GPU_2_OFFSET,
+       .ctrl_dtemp_3 = OMAP5430_BGAP_DTEMP_GPU_3_OFFSET,
+       .ctrl_dtemp_4 = OMAP5430_BGAP_DTEMP_GPU_4_OFFSET,
+
        .bgap_efuse = OMAP5430_FUSE_OPP_BGAP_GPU,
 };
 
 /*
- * omap5430 has one instance of thermal sensor for CORE
- * need to describe the individual bit fields
+ * OMAP5430 CORE thermal sensor register offset and bit-fields
  */
 static struct temp_sensor_registers
 omap5430_core_temp_sensor_registers = {
@@ -104,6 +127,10 @@ omap5430_core_temp_sensor_registers = {
        .bgap_mask_ctrl = OMAP5430_BGAP_CTRL_OFFSET,
        .mask_hot_mask = OMAP5430_MASK_HOT_CORE_MASK,
        .mask_cold_mask = OMAP5430_MASK_COLD_CORE_MASK,
+       .mask_sidlemode_mask = OMAP5430_MASK_SIDLEMODE_MASK,
+       .mask_freeze_mask = OMAP5430_MASK_FREEZE_CORE_MASK,
+       .mask_clear_mask = OMAP5430_MASK_CLEAR_CORE_MASK,
+       .mask_clear_accum_mask = OMAP5430_MASK_CLEAR_ACCUM_CORE_MASK,
 
        .bgap_counter = OMAP5430_BGAP_COUNTER_CORE_OFFSET,
        .counter_mask = OMAP5430_COUNTER_MASK,
@@ -122,6 +149,13 @@ omap5430_core_temp_sensor_registers = {
        .status_hot_mask = OMAP5430_HOT_CORE_FLAG_MASK,
        .status_cold_mask = OMAP5430_COLD_CORE_FLAG_MASK,
 
+       .bgap_cumul_dtemp = OMAP5430_BGAP_CUMUL_DTEMP_CORE_OFFSET,
+       .ctrl_dtemp_0 = OMAP5430_BGAP_DTEMP_CORE_0_OFFSET,
+       .ctrl_dtemp_1 = OMAP5430_BGAP_DTEMP_CORE_1_OFFSET,
+       .ctrl_dtemp_2 = OMAP5430_BGAP_DTEMP_CORE_2_OFFSET,
+       .ctrl_dtemp_3 = OMAP5430_BGAP_DTEMP_CORE_3_OFFSET,
+       .ctrl_dtemp_4 = OMAP5430_BGAP_DTEMP_CORE_4_OFFSET,
+
        .bgap_efuse = OMAP5430_FUSE_OPP_BGAP_CORE,
 };
 
@@ -281,6 +315,8 @@ omap5430_adc_to_temp[
        123800, 1242000, 124600, 124900, 125000, 125000,
 };
 
+/* OMAP54xx ES2.0 data */
+/* TODO : Need to update the slope/constant for ES2.0 silicon */
 const struct omap_bandgap_data omap5430_data = {
        .features = OMAP_BANDGAP_FEATURE_TSHUT_CONFIG |
                        OMAP_BANDGAP_FEATURE_TALERT |