diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2015-08-30 20:55:40 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-09-21 01:13:54 -0700 |
commit | 8139114897c2eab41fd71e66368d861f9e5db2ba (patch) | |
tree | 80088b7be806602ecf0f3f337e8f7f70f03a03e2 /driver/accelgyro_bmi160.h | |
parent | 1d8fcfcd0d1b93d04ea5adcb980ffac38bd3d140 (diff) | |
download | chrome-ec-8139114897c2eab41fd71e66368d861f9e5db2ba.tar.gz |
driver: bmi160: Add Significant motion support.
Add support for significant motion.
BRANCH=smaug
BUG=b:23570481
TEST=On Ryu, check significant motion (not still) is detected.
Change-Id: I5760a1ba3624490a0297de82371b1d15f05df5dc
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/296214
Diffstat (limited to 'driver/accelgyro_bmi160.h')
-rw-r--r-- | driver/accelgyro_bmi160.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h index 0d6103a14c..ee44f9262e 100644 --- a/driver/accelgyro_bmi160.h +++ b/driver/accelgyro_bmi160.h @@ -296,8 +296,28 @@ enum fifo_header { #define BMI160_INT_MOTION_0 0x5f #define BMI160_INT_MOTION_1 0x60 +/* + * The formula is defined in 2.11.25 (any motion interrupt [1]). + * + * if we want threshold at a (in mg), the register should be x, where + * x * 7.81mg = a, assuming a range of 4G, which is + * x * 4 * 1.953 = a so + * x = a * 1000 / range * 1953 + */ +#define BMI160_MOTION_TH(_s, _mg) \ + (MIN(((_mg) * 1000) / ((_s)->drv->get_range(_s) * 1953), 0xff)) #define BMI160_INT_MOTION_2 0x61 #define BMI160_INT_MOTION_3 0x62 +#define BMI160_MOTION_NO_MOT_SEL (1 << 0) +#define BMI160_MOTION_SIG_MOT_SEL (1 << 1) +#define BMI160_MOTION_SKIP_OFF 2 +#define BMI160_MOTION_SKIP_MASK 0x3 +#define BMI160_MOTION_SKIP_TIME(_ms) \ + (MIN(__fls((_ms) / 1500), BMI160_MOTION_SKIP_MASK)) +#define BMI160_MOTION_PROOF_OFF 4 +#define BMI160_MOTION_PROOF_MASK 0x3 +#define BMI160_MOTION_PROOF_TIME(_ms) \ + (MIN(__fls((_ms) / 250), BMI160_MOTION_PROOF_MASK)) #define BMI160_INT_TAP_0 0x63 #define BMI160_INT_TAP_1 0x64 @@ -409,6 +429,8 @@ enum bmi160_running_mode { struct bmi160_drv_data_t { struct accelgyro_saved_data_t saved_data[3]; uint8_t flags; + uint8_t enabled_activities; + uint8_t disabled_activities; #ifdef CONFIG_MAG_BMI160_BMM150 struct bmm150_comp_registers comp_regs; #endif |