diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2015-08-25 18:52:19 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-08-29 01:34:14 -0700 |
commit | 4e7e1bb796190e658ea2de8d4e391efa59b0d643 (patch) | |
tree | c6927e9226f1853ce2602cc71d6399f7ad210860 /driver/accelgyro_lsm6ds0.c | |
parent | 398bd9a0178c0120a2dbf3f58419d6a5360dfb3d (diff) | |
download | chrome-ec-4e7e1bb796190e658ea2de8d4e391efa59b0d643.tar.gz |
motion_sense: Add more complex EC/AP sensor rate support.
Add config settings for ODR and EC rate per requestor and
per power state (1 for the AP, 3 for the EC).
This way we can finely set ec rate and ODR depending on usage.
On chromeos, AP is not setting frequency, so EC sets for different power
state. On some platform, sensors can now be suspended in S3/S5.
Allow EC oversampling when AP is only looking for a few samples.
It is useful for double tap detection where high accelerator ODR is
required.
BRANCH=ryu
TEST=Tested on Ryu
BUG=chromium:513458
Change-Id: Ic3888a749699f07b10c5da3bc07204afd4de70da
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295637
Diffstat (limited to 'driver/accelgyro_lsm6ds0.c')
-rw-r--r-- | driver/accelgyro_lsm6ds0.c | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/driver/accelgyro_lsm6ds0.c b/driver/accelgyro_lsm6ds0.c index dee3e7d622..62996825ac 100644 --- a/driver/accelgyro_lsm6ds0.c +++ b/driver/accelgyro_lsm6ds0.c @@ -426,29 +426,20 @@ static int init(const struct motion_sensor_t *s) if (ret) return EC_ERROR_UNKNOWN; - ret = set_range(s, s->runtime_config.range, 1); - if (ret) - return EC_ERROR_UNKNOWN; - - ret = set_data_rate(s, s->runtime_config.odr, 1); + ret = set_range(s, s->default_range, 1); if (ret) return EC_ERROR_UNKNOWN; } if (MOTIONSENSE_TYPE_GYRO == s->type) { /* Config GYRO Range */ - ret = set_range(s, s->runtime_config.range, 1); - if (ret) - return EC_ERROR_UNKNOWN; - - /* Config ACCEL & GYRO ODR */ - ret = set_data_rate(s, s->runtime_config.odr, 1); + ret = set_range(s, s->default_range, 1); if (ret) return EC_ERROR_UNKNOWN; } - CPRINTF("[%T %s: MS Done Init type:0x%X range:%d odr:%d]\n", - s->name, s->type, get_range(s), get_data_rate(s)); + CPRINTF("[%T %s: MS Done Init type:0x%X range:%d]\n", + s->name, s->type, get_range(s)); return ret; } |