diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2015-07-30 17:47:11 -0700 |
---|---|---|
committer | ChromeOS Commit Bot <chromeos-commit-bot@chromium.org> | 2015-08-01 02:51:10 +0000 |
commit | c9832e04f15288ea9d617dba13ba606aa667def5 (patch) | |
tree | 6e076a771896c4fb1b354e8d4820c2514f57faa0 /driver/accelgyro_bmi160.h | |
parent | 5abd6087d4360e9aefa60d4b5eab06fcdb1d851f (diff) | |
download | chrome-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.h | 17 |
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 |