mpu6050.h 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #ifndef MPU6050_H
  2. #define MPU6050_H
  3. #include <linux/ioctl.h>
  4. #define MPU6050_ACCESS_BY_GSE_I2C
  5. #ifdef MPU6050_ACCESS_BY_GSE_I2C
  6. #define MPU6050_I2C_SLAVE_ADDR (0xD2) /* mtk i2c not allow to probe two same address */
  7. #else
  8. #define MPU6050_I2C_SLAVE_ADDR 0xD0
  9. #endif
  10. /* MPU6050 Register Map (Please refer to MPU6050 Specifications) */
  11. #define MPU6050_REG_DEVID 0x75
  12. #define MPU6050_REG_FIFO_EN 0x23
  13. #define MPU6050_REG_AUX_VDD 0x01
  14. #define MPU6050_REG_SAMRT_DIV 0x19
  15. /* set external sync, full-scale range and sample rate, low pass filter bandwidth */
  16. #define MPU6050_REG_CFG 0x1A
  17. #define MPU6050_REG_GYRO_CFG 0x1B /* full-scale range and sample rate, */
  18. #define MPU6050_REG_GYRO_XH 0x43
  19. #define MPU6050_REG_TEMPH 0x41
  20. #define MPU6050_REG_FIFO_CNTH 0x72
  21. #define MPU6050_REG_FIFO_CNTL 0x73
  22. #define MPU6050_REG_FIFO_DATA 0x74
  23. #define MPU6050_REG_FIFO_CTL 0x6A
  24. #define MPU6050_REG_PWR_CTL 0x6B
  25. #define MPU6050_REG_PWR_CTL2 0x6C
  26. /*MPU6050 Register Bit definitions*/
  27. #define MPU6050_FIFO_GYROX_EN 0x40 /* insert the X Gyro data into FIFO */
  28. #define MPU6050_FIFO_GYROY_EN 0x20 /* insert the Y Gyro data into FIFO */
  29. #define MPU6050_FIFO_GYROZ_EN 0x10 /* insert the Z Gyro data into FIFO */
  30. #define MPU6050_AUX_VDDIO_DIS 0x00 /* disable VDD level for the secondary I2C bus clock and data lines */
  31. /* for MPU6050_REG_CFG */
  32. /* 0x05 //captue the state of external frame sync input pin to insert into LSB of registers */
  33. #define MPU6050_EXT_SYNC 0x03
  34. #define MPU6050_SYNC_GYROX 0x02
  35. /* for MPU6050_REG_GYRO_CFG */
  36. #define MPU6050_FS_RANGE 0x03 /* set the full-scale range of the gyro sensors */
  37. #define MPU6050_FS_1000 0x02
  38. #define MPU6050_FS_1000_LSB 33
  39. #define MPU6050_FS_MAX_LSB 131
  40. #define MPU6050_RATE_1K_LPFB_188HZ 0x01
  41. #define MPU6050_RATE_1K_LPFB_256HZ 0x00
  42. #define MPU6050_FIFO_EN 0x40 /* enable FIFO operation for sensor data */
  43. #define MPU6050_FIFO_RST 0x40 /* reset FIFO function */
  44. #define MPU6050_SLEEP 0x40 /* enable low power sleep mode */
  45. #define MPU6050_SUCCESS 0
  46. #define MPU6050_ERR_I2C -1
  47. #define MPU6050_ERR_STATUS -3
  48. #define MPU6050_ERR_SETUP_FAILURE -4
  49. #define MPU6050_ERR_GETGSENSORDATA -5
  50. #define MPU6050_ERR_IDENTIFICATION -6
  51. #define MPU6050_BUFSIZE 60
  52. /* 1 rad = 180/PI degree, MAX_LSB = 131, */
  53. /* 180*131/PI = 7506 */
  54. #define DEGREE_TO_RAD 7506
  55. extern int MPU6050_gse_power(void);
  56. extern int MPU6050_gse_mode(void);
  57. #ifdef MPU6050_ACCESS_BY_GSE_I2C
  58. extern int MPU6050_hwmsen_read_block(u8 addr, u8 *buf, u8 len);
  59. extern int MPU6050_hwmsen_write_block(u8 addr, u8 *buf, u8 len);
  60. #endif
  61. #endif /* MPU6050_H */