aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging
diff options
context:
space:
mode:
authorSebastien Sabatier <s-sabatier1@ti.com>2012-02-13 10:26:20 +0100
committerZiyann <jaraidaniel@gmail.com>2014-10-01 12:56:44 +0200
commit14336bf5c7e0ca770fc7872b8a0be555cc87cb51 (patch)
treed15674342cba4d312eb34a413369d0e462293810 /drivers/staging
parent6e104ffbe609adaff52086575888be8e86f0a842 (diff)
downloadkernel_samsung_tuna-14336bf5c7e0ca770fc7872b8a0be555cc87cb51.zip
kernel_samsung_tuna-14336bf5c7e0ca770fc7872b8a0be555cc87cb51.tar.gz
kernel_samsung_tuna-14336bf5c7e0ca770fc7872b8a0be555cc87cb51.tar.bz2
ARM:OMAP4:Temp sensor: Keep constant sampling rate
The HW control module uses an internal counter to start periodic temperature measurement. This HW internal counter is incrementing from 0 to the value of CONTROL_BANDGAP_COUNTER register. If SW decreases the value in CONTROL_BANDGAP_COUNTER to a value lower than the current internal counter, then HW logic will increment the internal counter until its maximum value (coded on 24-bits) and start a new temperature measurement when internal counter reaches again the new value from CONTROL_BANDGAP_COUNTER register. Finally, the next temperature measurement could be delayed by 10 to 20 seconds. As there is no way to reset this internal counter or to read the intern counter, the only valid workaround is to keep a constant value in CONTROL_BANDGAP_COUNTER register and ensure that SW never changes. This patch uses 250 ms whatever is the thermal zone. Change-Id: I139a1205e4eb06a558e6442e1c78e83a8c75f0df Signed-off-by: Sebastien Sabatier <s-sabatier1@ti.com>
Diffstat (limited to 'drivers/staging')
-rw-r--r--drivers/staging/thermal_framework/governor/omap_die_governor.c2
-rw-r--r--drivers/staging/thermal_framework/sensor/omap_temp_sensor.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/drivers/staging/thermal_framework/governor/omap_die_governor.c b/drivers/staging/thermal_framework/governor/omap_die_governor.c
index f1fff5f..e4ef7fb 100644
--- a/drivers/staging/thermal_framework/governor/omap_die_governor.c
+++ b/drivers/staging/thermal_framework/governor/omap_die_governor.c
@@ -253,7 +253,7 @@ out:
thermal_update_temp_thresholds(omap_gov->temp_sensor,
die_temp_lower, die_temp_upper);
omap_update_report_rate(omap_gov->temp_sensor,
- NORMAL_TEMP_MONITORING_RATE);
+ FAST_TEMP_MONITORING_RATE);
if (pcb_sensor)
omap_gov->average_period = NORMAL_TEMP_MONITORING_RATE;
diff --git a/drivers/staging/thermal_framework/sensor/omap_temp_sensor.c b/drivers/staging/thermal_framework/sensor/omap_temp_sensor.c
index 07e3e24..80b3128 100644
--- a/drivers/staging/thermal_framework/sensor/omap_temp_sensor.c
+++ b/drivers/staging/thermal_framework/sensor/omap_temp_sensor.c
@@ -1028,9 +1028,9 @@ static int __devinit omap_temp_sensor_probe(struct platform_device *pdev)
/* Read the temperature once due to hw issue*/
omap_report_temp(temp_sensor->therm_fw);
- /* Set 2 seconds time as default counter */
+ /* Set 250 milli-seconds time as default counter */
omap_configure_temp_sensor_counter(temp_sensor,
- temp_sensor->clk_rate * 2);
+ temp_sensor->clk_rate * 250 / 1000);
ret = sysfs_create_group(&pdev->dev.kobj,
&omap_temp_sensor_group);
if (ret) {