summaryrefslogtreecommitdiff
path: root/driver/sensorhub_lsm6dsm.c
diff options
context:
space:
mode:
authorTom Hughes <tomhughes@chromium.org>2022-09-21 14:08:36 -0700
committerTom Hughes <tomhughes@chromium.org>2022-09-22 12:59:38 -0700
commitc453fd704268ef72de871b0c5ac7a989de662334 (patch)
treefcf6ce5810f9ff9e3c8cce434812dd75492269ed /driver/sensorhub_lsm6dsm.c
parent6c1587ca70f558b4f96b3f0b18ad8b027d3ba99d (diff)
parent28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff)
downloadchrome-ec-firmware-fpmcu-dartmonkey-release.tar.gz
Merge remote-tracking branch cros/main into firmware-fpmcu-dartmonkey-releasefirmware-fpmcu-dartmonkey-release
Generated by: ./util/update_release_branch.py --board dartmonkey --relevant_paths_file ./util/fingerprint-relevant-paths.txt firmware-fpmcu-dartmonkey-release Relevant changes: git log --oneline 6c1587ca70..28712dae9d -- board/nocturne_fp board/dartmonkey common/fpsensor docs/fingerprint driver/fingerprint util/getversion.sh ded9307b79 util/getversion.sh: Fix version when not in a git repo 956055e692 board: change Google USB vendor info 71b2ef709d Update license boilerplate text in source code files 33e11afda0 Revert "fpsensor: Build fpsensor source file with C++" c8d0360723 fpsensor: Build fpsensor source file with C++ bc113abd53 fpsensor: Fix g++ compiler error 150a58a0dc fpsensor: Fix fp_set_sensor_mode return type b33b5ce85b fpsensor: Remove nested designators for C++ compatibility 2e864b2539 tree-wide: const-ify argv for console commands 56d8b360f9 test: Add test for get ikm failure when seed not set 3a3d6c3690 test: Add test for fpsensor trivial key failure 233e6bbd08 fpsensor_crypto: Abstract calls to hmac_SHA256 0a041b285b docs/fingerprint: Typo correction c03fab67e2 docs/fingerprint: Fix the path of fputils.py 0b5d4baf5a util/getversion.sh: Fix empty file list handling 6e128fe760 FPMCU dev board environment with Satlab 3eb29b6aa5 builtin: Move ssize_t to sys/types.h 345d62ebd1 docs/fingerprint: Update power numbers for latest dartmonkey release c25ffdb316 common: Conditionally support printf %l and %i modifiers 9a3c514b45 test: Add a test to check if the debugger is connected 54e603413f Move standard library tests to their own file 43fa6b4bf8 docs/fingerprint: Update power numbers for latest bloonchipper release 25536f9a84 driver/fingerprint/fpc/bep/fpc_sensor_spi.c: Format with clang-format 4face99efd driver/fingerprint/fpc/libfp/fpc_sensor_pal.h: Format with clang-format 738de2b575 trng: Rename rand to trng_rand 14b8270edd docs/fingerprint: Update dragonclaw power numbers 0b268f93d1 driver/fingerprint/fpc/libfp/fpc_private.c: Format with clang-format f80da163f2 driver/fingerprint/fpc/libfp/fpc_private.h: Format with clang-format a0751778f4 board/nocturne_fp/ro_workarounds.c: Format with clang-format 5e9c85c9b1 driver/fingerprint/fpc/libfp/fpc_sensor_pal.c: Format with clang-format c1f9dd3cf8 driver/fingerprint/fpc/libfp/fpc_bio_algorithm.h: Format with clang-format eb1e1bed8d driver/fingerprint/fpc/libfp/fpc1145_private.h: Format with clang-format 6e7b611821 driver/fingerprint/fpc/bep/fpc_bio_algorithm.h: Format with clang-format e0589cd5e2 driver/fingerprint/fpc/bep/fpc1035_private.h: Format with clang-format 58f0246dbe board/nocturne_fp/board_ro.c: Format with clang-format 7905e556a0 common/fpsensor/fpsensor_crypto.c: Format with clang-format 21289d170c driver/fingerprint/fpc/bep/fpc1025_private.h: Format with clang-format 98a20f937e common/fpsensor/fpsensor_state.c: Format with clang-format a2d255d8af common/fpsensor/fpsensor.c: Format with clang-format 84e53a65da board/nocturne_fp/board.h: Format with clang-format 73055eeb3f driver/fingerprint/fpc/bep/fpc_private.c: Format with clang-format 0f7b5cb509 common/fpsensor/fpsensor_private.h: Format with clang-format 1ceade6e65 driver/fingerprint/fpc/bep/fpc_private.h: Format with clang-format dca9d74321 Revert "trng: Rename rand to trng_rand" a6b0b3554f trng: Rename rand to trng_rand 28d0b75b70 third_party/boringssl: Remove unused header BRANCH=None BUG=b:244387210 b:242720240 b:215613183 b:242720910 b:236386294 BUG=b:234181908 b:244781166 b:234781655 b:234143158 b:234181908 BUG=b:237344361 b:236025198 b:234181908 b:180945056 chromium:1098010 BUG=b:246424843 b:234181908 b:131913998 TEST=`make -j buildall` TEST=./util/run_device_tests.py --board dartmonkey Test "aes": PASSED Test "cec": PASSED Test "cortexm_fpu": PASSED Test "crc": PASSED Test "flash_physical": PASSED Test "flash_write_protect": PASSED Test "fpsensor_hw": PASSED Test "fpsensor_spi_ro": PASSED Test "fpsensor_spi_rw": PASSED Test "fpsensor_uart_ro": PASSED Test "fpsensor_uart_rw": PASSED Test "mpu_ro": PASSED Test "mpu_rw": PASSED Test "mutex": PASSED Test "pingpong": PASSED Test "printf": PASSED Test "queue": PASSED Test "rollback_region0": PASSED Test "rollback_region1": PASSED Test "rollback_entropy": PASSED Test "rtc": PASSED Test "sha256": PASSED Test "sha256_unrolled": PASSED Test "static_if": PASSED Test "stdlib": PASSED Test "system_is_locked_wp_on": PASSED Test "system_is_locked_wp_off": PASSED Test "timer_dos": PASSED Test "utils": PASSED Test "utils_str": PASSED Test "panic_data_dartmonkey_v2.0.2887": PASSED Test "panic_data_nocturne_fp_v2.2.64": PASSED Test "panic_data_nami_fp_v2.2.144": PASSED Force-Relevant-Builds: all Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I2c312583a709fedae8fe11d92c22328c3b634bc7
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;
}