diff options
author | Randall Spangler <rspangler@chromium.org> | 2012-10-26 16:33:30 -0700 |
---|---|---|
committer | Gerrit <chrome-bot@google.com> | 2012-11-01 12:45:22 -0700 |
commit | d83f42bdc8b61773efc17e0194e5abe26109128d (patch) | |
tree | e8351b0f756dff9aac9d6b919037c1f3b283c644 /common/temp_sensor.c | |
parent | 742ec5a1ff3a058bf6f1753bafde9e3e57d44f58 (diff) | |
download | chrome-ec-d83f42bdc8b61773efc17e0194e5abe26109128d.tar.gz |
Switch temp sensor polling to use hooks instead of task
This reduces memory / code size, and gets rid of ifdefs in temp_sensor.c.
BUG=chrome-os-partner:15714
BRANCH=none
TEST=boot system and run 'ectool temps all' every few seconds
- ectool temps all
The numbers should update over time.
Change-Id: Idaac7e6e4cbc1d6689f5d3b607c623a5cc536a4f
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/36940
Diffstat (limited to 'common/temp_sensor.c')
-rw-r--r-- | common/temp_sensor.c | 34 |
1 files changed, 5 insertions, 29 deletions
diff --git a/common/temp_sensor.c b/common/temp_sensor.c index 6cfbb8cfee..3079e3b2a8 100644 --- a/common/temp_sensor.c +++ b/common/temp_sensor.c @@ -11,6 +11,7 @@ #include "console.h" #include "gpio.h" #include "i2c.h" +#include "hooks.h" #include "host_command.h" #include "peci.h" #include "task.h" @@ -34,25 +35,6 @@ int temp_sensor_read(enum temp_sensor_id id, int *temp_ptr) return sensor->read(sensor->idx, temp_ptr); } -void poll_slow_sensors(void) -{ - /* Poll every second */ -#ifdef CONFIG_TMP006 - tmp006_poll(); -#endif -#ifdef CHIP_lm4 - chip_temp_sensor_poll(); -#endif -} - -static void poll_fast_sensors(void) -{ - /* Poll every 1/4 second */ -#ifdef CONFIG_PECI - peci_temp_sensor_poll(); -#endif -} - static void update_mapped_memory(void) { int i, t; @@ -84,8 +66,10 @@ static void update_mapped_memory(void) } } } +/* Run after other tick tasks, so sensors will have updated first. */ +DECLARE_HOOK(HOOK_SECOND, update_mapped_memory, HOOK_PRIO_DEFAULT + 1); -void temp_sensor_task(void) +static void temp_sensor_init(void) { int i; uint8_t *base, *base_b; @@ -116,16 +100,8 @@ void temp_sensor_task(void) /* Temp sensor data is present, with B range supported. */ *host_get_memmap(EC_MEMMAP_THERMAL_VERSION) = 2; - - while (1) { - for (i = 0; i < 4; ++i) { - msleep(250); - poll_fast_sensors(); - } - poll_slow_sensors(); - update_mapped_memory(); - } } +DECLARE_HOOK(HOOK_INIT, temp_sensor_init, HOOK_PRIO_DEFAULT); /*****************************************************************************/ /* Console commands */ |