summaryrefslogtreecommitdiff
path: root/common/temp_sensor.c
diff options
context:
space:
mode:
authorRandall Spangler <rspangler@chromium.org>2012-10-26 16:33:30 -0700
committerGerrit <chrome-bot@google.com>2012-11-01 12:45:22 -0700
commitd83f42bdc8b61773efc17e0194e5abe26109128d (patch)
treee8351b0f756dff9aac9d6b919037c1f3b283c644 /common/temp_sensor.c
parent742ec5a1ff3a058bf6f1753bafde9e3e57d44f58 (diff)
downloadchrome-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.c34
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 */