summaryrefslogtreecommitdiff
path: root/driver/accelgyro_bmi160.h
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2015-07-25 00:08:14 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-01 02:50:41 +0000
commit8fa63762fbe0bf9f2e9a2211217eb239b494c80b (patch)
tree36fac3fcaafe8e7289d884cd70e240ddb4d34777 /driver/accelgyro_bmi160.h
parente94152b7e895b973e1c90a9935d2d1e4a706b55f (diff)
downloadchrome-ec-8fa63762fbe0bf9f2e9a2211217eb239b494c80b.tar.gz
driver: bmi160: Fix bugs found testing SPI
SPI being much faster, need to add right sleep to wait for sensor to change state from suspend. Set the ODR before the range, an issue I did not have with i2c. Fix test used when FIFO is disabled. BRANCH=smaug BUG=chrome-os-partner:42304 TEST=Check sensors are coming and rate/range are correctly set. Change-Id: I5bf655626f1f4232478a04d1d4e1a0d443efbf0f Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/288517 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'driver/accelgyro_bmi160.h')
-rw-r--r--driver/accelgyro_bmi160.h19
1 files changed, 15 insertions, 4 deletions
diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h
index 3e39e657ff..27df9c2c1f 100644
--- a/driver/accelgyro_bmi160.h
+++ b/driver/accelgyro_bmi160.h
@@ -24,6 +24,16 @@
#define BMI160_ERR_REG 0x02
#define BMI160_PMU_STATUS 0x03
+#define BMI160_PMU_MAG_OFFSET 0
+#define BMI160_PMU_GYR_OFFSET 2
+#define BMI160_PMU_ACC_OFFSET 4
+#define BMI160_PMU_SENSOR_STATUS(_sensor_type, _val) \
+ (((_val) >> (4 - 2 * (_sensor_type))) & 0x3)
+#define BMI160_PMU_SUSPEND 0
+#define BMI160_PMU_NORMAL 1
+#define BMI160_PMU_LOW_POWER 2
+#define BMI160_PMU_FAST_STARTUP 3
+
#define BMI160_MAG_X_L_G 0x04
#define BMI160_MAG_X_H_G 0x05
#define BMI160_MAG_Y_L_G 0x06
@@ -314,6 +324,7 @@ enum fifo_header {
#define BMI160_CMD_SOFT_RESET 0xb6
#define BMI160_CMD_NOOP 0x00
#define BMI160_CMD_START_FOC 0x03
+#define BMI160_CMD_ACC_MODE_OFFSET 0x10
#define BMI160_CMD_ACC_MODE_SUSP 0x10
#define BMI160_CMD_ACC_MODE_NORMAL 0x11
#define BMI160_CMD_ACC_MODE_LOWPOWER 0x12
@@ -323,10 +334,10 @@ enum fifo_header {
#define BMI160_CMD_MAG_MODE_SUSP 0x18
#define BMI160_CMD_MAG_MODE_NORMAL 0x19
#define BMI160_CMD_MAG_MODE_LOWPOWER 0x1a
-#define BMI160_CMD_MODE_SUSPEND(_sensor) \
- (BMI160_CMD_ACC_MODE_SUSP + 4 * (_sensor))
-#define BMI160_CMD_MODE_NORMAL(_sensor) \
- (BMI160_CMD_ACC_MODE_NORMAL + 4 * (_sensor))
+#define BMI160_CMD_MODE_SUSPEND(_sensor_type) \
+ (BMI160_CMD_ACC_MODE_OFFSET | (_sensor_type) << 2 | BMI160_PMU_SUSPEND)
+#define BMI160_CMD_MODE_NORMAL(_sensor_type) \
+ (BMI160_CMD_ACC_MODE_OFFSET | (_sensor_type) << 2 | BMI160_PMU_NORMAL)
#define BMI160_CMD_FIFO_FLUSH 0xb0
#define BMI160_CMD_INT_RESET 0xb1