From 709676bfe1dacc42395d7ba658fcc23455e6d7a0 Mon Sep 17 00:00:00 2001 From: Gwendal Grignou Date: Sun, 12 Jul 2015 22:26:33 -0700 Subject: driver: bmm150 measurement compensation Using Bosh reference document, compensate X,Y,Z axis based on internal registers and R HALL values. Change compass unites to 1/16 uT per LSB. Reference: https://github.com/suribi/Thunder-Kernel/blob/master/mediatek/custom/common/kernel/magnetometer/bmm150/bmm150.c BRANCH=smaug TEST=Check compass value in user space. BUG=chrome-os-partner:39900 Change-Id: I0c480521771ef6004ac6e5182cc1d27e82c5bc7c Signed-off-by: Gwendal Grignou Reviewed-on: https://chromium-review.googlesource.com/285020 Reviewed-by: Alec Berg --- driver/accelgyro_bmi160.h | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'driver/accelgyro_bmi160.h') diff --git a/driver/accelgyro_bmi160.h b/driver/accelgyro_bmi160.h index 64351a75cb..83c8a63074 100644 --- a/driver/accelgyro_bmi160.h +++ b/driver/accelgyro_bmi160.h @@ -9,6 +9,7 @@ #define __CROS_EC_ACCELGYRO_BMI160_H #include "accelgyro.h" +#include "mag_bmm150.h" #define BMI160_ADDR0 0xd0 #define BMI160_ADDR1 0xd2 @@ -374,6 +375,9 @@ enum bmi160_running_mode { struct bmi160_drv_data_t { struct motion_data_t saved_data[3]; uint8_t flags; +#ifdef CONFIG_MAG_BMI160_BMM150 + struct bmm150_comp_registers comp_regs; +#endif }; #define BMI160_GET_DATA(_s) \ @@ -385,4 +389,11 @@ extern struct bmi160_drv_data_t g_bmi160_data; void bmi160_interrupt(enum gpio_signal signal); +#ifdef CONFIG_MAG_BMI160_BMM150 +/* Functions to access the compass through the accel/gyro. */ +int raw_mag_read8(const int addr, const int reg, int *data_ptr); +int raw_mag_write8(const int addr, const int reg, int data); +#endif + + #endif /* __CROS_EC_ACCELGYRO_BMI160_H */ -- cgit v1.2.1