altos/telefireone-v1.0: Track ao_led_init API change
[fw/altos] / src / drivers / ao_mpu9250.h
index df1be7c727a95e18c29386324e990b193a9bb13e..5e8e0885f68096599d99c39515d9317e6c529f47 100644 (file)
 #define MPU9250_I2C_SLV0_REG   0x26
 #define MPU9250_I2C_SLV0_CTRL  0x27
 
+#define  MPU9250_I2C_SLV0_CTRL_I2C_SLV0_EN     7
+#define  MPU9250_I2C_SLV0_CTRL_I2C_SLV0_BYTE_SW        6
+#define  MPU9250_I2C_SLV0_CTRL_I2C_SLV0_REG_DIS        5
+#define  MPU9250_I2C_SLV0_CTRL_I2C_SLV0_GRP    4
+#define  MPU9250_I2C_SLV0_CTRL_I2C_SLV0_LENG   0
+
 #define MPU9250_I2C_SLV1_ADDR  0x28
 #define MPU9250_I2C_SLV1_REG   0x29
 #define MPU9250_I2C_SLV1_CTRL  0x2a
 #define MPU9250_I2C_SLV4_REG   0x32
 #define MPU9250_I2C_SLV4_DO    0x33
 #define MPU9250_I2C_SLV4_CTRL  0x34
+#define  MPU9250_I2C_SLV4_CTRL_I2C_SLV4_EN     7
+#define  MPU9250_I2C_SLV4_CTRL_SLV4_DONE_INT_EN        6
+#define  MPU9250_I2C_SLV4_CTRL_I2C_SLV4_REG_DIS        5
+#define  MPU9250_I2C_SLV4_CTRL_I2C_MST_DLY     0
+
 #define MPU9250_I2C_SLV4_DI    0x35
 
 #define MPU9250_I2C_MST_STATUS 0x36
 #define MPU9250_GYRO_ZOUT_H            0x47
 #define MPU9250_GYRO_ZOUT_L            0x48
 
+#define MPU9250_I2C_MST_DELAY_CTRL     0x67
+
+#define  MPU9250_I2C_MST_DELAY_CTRL_DELAY_ES_SHADOW    7
+#define  MPU9250_I2C_MST_DELAY_CTRL_I2C_SLV4_DLY_EN    4
+#define  MPU9250_I2C_MST_DELAY_CTRL_I2C_SLV3_DLY_EN    3
+#define  MPU9250_I2C_MST_DELAY_CTRL_I2C_SLV2_DLY_EN    2
+#define  MPU9250_I2C_MST_DELAY_CTRL_I2C_SLV1_DLY_EN    1
+#define  MPU9250_I2C_MST_DELAY_CTRL_I2C_SLV0_DLY_EN    0
+
 #define MPU9250_SIGNAL_PATH_RESET      0x68
 #define MPU9250_SIGNAL_PATH_RESET_GYRO_RESET   2
 #define MPU9250_SIGNAL_PATH_RESET_ACCEL_RESET  1
 #define MPU9250_WHO_AM_I       0x75
 #define MPU9250_I_AM_9250      0x71
 
+/* AK8963 mag sensor on the I2C bus */
+
+#define MPU9250_MAG_ADDR       0x0c
+
+#define MPU9250_MAG_WIA                0x00
+#define  MPU9250_MAG_WIA_VALUE         0x48
+
+#define MPU9250_MAG_INFO       0x01
+#define MPU9250_MAG_ST1        0x02
+#define  MPU9250_MAG_ST1_DOR           1
+#define  MPU9250_MAG_ST1_DRDY          0
+
+#define MPU9250_MAG_HXL                0x03
+#define MPU9250_MAG_HXH                0x04
+#define MPU9250_MAG_HYL                0x05
+#define MPU9250_MAG_HYH                0x06
+#define MPU9250_MAG_HZL                0x07
+#define MPU9250_MAG_HZH                0x08
+#define MPU9250_MAG_ST2                0x09
+#define  MPU9250_MAG_ST2_BITM          4
+#define  MPU9250_MAG_ST2_HOFL          3
+
+#define MPU9250_MAG_CNTL1      0x0a
+#define  MPU9250_MAG_CNTL1_MODE                0
+#define  MPU9250_MAG_CNTL1_MODE_POWER_DOWN     0x0
+#define  MPU9250_MAG_CNTL1_MODE_SINGLE         0x1
+#define  MPU9250_MAG_CNTL1_MODE_CONT_1         0x2     /* 8Hz */
+#define  MPU9250_MAG_CNTL1_MODE_CONT_2         0x6     /* 100Hz */
+#define  MPU9250_MAG_CNTL1_MODE_EXTERNAL       0x4
+#define  MPU9250_MAG_CNTL1_MODE_SELF_TEST      0x8
+#define  MPU9250_MAG_CNTL1_MODE_FUSE_ACCESS    0xf
+
+#define  MPU9250_MAG_CNTL1_BIT         4
+#define  MPU9250_MAG_CNTL1_BIT_14              0
+#define  MPU9250_MAG_CNTL1_BIT_16              1
+
+#define MPU9250_MAG_CNTL2      0x0b
+#define  MPU9250_MAG_CNTL2_SRST                0
+
+#define MPU9250_MAG_ASTC       0x0c
+#define  MPU9250_MAG_ASTC_SELF         6
+
+#define MPU9250_MAG_TS1                0x0d
+#define MPU9250_MAG_TS2                0x0e
+#define MPU9250_MAG_I2CDIS     0x0f
+#define  MPU9250_MAG_I2CDIS_VALUE      0x1d
+
+#define MPU9250_MAG_ASAX       0x10
+#define MPU9250_MAG_ASAY       0x11
+#define MPU9250_MAG_ASAZ       0x12
+
 /* Self test acceleration is approximately 0.5g */
 #define MPU9250_ST_ACCEL(full_scale)   (32767 / ((full_scale) * 2))