summaryrefslogtreecommitdiff
path: root/driver/accelgyro_bmi160.h
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2015-07-30 17:47:11 -0700
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2015-08-01 02:51:10 +0000
commitc9832e04f15288ea9d617dba13ba606aa667def5 (patch)
tree6e076a771896c4fb1b354e8d4820c2514f57faa0 /driver/accelgyro_bmi160.h
parent5abd6087d4360e9aefa60d4b5eab06fcdb1d851f (diff)
downloadchrome-ec-c9832e04f15288ea9d617dba13ba606aa667def5.tar.gz
driver: bmi160: Allow Dynamic selection of SPI or I2C transport
Using the LSB bit of motion_sensor addr field, we can select at run time if a sensor is using SPI or I2C. When the hardware stabilize, this CL can be removed. BRANCH=smaug TEST=Check that same image works on both i2c and SPI devices. BUG=chrome-os-partner:42304 Change-Id: I9aef9a4dc739366a3d4e2f6fafe063ecfb5199c6 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/289925 Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'driver/accelgyro_bmi160.h')
-rw-r--r--driver/accelgyro_bmi160.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h
index 4101b1f07e..4740c9a23e 100644
--- a/driver/accelgyro_bmi160.h
+++ b/driver/accelgyro_bmi160.h
@@ -11,6 +11,23 @@
#include "accelgyro.h"
#include "mag_bmm150.h"
+/*
+ * The addr field of motion_sensor support both SPI and I2C:
+ *
+ * +-------------------------------+---+
+ * | 7 bit i2c address | 0 |
+ * +-------------------------------+---+
+ * Or
+ * +-------------------------------+---+
+ * | SPI device ID | 1 |
+ * +-------------------------------+---+
+ */
+#define BMI160_SET_SPI_ADDRESS(_addr) (((_addr) << 1) | 1)
+#define BMI160_IS_SPI(_addr) ((_addr) & 1)
+#define BMI160_SPI_ADDRESS(_addr) ((_addr) >> 1)
+#define BMI160_I2C_ADDRESS(_addr) (_addr)
+
+/* I2C addresses */
#define BMI160_ADDR0 0xd0
#define BMI160_ADDR1 0xd2