summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorBill Richardson <wfrichar@chromium.org>2013-11-07 14:10:38 -0800
committerchrome-internal-fetch <chrome-internal-fetch@google.com>2013-11-08 00:53:12 +0000
commit1d2845d2db7c9023d6c2ee6203cf9ddc1c968abc (patch)
treecdee8d18bb335240e2ce5ca52bd21a976c07ae47 /common
parent277f1c1e5cdfad3afdbcd71931e6eb4775e4e42d (diff)
downloadchrome-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.c19
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)