diff options
author | Bill Richardson <wfrichar@chromium.org> | 2013-11-07 14:10:38 -0800 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2013-11-08 00:53:12 +0000 |
commit | 1d2845d2db7c9023d6c2ee6203cf9ddc1c968abc (patch) | |
tree | cdee8d18bb335240e2ce5ca52bd21a976c07ae47 /common | |
parent | 277f1c1e5cdfad3afdbcd71931e6eb4775e4e42d (diff) | |
download | chrome-ec-1d2845d2db7c9023d6c2ee6203cf9ddc1c968abc.tar.gz |
Add EC_MEMMAP_ALS, update it once per second
This adds space for up to two ALS lux readings to be available to the AP
through the memory-mapped LPC region. If enabled, the values are updated
once a second.
The ALS will be reinitialized at every AP resume, since it's typically
unpowered otherwise. The reported value will be zero when the ALS is off.
BUG=chrome-os-partner:23380
BRANCH=samus
TEST=manual
Boot the AP, then from the EC console run "als" or just monitor the
memory-mapped region directly ("rw 0x40080780" on Samus), while pointing the
sensor at bright and dim areas. The value should change.
Change-Id: I705371fcd57345dc9adae1231ea30c7ff024aaf8
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/176142
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'common')
-rw-r--r-- | common/als.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/common/als.c b/common/als.c index bb2854132f..e8b99e0d20 100644 --- a/common/als.c +++ b/common/als.c @@ -10,6 +10,7 @@ #include "als.h" #include "common.h" #include "console.h" +#include "hooks.h" #include "host_command.h" #include "util.h" @@ -19,6 +20,24 @@ int als_read(enum als_id id, int *lux) } /*****************************************************************************/ +/* Hooks */ + +static void als_update(void) +{ + int i, rv, val; + uint16_t *mapped = (uint16_t *)host_get_memmap(EC_MEMMAP_ALS); + + for (i = 0; i < EC_ALS_ENTRIES && i < ALS_COUNT; i++) { + rv = als_read(i, &val); + if (rv == EC_SUCCESS) + mapped[i] = val; + else + mapped[i] = 0; + } +} +DECLARE_HOOK(HOOK_SECOND, als_update, HOOK_PRIO_DEFAULT); + +/*****************************************************************************/ /* Console commands */ static int command_als(int argc, char **argv) |