diff options
author | Sebastien Sabatier <s-sabatier1@ti.com> | 2012-02-13 10:26:20 +0100 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 12:56:44 +0200 |
commit | 14336bf5c7e0ca770fc7872b8a0be555cc87cb51 (patch) | |
tree | d15674342cba4d312eb34a413369d0e462293810 /drivers/staging | |
parent | 6e104ffbe609adaff52086575888be8e86f0a842 (diff) | |
download | kernel_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.c | 2 | ||||
-rw-r--r-- | drivers/staging/thermal_framework/sensor/omap_temp_sensor.c | 4 |
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) { |