summaryrefslogtreecommitdiff
path: root/driver/sensorhub_lsm6dsm.c
diff options
context:
space:
mode:
Diffstat (limited to 'driver/sensorhub_lsm6dsm.c')
-rw-r--r--driver/sensorhub_lsm6dsm.c136
1 files changed, 65 insertions, 71 deletions
diff --git a/driver/sensorhub_lsm6dsm.c b/driver/sensorhub_lsm6dsm.c
index 7957925bf1..d801eb85f3 100644
--- a/driver/sensorhub_lsm6dsm.c
+++ b/driver/sensorhub_lsm6dsm.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.
*/
@@ -13,10 +13,10 @@
#include "driver/sensorhub_lsm6dsm.h"
#include "driver/stm_mems_common.h"
-#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ## args)
+#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ##args)
-static int set_reg_bit_field(const struct motion_sensor_t *s,
- uint8_t reg, uint8_t bit_field)
+static int set_reg_bit_field(const struct motion_sensor_t *s, uint8_t reg,
+ uint8_t bit_field)
{
int tmp;
int ret;
@@ -29,8 +29,8 @@ static int set_reg_bit_field(const struct motion_sensor_t *s,
return st_raw_write8(s->port, s->i2c_spi_addr_flags, reg, tmp);
}
-static int clear_reg_bit_field(const struct motion_sensor_t *s,
- uint8_t reg, uint8_t bit_field)
+static int clear_reg_bit_field(const struct motion_sensor_t *s, uint8_t reg,
+ uint8_t bit_field)
{
int tmp;
int ret;
@@ -45,14 +45,13 @@ static int clear_reg_bit_field(const struct motion_sensor_t *s,
static inline int enable_sensorhub_func(const struct motion_sensor_t *s)
{
- return set_reg_bit_field(s, LSM6DSM_CTRL10_ADDR,
- LSM6DSM_EMBED_FUNC_EN);
+ return set_reg_bit_field(s, LSM6DSM_CTRL10_ADDR, LSM6DSM_EMBED_FUNC_EN);
}
static inline int disable_sensorhub_func(const struct motion_sensor_t *s)
{
return clear_reg_bit_field(s, LSM6DSM_CTRL10_ADDR,
- LSM6DSM_EMBED_FUNC_EN);
+ LSM6DSM_EMBED_FUNC_EN);
}
/*
@@ -65,13 +64,13 @@ static inline int disable_sensorhub_func(const struct motion_sensor_t *s)
static inline int enable_ereg_bank_acc(const struct motion_sensor_t *s)
{
return set_reg_bit_field(s, LSM6DSM_FUNC_CFG_ACC_ADDR,
- LSM6DSM_FUNC_CFG_EN);
+ LSM6DSM_FUNC_CFG_EN);
}
static inline int disable_ereg_bank_acc(const struct motion_sensor_t *s)
{
return clear_reg_bit_field(s, LSM6DSM_FUNC_CFG_ACC_ADDR,
- LSM6DSM_FUNC_CFG_EN);
+ LSM6DSM_FUNC_CFG_EN);
}
static inline int enable_aux_i2c_controller(const struct motion_sensor_t *s)
@@ -87,22 +86,21 @@ static inline int disable_aux_i2c_controller(const struct motion_sensor_t *s)
}
static inline int restore_controller_cfg(const struct motion_sensor_t *s,
- int cache)
+ int cache)
{
return st_raw_write8(s->port, s->i2c_spi_addr_flags,
LSM6DSM_CONTROLLER_CFG_ADDR, cache);
}
-static int enable_i2c_pass_through(const struct motion_sensor_t *s,
- int *cache)
+static int enable_i2c_pass_through(const struct motion_sensor_t *s, int *cache)
{
int ret;
ret = st_raw_read8(s->port, s->i2c_spi_addr_flags,
LSM6DSM_CONTROLLER_CFG_ADDR, cache);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x MCR error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x MCR error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
@@ -115,19 +113,18 @@ static int enable_i2c_pass_through(const struct motion_sensor_t *s,
LSM6DSM_CONTROLLER_CFG_ADDR,
*cache | LSM6DSM_EXT_TRIGGER_EN);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x MCETEN error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x MCETEN error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
msleep(10);
- ret = st_raw_write8(s->port, s->i2c_spi_addr_flags,
- LSM6DSM_CONTROLLER_CFG_ADDR,
- *cache & ~(LSM6DSM_EXT_TRIGGER_EN
- | LSM6DSM_I2C_CONTROLLER_ON));
+ ret = st_raw_write8(
+ s->port, s->i2c_spi_addr_flags, LSM6DSM_CONTROLLER_CFG_ADDR,
+ *cache & ~(LSM6DSM_EXT_TRIGGER_EN | LSM6DSM_I2C_CONTROLLER_ON));
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x MCC error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x MCC error ret: %d\n", __func__,
+ s->name, s->type, ret);
restore_controller_cfg(s, *cache);
return ret;
}
@@ -137,33 +134,31 @@ static int enable_i2c_pass_through(const struct motion_sensor_t *s,
LSM6DSM_I2C_PASS_THRU_MODE);
}
-static inline int power_down_accel(const struct motion_sensor_t *s,
- int *cache)
+static inline int power_down_accel(const struct motion_sensor_t *s, int *cache)
{
int ret;
- ret = st_raw_read8(s->port, s->i2c_spi_addr_flags,
- LSM6DSM_CTRL1_ADDR, cache);
+ ret = st_raw_read8(s->port, s->i2c_spi_addr_flags, LSM6DSM_CTRL1_ADDR,
+ cache);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x CTRL1R error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x CTRL1R error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
- return st_raw_write8(s->port, s->i2c_spi_addr_flags,
- LSM6DSM_CTRL1_ADDR,
+ return st_raw_write8(s->port, s->i2c_spi_addr_flags, LSM6DSM_CTRL1_ADDR,
*cache & ~LSM6DSM_XL_ODR_MASK);
}
static inline int restore_ctrl1(const struct motion_sensor_t *s, int cache)
{
- return st_raw_write8(s->port, s->i2c_spi_addr_flags,
- LSM6DSM_CTRL1_ADDR, cache);
+ return st_raw_write8(s->port, s->i2c_spi_addr_flags, LSM6DSM_CTRL1_ADDR,
+ cache);
}
static int config_slv0_read(const struct motion_sensor_t *s,
- const uint16_t slv_addr_flags,
- uint16_t reg, uint8_t len)
+ const uint16_t slv_addr_flags, uint16_t reg,
+ uint8_t len)
{
int ret;
uint16_t addr_8bit = I2C_STRIP_FLAGS(slv_addr_flags) << 1;
@@ -172,16 +167,16 @@ static int config_slv0_read(const struct motion_sensor_t *s,
LSM6DSM_SLV0_ADD_ADDR,
(addr_8bit | LSM6DSM_SLV0_RD_BIT));
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x SA error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x SA error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
ret = st_raw_write8(s->port, s->i2c_spi_addr_flags,
LSM6DSM_SLV0_SUBADD_ADDR, reg);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x RA error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x RA error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
@@ -193,8 +188,8 @@ static int config_slv0_read(const struct motion_sensor_t *s,
LSM6DSM_SLV0_CONFIG_ADDR,
(len & LSM6DSM_SLV0_NUM_OPS_MASK));
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x CFG error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x CFG error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
@@ -202,16 +197,16 @@ static int config_slv0_read(const struct motion_sensor_t *s,
}
int sensorhub_config_ext_reg(const struct motion_sensor_t *s,
- const uint16_t slv_addr_flags,
- uint8_t reg, uint8_t val)
+ const uint16_t slv_addr_flags, uint8_t reg,
+ uint8_t val)
{
int ret;
int tmp;
ret = enable_i2c_pass_through(s, &tmp);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x ENI2C error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x ENI2C error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
@@ -227,44 +222,44 @@ int sensorhub_config_slv0_read(const struct motion_sensor_t *s,
int ret;
if (len <= 0 || len > OUT_XYZ_SIZE) {
- CPRINTF("%s: %s type:0x%x Invalid length: %d\n",
- __func__, s->name, s->type, len);
+ CPRINTF("%s: %s type:0x%x Invalid length: %d\n", __func__,
+ s->name, s->type, len);
return EC_ERROR_INVAL;
}
ret = power_down_accel(s, &tmp_xl_cfg);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x PDXL error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x PDXL error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
ret = enable_ereg_bank_acc(s);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x ENERB error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x ENERB error ret: %d\n", __func__,
+ s->name, s->type, ret);
goto out_restore_ctrl1;
}
ret = config_slv0_read(s, slv_addr_flags, reg, len);
disable_ereg_bank_acc(s);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x CS0R error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x CS0R error ret: %d\n", __func__,
+ s->name, s->type, ret);
goto out_restore_ctrl1;
}
ret = enable_sensorhub_func(s);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x ENSH error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x ENSH error ret: %d\n", __func__,
+ s->name, s->type, ret);
goto out_restore_ctrl1;
}
ret = enable_aux_i2c_controller(s);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x ENI2CM error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x ENI2CM error ret: %d\n", __func__,
+ s->name, s->type, ret);
disable_sensorhub_func(s);
}
out_restore_ctrl1:
@@ -282,41 +277,40 @@ int sensorhub_slv0_data_read(const struct motion_sensor_t *s, uint8_t *raw)
* contents of that register.
*/
ret = st_raw_read_n_noinc(s->port, s->i2c_spi_addr_flags,
- LSM6DSM_SENSORHUB1_REG,
- raw, OUT_XYZ_SIZE);
+ LSM6DSM_SENSORHUB1_REG, raw, OUT_XYZ_SIZE);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x SH1R error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x SH1R error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
return EC_SUCCESS;
}
int sensorhub_check_and_rst(const struct motion_sensor_t *s,
- const uint16_t slv_addr_flags,
- uint8_t whoami_reg, uint8_t whoami_val,
- uint8_t rst_reg, uint8_t rst_val)
+ const uint16_t slv_addr_flags, uint8_t whoami_reg,
+ uint8_t whoami_val, uint8_t rst_reg,
+ uint8_t rst_val)
{
int ret, tmp;
int tmp_controller_cfg;
ret = enable_i2c_pass_through(s, &tmp_controller_cfg);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x ENI2C error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x ENI2C error ret: %d\n", __func__,
+ s->name, s->type, ret);
return ret;
}
ret = st_raw_read8(s->port, slv_addr_flags, whoami_reg, &tmp);
if (ret != EC_SUCCESS) {
- CPRINTF("%s: %s type:0x%x WAIR error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x WAIR error ret: %d\n", __func__,
+ s->name, s->type, ret);
goto err_restore_controller_cfg;
}
if (tmp != whoami_val) {
- CPRINTF("%s: %s type:0x%x WAIC error ret: %d\n",
- __func__, s->name, s->type, ret);
+ CPRINTF("%s: %s type:0x%x WAIC error ret: %d\n", __func__,
+ s->name, s->type, ret);
ret = EC_ERROR_UNKNOWN;
goto err_restore_controller_cfg;
}