summaryrefslogtreecommitdiff
path: root/driver/mag_lis2mdl.c
diff options
context:
space:
mode:
authorGwendal Grignou <gwendal@chromium.org>2020-01-09 10:19:59 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-24 05:32:27 +0000
commite5320809ae393184f8ff3c120232f42fe714f616 (patch)
tree888de2420e993b9458e2bad55eac53c970b6fc60 /driver/mag_lis2mdl.c
parent4ae4aa94365e6e93654c4a7191ec9a9f65409dc3 (diff)
downloadchrome-ec-e5320809ae393184f8ff3c120232f42fe714f616.tar.gz
driver: lis2mdl: Define LIS2MDL_CAL even when CONFIG_MAG_CALIBRATE is not
mag_cal_t holds offset information for the sensor, even when online calibration is not defined. Allow driver to work with online calibration disabled (it could be set from the host). BUG=none BRANCH=none TEST=using nucleo-f072rb_iks01a2, check magnetometer is working with or without CONFIG_MAG_CALIBRATE enabled. Change-Id: I2e259f53c620c593b516a12d6dff47dfbadb26c8 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1993584 Reviewed-by: Yuval Peress <peress@chromium.org>
Diffstat (limited to 'driver/mag_lis2mdl.c')
-rw-r--r--driver/mag_lis2mdl.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/driver/mag_lis2mdl.c b/driver/mag_lis2mdl.c
index c63cb7b971..1f05800c08 100644
--- a/driver/mag_lis2mdl.c
+++ b/driver/mag_lis2mdl.c
@@ -32,6 +32,7 @@ void lis2mdl_normalize(const struct motion_sensor_t *s,
{
struct mag_cal_t *cal = LIS2MDL_CAL(s);
int i;
+
#ifdef CONFIG_MAG_BMI160_LIS2MDL
struct lis2mdl_private_data *private = LIS2MDL_DATA(s);
intv3_t hn1;
@@ -57,7 +58,8 @@ void lis2mdl_normalize(const struct motion_sensor_t *s,
for (i = X; i <= Z; i++)
v[i] = LIS2MDL_RATIO(v[i]);
- mag_cal_update(cal, v);
+ if (IS_ENABLED(CONFIG_MAG_CALIBRATE))
+ mag_cal_update(cal, v);
v[X] += cal->bias[X];
v[Y] += cal->bias[Y];
@@ -170,8 +172,12 @@ int lis2mdl_thru_lsm6dsm_init(const struct motion_sensor_t *s)
goto err_unlock;
mutex_unlock(s->mutex);
- init_mag_cal(cal);
- cal->radius = 0.0f;
+ if (IS_ENABLED(CONFIG_MAG_CALIBRATE)) {
+ init_mag_cal(cal);
+ cal->radius = 0.0f;
+ } else {
+ memset(cal, 0, sizeof(*cal));
+ }
data->resol = LIS2DSL_RESOLUTION;
return sensor_init_done(s);
@@ -294,8 +300,12 @@ int lis2mdl_init(const struct motion_sensor_t *s)
if (ret != EC_SUCCESS)
return ret;
- init_mag_cal(cal);
- cal->radius = 0.0f;
+ if (IS_ENABLED(CONFIG_MAG_CALIBRATE)) {
+ init_mag_cal(cal);
+ cal->radius = 0.0f;
+ } else {
+ memset(cal, 0, sizeof(*cal));
+ }
data->resol = LIS2DSL_RESOLUTION;
return sensor_init_done(s);
@@ -351,7 +361,8 @@ int lis2mdl_set_data_rate(const struct motion_sensor_t *s, int rate, int rnd)
if (normalized_rate == data->base.odr)
return ret;
- init_mag_cal(cal);
+ if (IS_ENABLED(CONFIG_MAG_CALIBRATE))
+ init_mag_cal(cal);
if (normalized_rate > 0)
cal->batch_size = MAX(