diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2015-07-01 12:39:07 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-07-15 03:39:12 +0000 |
commit | e095bad64e5a9e27bdfadae2c0746d2ee151ef67 (patch) | |
tree | ebe804d050f0d3c8c9cb2c3ae7308e028173c545 /driver/accelgyro_bmi160.h | |
parent | c0f78b4c0aca20203fefbc96c7e52c709455c06b (diff) | |
download | chrome-ec-e095bad64e5a9e27bdfadae2c0746d2ee151ef67.tar.gz |
driver: bmi160 Add code for calibration
Add code for set/getting calibration data on bmi160
Add code to perform FOC (Fast Online Calibration) on bmi160.
Add delay after getting out of suspend to be sure sensor is
available.
BRANCH=smaug
TEST=Check sensors are properly calibrated on Smaug:
Perform calibration:
echo 1 > /sys/bus/iio/devices/iio:device1/calibrate
Read calibration values:
cat /sys/bus/iio/devices/iio:device1/*_calibbias
Check the values are translated properly.
Write calibration values and check it affects the
sensor output.
BUG=chromium:506101,chrome-os-partner:39900
Change-Id: Ib9aad9bbd90b4249625641d68febf94b69aa4987
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/283165
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'driver/accelgyro_bmi160.h')
-rw-r--r-- | driver/accelgyro_bmi160.h | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h index d8b12a0bc8..64351a75cb 100644 --- a/driver/accelgyro_bmi160.h +++ b/driver/accelgyro_bmi160.h @@ -117,28 +117,27 @@ enum fifo_header { #define BMI160_ACC_CONF 0x40 +#define BMI160_ODR_MASK 0x0F +#define BMI160_ACC_BW_OFFSET 4 +#define BMI160_ACC_BW_MASK (0x7 << BMI160_ACC_BW_OFFSET) + +#define BMI160_ACC_RANGE 0x41 #define BMI160_GSEL_2G 0x03 #define BMI160_GSEL_4G 0x05 #define BMI160_GSEL_8G 0x08 #define BMI160_GSEL_16G 0x0c -#define BMI160_ODR_MASK 0x0F - -#define BMI160_ACC_BW_OFFSET 4 -#define BMI160_ACC_BW_MASK (0x7 << BMI160_ACC_BW_OFFSET) -#define BMI160_ACC_RANGE 0x41 +#define BMI160_GYR_CONF 0x42 +#define BMI160_GYR_BW_OFFSET 4 +#define BMI160_GYR_BW_MASK (0x3 << BMI160_GYR_BW_OFFSET) +#define BMI160_GYR_RANGE 0x43 #define BMI160_DPS_SEL_2000 0x00 #define BMI160_DPS_SEL_1000 0x01 #define BMI160_DPS_SEL_500 0x02 #define BMI160_DPS_SEL_250 0x03 #define BMI160_DPS_SEL_125 0x04 -#define BMI160_GYR_CONF 0x42 - -#define BMI160_GYR_BW_OFFSET 4 -#define BMI160_GYR_BW_MASK (0x3 << BMI160_GYR_BW_OFFSET) -#define BMI160_GYR_RANGE 0x43 #define BMI160_MAG_CONF 0x44 @@ -280,6 +279,14 @@ enum fifo_header { #define BMI160_INT_FLAT_1 0x68 #define BMI160_FOC_CONF 0x69 +#define BMI160_FOC_GYRO_EN (1 << 6) +#define BMI160_FOC_ACC_PLUS_1G 1 +#define BMI160_FOC_ACC_MINUS_1G 2 +#define BMI160_FOC_ACC_0G 3 +#define BMI160_FOC_ACC_Z_OFFSET 0 +#define BMI160_FOC_ACC_Y_OFFSET 2 +#define BMI160_FOC_ACC_X_OFFSET 4 + #define BMI160_CONF 0x6a #define BMI160_IF_CONF 0x6b #define BMI160_IF_MODE_OFF 4 @@ -291,9 +298,21 @@ enum fifo_header { #define BMI160_PMU_TRIGGER 0x6c #define BMI160_SELF_TEST 0x6d +#define BMI160_OFFSET_ACC70 0x71 +#define BMI160_OFFSET_ACC_MULTI_MG (3900 * 1024) +#define BMI160_OFFSET_ACC_DIV_MG 1000000 +#define BMI160_OFFSET_GYR70 0x74 +#define BMI160_OFFSET_GYRO_MULTI_MDS (61 * 1024) +#define BMI160_OFFSET_GYRO_DIV_MDS 1000 +#define BMI160_OFFSET_EN_GYR98 0x77 +#define BMI160_OFFSET_ACC_EN (1 << 6) +#define BMI160_OFFSET_GYRO_EN (1 << 7) + + #define BMI160_CMD_REG 0x7e #define BMI160_CMD_SOFT_RESET 0xb6 #define BMI160_CMD_NOOP 0x00 +#define BMI160_CMD_START_FOC 0x03 #define BMI160_CMD_ACC_MODE_SUSP 0x10 #define BMI160_CMD_ACC_MODE_NORMAL 0x11 #define BMI160_CMD_ACC_MODE_LOWPOWER 0x12 |