diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2015-07-01 18:11:54 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-07-10 03:40:09 +0000 |
commit | ee44cbd583b2aed54d32e4dcebc560801761cad5 (patch) | |
tree | 9be0f72fa423cb355bc1dddb9809d2bff0b482fb /driver | |
parent | 08414a6da2b5743d8f191aa854870ca7fabd319c (diff) | |
download | chrome-ec-ee44cbd583b2aed54d32e4dcebc560801761cad5.tar.gz |
driver: bm160: fix ODR_TO_REG macros
Were not working when ODR > 100Hz.
BRANCH=smaug
TEST=Check by setting iio:deviceX/frequency from user space.
BUG=chrome-os-partner:39900
Change-Id: I1795e4faf85039133da6bb38ae3b415e5fde236e
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/284612
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'driver')
-rw-r--r-- | driver/accelgyro_bmi160.h | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h index 9ef23864d8..b73b28bbb9 100644 --- a/driver/accelgyro_bmi160.h +++ b/driver/accelgyro_bmi160.h @@ -106,8 +106,12 @@ #define BMI160_ODR_1600HZ 0x0c #define BMI160_ODR_3200HZ 0x0d -#define BMI160_REG_TO_ODR(_regval) (100000 / (1 << (8 - (_regval)))) -#define BMI160_ODR_TO_REG(_odr) (__builtin_clz(100000 / (_odr)) - 23) +#define BMI160_REG_TO_ODR(_regval) \ + ((_regval) < 8 ? 100000 / (1 << (8 - (_regval))) : \ + 100000 * (1 << ((_regval) - 8))) +#define BMI160_ODR_TO_REG(_odr) \ + ((_odr) < 100000 ? (__builtin_clz(100000 / (_odr)) - 23) : \ + (39 - __builtin_clz((_odr) / 100000))) #define BMI160_CONF_REG(_sensor) (0x40 + 2 * (_sensor)) #define BMI160_RANGE_REG(_sensor) (0x41 + 2 * (_sensor)) @@ -283,6 +287,6 @@ enum bmi160_running_mode { #define BMI160_FLAG_SEC_I2C_ENABLED (1 << 0) struct bmi160_drv_data_t { struct motion_data_t saved_data[3]; - uint8_t flags; + uint8_t flags; }; #endif /* __CROS_EC_ACCELGYRO_BMI160_H */ |