diff options
Diffstat (limited to 'driver/mag_lis2mdl.c')
-rw-r--r-- | driver/mag_lis2mdl.c | 81 |
1 files changed, 37 insertions, 44 deletions
diff --git a/driver/mag_lis2mdl.c b/driver/mag_lis2mdl.c index c0f7dff90d..e8a8cb82ca 100644 --- a/driver/mag_lis2mdl.c +++ b/driver/mag_lis2mdl.c @@ -1,4 +1,4 @@ -/* Copyright 2018 The Chromium OS Authors. All rights reserved. +/* Copyright 2018 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -24,11 +24,9 @@ #endif #endif -#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ## args) +#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ##args) -void lis2mdl_normalize(const struct motion_sensor_t *s, - intv3_t v, - uint8_t *raw) +void lis2mdl_normalize(const struct motion_sensor_t *s, intv3_t v, uint8_t *raw) { struct mag_cal_t *cal = LIS2MDL_CAL(s); int i; @@ -82,8 +80,8 @@ static int set_range(struct motion_sensor_t *s, int range, int rnd) * @offset: offset vector * @temp: Temp */ -static int set_offset(const struct motion_sensor_t *s, - const int16_t *offset, int16_t temp) +static int set_offset(const struct motion_sensor_t *s, const int16_t *offset, + int16_t temp) { struct mag_cal_t *cal = LIS2MDL_CAL(s); @@ -100,8 +98,8 @@ static int set_offset(const struct motion_sensor_t *s, * @offset: offset vector * @temp: Temp */ -static int get_offset(const struct motion_sensor_t *s, - int16_t *offset, int16_t *temp) +static int get_offset(const struct motion_sensor_t *s, int16_t *offset, + int16_t *temp) { struct mag_cal_t *cal = LIS2MDL_CAL(s); intv3_t offset_int; @@ -139,26 +137,24 @@ int lis2mdl_thru_lsm6dsm_init(struct motion_sensor_t *s) mutex_lock(s->mutex); /* Magnetometer in cascade mode */ - ret = sensorhub_check_and_rst( - LSM6DSM_MAIN_SENSOR(s), - CONFIG_ACCELGYRO_SEC_ADDR_FLAGS, - LIS2MDL_WHO_AM_I_REG, LIS2MDL_WHO_AM_I, - LIS2MDL_CFG_REG_A_ADDR, LIS2MDL_FLAG_SW_RESET); + ret = sensorhub_check_and_rst(LSM6DSM_MAIN_SENSOR(s), + CONFIG_ACCELGYRO_SEC_ADDR_FLAGS, + LIS2MDL_WHO_AM_I_REG, LIS2MDL_WHO_AM_I, + LIS2MDL_CFG_REG_A_ADDR, + LIS2MDL_FLAG_SW_RESET); if (ret != EC_SUCCESS) goto err_unlock; - ret = sensorhub_config_ext_reg( - LSM6DSM_MAIN_SENSOR(s), - CONFIG_ACCELGYRO_SEC_ADDR_FLAGS, - LIS2MDL_CFG_REG_A_ADDR, - LIS2MDL_ODR_50HZ | LIS2MDL_MODE_CONT); + ret = sensorhub_config_ext_reg(LSM6DSM_MAIN_SENSOR(s), + CONFIG_ACCELGYRO_SEC_ADDR_FLAGS, + LIS2MDL_CFG_REG_A_ADDR, + LIS2MDL_ODR_50HZ | LIS2MDL_MODE_CONT); if (ret != EC_SUCCESS) goto err_unlock; - ret = sensorhub_config_slv0_read( - LSM6DSM_MAIN_SENSOR(s), - CONFIG_ACCELGYRO_SEC_ADDR_FLAGS, - LIS2MDL_OUT_REG, OUT_XYZ_SIZE); + ret = sensorhub_config_slv0_read(LSM6DSM_MAIN_SENSOR(s), + CONFIG_ACCELGYRO_SEC_ADDR_FLAGS, + LIS2MDL_OUT_REG, OUT_XYZ_SIZE); if (ret != EC_SUCCESS) goto err_unlock; @@ -197,8 +193,8 @@ static int lis2mdl_is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = st_raw_read8(s->port, s->i2c_spi_addr_flags, - LIS2MDL_STATUS_REG, &tmp); + ret = st_raw_read8(s->port, s->i2c_spi_addr_flags, LIS2MDL_STATUS_REG, + &tmp); if (ret != EC_SUCCESS) { *ready = 0; return ret; @@ -206,7 +202,6 @@ static int lis2mdl_is_data_ready(const struct motion_sensor_t *s, int *ready) *ready = tmp & LIS2MDL_XYZ_DIRTY_MASK; return EC_SUCCESS; - } /** @@ -239,8 +234,8 @@ int lis2mdl_read(const struct motion_sensor_t *s, intv3_t v) } mutex_lock(s->mutex); - ret = st_raw_read_n(s->port, s->i2c_spi_addr_flags, - LIS2MDL_OUT_REG, raw, OUT_XYZ_SIZE); + ret = st_raw_read_n(s->port, s->i2c_spi_addr_flags, LIS2MDL_OUT_REG, + raw, OUT_XYZ_SIZE); mutex_unlock(s->mutex); if (ret == EC_SUCCESS) { lis2mdl_normalize(s, v, raw); @@ -280,8 +275,7 @@ int lis2mdl_init(struct motion_sensor_t *s) mutex_lock(s->mutex); /* Reset the sensor */ - ret = st_raw_write8(s->port, LIS2MDL_ADDR_FLAGS, - LIS2MDL_CFG_REG_A_ADDR, + ret = st_raw_write8(s->port, LIS2MDL_ADDR_FLAGS, LIS2MDL_CFG_REG_A_ADDR, LIS2MDL_FLAG_SW_RESET); if (ret != EC_SUCCESS) goto lis2mdl_init_error; @@ -330,20 +324,20 @@ int lis2mdl_set_data_rate(const struct motion_sensor_t *s, int rate, int rnd) if (rate > 0) { if (rnd) /* Round up */ - reg_val = rate <= 10000 ? LIS2MDL_ODR_10HZ - : rate <= 20000 ? LIS2MDL_ODR_20HZ - : LIS2MDL_ODR_50HZ; + reg_val = rate <= 10000 ? LIS2MDL_ODR_10HZ : + rate <= 20000 ? LIS2MDL_ODR_20HZ : + LIS2MDL_ODR_50HZ; else /* Round down */ - reg_val = rate < 20000 ? LIS2MDL_ODR_10HZ - : rate < 50000 ? LIS2MDL_ODR_20HZ - : LIS2MDL_ODR_50HZ; + reg_val = rate < 20000 ? LIS2MDL_ODR_10HZ : + rate < 50000 ? LIS2MDL_ODR_20HZ : + LIS2MDL_ODR_50HZ; } - normalized_rate = rate <= 0 ? 0 - : reg_val == LIS2MDL_ODR_10HZ ? 10000 - : reg_val == LIS2MDL_ODR_20HZ ? 20000 - : 50000; + normalized_rate = rate <= 0 ? 0 : + reg_val == LIS2MDL_ODR_10HZ ? 10000 : + reg_val == LIS2MDL_ODR_20HZ ? 20000 : + 50000; /* * If no change is needed just bail. Not doing so will require a reset @@ -356,10 +350,9 @@ int lis2mdl_set_data_rate(const struct motion_sensor_t *s, int rate, int rnd) init_mag_cal(cal); if (normalized_rate > 0) - cal->batch_size = MAX( - MAG_CAL_MIN_BATCH_SIZE, - (normalized_rate * 1000) / - MAG_CAL_MIN_BATCH_WINDOW_US); + cal->batch_size = MAX(MAG_CAL_MIN_BATCH_SIZE, + (normalized_rate * 1000) / + MAG_CAL_MIN_BATCH_WINDOW_US); else cal->batch_size = 0; |