summaryrefslogtreecommitdiff
path: root/driver/accelgyro_bmi_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'driver/accelgyro_bmi_common.h')
-rw-r--r--driver/accelgyro_bmi_common.h50
1 files changed, 33 insertions, 17 deletions
diff --git a/driver/accelgyro_bmi_common.h b/driver/accelgyro_bmi_common.h
index 27e4978ab5..238bb20947 100644
--- a/driver/accelgyro_bmi_common.h
+++ b/driver/accelgyro_bmi_common.h
@@ -9,6 +9,7 @@
#include "accelgyro.h"
#include "driver/accelgyro_bmi160.h"
+#include "driver/accelgyro_bmi260.h"
#include "mag_bmm150.h"
/*
@@ -115,39 +116,54 @@ struct bmi_drv_data_t {
BMI_GET_DATA(_sensor)->orientation)
#endif
-#define BMI_ACC_DATA BMI160_ACC_X_L_G
-#define BMI_GYR_DATA BMI160_GYR_X_L_G
-#define BMI_AUX_DATA BMI160_MAG_X_L_G
-
-#define BMI_FIFO_CONFIG_0 BMI160_FIFO_CONFIG_0
-#define BMI_FIFO_CONFIG_1 BMI160_FIFO_CONFIG_1
-#define BMI_FIFO_SENSOR_EN(_sensor) BMI160_FIFO_SENSOR_EN(_sensor)
-
-#define BMI_TEMPERATURE_0 BMI160_TEMPERATURE_0
+#define BMI_ACC_DATA(v) (BMI160_ACC_X_L_G + \
+ (v) * (BMI260_ACC_X_L_G - BMI160_ACC_X_L_G))
+#define BMI_GYR_DATA(v) (BMI160_GYR_X_L_G + \
+ (v) * (BMI260_GYR_X_L_G - BMI160_GYR_X_L_G))
+#define BMI_AUX_DATA(v) (BMI160_MAG_X_L_G + \
+ (v) * (BMI260_AUX_X_L_G - BMI160_MAG_X_L_G))
+
+#define BMI_FIFO_CONFIG_0(v) (BMI160_FIFO_CONFIG_0 + \
+ (v) * (BMI260_FIFO_CONFIG_0 - BMI160_FIFO_CONFIG_0))
+#define BMI_FIFO_CONFIG_1(v) (BMI160_FIFO_CONFIG_1 + \
+ (v) * (BMI260_FIFO_CONFIG_1 - BMI160_FIFO_CONFIG_1))
+#define BMI_FIFO_SENSOR_EN(v, _sensor) (BMI160_FIFO_SENSOR_EN(_sensor) + \
+ (v) * (BMI260_FIFO_SENSOR_EN(_sensor) - BMI160_FIFO_SENSOR_EN(_sensor)))
+
+#define BMI_TEMPERATURE_0(v) (BMI160_TEMPERATURE_0 + \
+ (v) * (BMI260_TEMPERATURE_0 - BMI160_TEMPERATURE_0))
#define BMI_INVALID_TEMP 0x8000
-#define BMI_STATUS BMI160_STATUS
+#define BMI_STATUS(v) (BMI160_STATUS + \
+ (v) * (BMI260_STATUS - BMI160_STATUS))
#define BMI_DRDY_OFF(_sensor) (7 - (_sensor))
#define BMI_DRDY_MASK(_sensor) (1 << BMI160_DRDY_OFF(_sensor))
-#define BMI_OFFSET_ACC70 BMI160_OFFSET_ACC70
-#define BMI_OFFSET_GYR70 BMI160_OFFSET_GYR70
+#define BMI_OFFSET_ACC70(v) (BMI160_OFFSET_ACC70 + \
+ (v) * (BMI260_OFFSET_ACC70 - BMI160_OFFSET_ACC70))
+#define BMI_OFFSET_GYR70(v) (BMI160_OFFSET_GYR70 + \
+ (v) * (BMI260_OFFSET_GYR70 - BMI160_OFFSET_GYR70))
/*
* There is some bits in this register that differ between BMI160 and BMI260
* Only use this macro for gyro offset 9:8 (BMI_OFFSET_EN_GYR98 5:0).
*/
-#define BMI_OFFSET_EN_GYR98 BMI160_OFFSET_EN_GYR98
+#define BMI_OFFSET_EN_GYR98(v) (BMI160_OFFSET_EN_GYR98 + \
+ (v) * (BMI260_OFFSET_EN_GYR98 - BMI160_OFFSET_EN_GYR98))
#define BMI_OFFSET_GYR98_MASK (BIT(6) - 1)
#define BMI_OFFSET_ACC_MULTI_MG (3900 * 1024)
#define BMI_OFFSET_ACC_DIV_MG 1000000
#define BMI_OFFSET_GYRO_MULTI_MDS (61 * 1024)
#define BMI_OFFSET_GYRO_DIV_MDS 1000
-#define BMI_FIFO_LENGTH_0 BMI160_FIFO_LENGTH_0
-#define BMI_FIFO_LENGTH_MASK BMI160_FIFO_LENGTH_MASK
-#define BMI_FIFO_DATA BMI160_FIFO_DATA
+#define BMI_FIFO_LENGTH_0(v) (BMI160_FIFO_LENGTH_0 + \
+ (v) * (BMI260_FIFO_LENGTH_0 - BMI160_FIFO_LENGTH_0))
+#define BMI_FIFO_LENGTH_MASK(v) (BMI160_FIFO_LENGTH_MASK + \
+ (v) * (BMI260_FIFO_LENGTH_MASK - BMI160_FIFO_LENGTH_MASK))
+#define BMI_FIFO_DATA(v) (BMI160_FIFO_DATA + \
+ (v) * (BMI260_FIFO_DATA - BMI160_FIFO_DATA))
-#define BMI_CMD_REG BMI160_CMD_REG
+#define BMI_CMD_REG(v) (BMI160_CMD_REG + \
+ (v) * (BMI260_CMD_REG - BMI160_CMD_REG))
#define BMI_CMD_FIFO_FLUSH 0xb0