summaryrefslogtreecommitdiff
path: root/common/temp_sensor.c
diff options
context:
space:
mode:
authorVic Yang <victoryang@chromium.org>2012-02-24 10:35:36 -0800
committerVic Yang <victoryang@chromium.org>2012-02-24 13:09:44 -0800
commit675cddb258a282a41533d6976c799f42485ddcd2 (patch)
tree5f67d22fcdebcbeef9f4cb5f333a793107a98fc1 /common/temp_sensor.c
parentc977d241b3aec49fed7ed7344f2ebf6e59885d63 (diff)
downloadchrome-ec-675cddb258a282a41533d6976c799f42485ddcd2.tar.gz
Write temperature values to LPC mapped value space.
Add a task to update temperature values in LPC mapped value space every second. Also modify ectool to read directly from LPC mapped space. Signed-off-by: Vic Yang <victoryang@chromium.org> BUG=chrome-os-partner:8065 TEST="ectool temps" gives same result as "temps" from ec console. Change-Id: Idcdef8d822724f9bd22d7e819c717cba5af5eb77
Diffstat (limited to 'common/temp_sensor.c')
-rw-r--r--common/temp_sensor.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/common/temp_sensor.c b/common/temp_sensor.c
index cc7dc25599..4d4c54de18 100644
--- a/common/temp_sensor.c
+++ b/common/temp_sensor.c
@@ -15,6 +15,8 @@
#include "tmp006.h"
#include "task.h"
#include "chip_temp_sensor.h"
+#include "lpc.h"
+#include "lpc_commands.h"
/* Defined in board_temp_sensor.c. Must be in the same order as
* in enum temp_sensor_id.
@@ -44,10 +46,27 @@ void poll_all_sensors(void)
#endif
}
+
+static void update_lpc_mapped_memory(void)
+{
+ int i, t;
+ uint8_t *mapped = lpc_get_memmap_range() + EC_LPC_MEMMAP_TEMP_SENSOR;
+
+ memset(mapped, 0xff, 16);
+
+ for (i = 0; i < TEMP_SENSOR_COUNT && i < 16; ++i) {
+ t = temp_sensor_read(i);
+ if (t != -1)
+ mapped[i] = t - EC_LPC_TEMP_SENSOR_OFFSET;
+ }
+}
+
+
void temp_sensor_task(void)
{
while (1) {
poll_all_sensors();
+ update_lpc_mapped_memory();
/* Wait 1s */
task_wait_msg(1000000);
}