diff options
author | Tom Hughes <tomhughes@chromium.org> | 2022-09-21 14:08:36 -0700 |
---|---|---|
committer | Tom Hughes <tomhughes@chromium.org> | 2022-09-22 12:59:38 -0700 |
commit | c453fd704268ef72de871b0c5ac7a989de662334 (patch) | |
tree | fcf6ce5810f9ff9e3c8cce434812dd75492269ed /driver/accelgyro_lsm6ds0.c | |
parent | 6c1587ca70f558b4f96b3f0b18ad8b027d3ba99d (diff) | |
parent | 28712dae9d7ed1e694f7622cc083afa71090d4d5 (diff) | |
download | chrome-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/accelgyro_lsm6ds0.c')
-rw-r--r-- | driver/accelgyro_lsm6ds0.c | 120 |
1 files changed, 50 insertions, 70 deletions
diff --git a/driver/accelgyro_lsm6ds0.c b/driver/accelgyro_lsm6ds0.c index beee41b815..265d89e18c 100644 --- a/driver/accelgyro_lsm6ds0.c +++ b/driver/accelgyro_lsm6ds0.c @@ -1,4 +1,4 @@ -/* Copyright 2014 The Chromium OS Authors. All rights reserved. +/* Copyright 2014 The ChromiumOS Authors * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ @@ -19,8 +19,8 @@ #include "util.h" #define CPUTS(outstr) cputs(CC_ACCEL, outstr) -#define CPRINTS(format, args...) cprints(CC_ACCEL, format, ## args) -#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ## args) +#define CPRINTS(format, args...) cprints(CC_ACCEL, format, ##args) +#define CPRINTF(format, args...) cprintf(CC_ACCEL, format, ##args) /* * Struct for pairing an engineering value with the register value for a @@ -32,25 +32,21 @@ struct accel_param_pair { }; /* List of range values in +/-G's and their associated register values. */ -static const struct accel_param_pair g_ranges[] = { - {2, LSM6DS0_GSEL_2G}, - {4, LSM6DS0_GSEL_4G}, - {8, LSM6DS0_GSEL_8G} -}; +static const struct accel_param_pair g_ranges[] = { { 2, LSM6DS0_GSEL_2G }, + { 4, LSM6DS0_GSEL_4G }, + { 8, LSM6DS0_GSEL_8G } }; /* * List of angular rate range values in +/-dps's * and their associated register values. */ -const struct accel_param_pair dps_ranges[] = { - {245, LSM6DS0_DPS_SEL_245}, - {500, LSM6DS0_DPS_SEL_500}, - {1000, LSM6DS0_DPS_SEL_1000}, - {2000, LSM6DS0_DPS_SEL_2000} -}; +const struct accel_param_pair dps_ranges[] = { { 245, LSM6DS0_DPS_SEL_245 }, + { 500, LSM6DS0_DPS_SEL_500 }, + { 1000, LSM6DS0_DPS_SEL_1000 }, + { 2000, LSM6DS0_DPS_SEL_2000 } }; -static inline const struct accel_param_pair *get_range_table( - enum motionsensor_type type, int *psize) +static inline const struct accel_param_pair * +get_range_table(enum motionsensor_type type, int *psize) { if (MOTIONSENSE_TYPE_ACCEL == type) { if (psize) @@ -65,28 +61,22 @@ static inline const struct accel_param_pair *get_range_table( /* List of ODR (gyro off) values in mHz and their associated register values.*/ const struct accel_param_pair gyro_on_odr[] = { - {0, LSM6DS0_ODR_PD}, - {15000, LSM6DS0_ODR_15HZ}, - {59000, LSM6DS0_ODR_59HZ}, - {119000, LSM6DS0_ODR_119HZ}, - {238000, LSM6DS0_ODR_238HZ}, - {476000, LSM6DS0_ODR_476HZ}, - {952000, LSM6DS0_ODR_952HZ} + { 0, LSM6DS0_ODR_PD }, { 15000, LSM6DS0_ODR_15HZ }, + { 59000, LSM6DS0_ODR_59HZ }, { 119000, LSM6DS0_ODR_119HZ }, + { 238000, LSM6DS0_ODR_238HZ }, { 476000, LSM6DS0_ODR_476HZ }, + { 952000, LSM6DS0_ODR_952HZ } }; /* List of ODR (gyro on) values in mHz and their associated register values. */ const struct accel_param_pair gyro_off_odr[] = { - {0, LSM6DS0_ODR_PD}, - {10000, LSM6DS0_ODR_10HZ}, - {50000, LSM6DS0_ODR_50HZ}, - {119000, LSM6DS0_ODR_119HZ}, - {238000, LSM6DS0_ODR_238HZ}, - {476000, LSM6DS0_ODR_476HZ}, - {952000, LSM6DS0_ODR_952HZ} + { 0, LSM6DS0_ODR_PD }, { 10000, LSM6DS0_ODR_10HZ }, + { 50000, LSM6DS0_ODR_50HZ }, { 119000, LSM6DS0_ODR_119HZ }, + { 238000, LSM6DS0_ODR_238HZ }, { 476000, LSM6DS0_ODR_476HZ }, + { 952000, LSM6DS0_ODR_952HZ } }; -static inline const struct accel_param_pair *get_odr_table( - enum motionsensor_type type, int *psize) +static inline const struct accel_param_pair * +get_odr_table(enum motionsensor_type type, int *psize) { if (MOTIONSENSE_TYPE_ACCEL == type) { if (psize) @@ -101,14 +91,14 @@ static inline const struct accel_param_pair *get_odr_table( static inline int get_ctrl_reg(enum motionsensor_type type) { - return (MOTIONSENSE_TYPE_ACCEL == type) ? - LSM6DS0_CTRL_REG6_XL : LSM6DS0_CTRL_REG1_G; + return (MOTIONSENSE_TYPE_ACCEL == type) ? LSM6DS0_CTRL_REG6_XL : + LSM6DS0_CTRL_REG1_G; } static inline int get_xyz_reg(enum motionsensor_type type) { - return (MOTIONSENSE_TYPE_ACCEL == type) ? - LSM6DS0_OUT_X_L_XL : LSM6DS0_OUT_X_L_G; + return (MOTIONSENSE_TYPE_ACCEL == type) ? LSM6DS0_OUT_X_L_XL : + LSM6DS0_OUT_X_L_G; } /** @@ -118,14 +108,14 @@ static inline int get_xyz_reg(enum motionsensor_type type) * outside the range of values, it returns the closest valid reg value. */ static int get_reg_val(const int eng_val, const int round_up, - const struct accel_param_pair *pairs, const int size) + const struct accel_param_pair *pairs, const int size) { int i; for (i = 0; i < size - 1; i++) { if (eng_val <= pairs[i].val) break; - if (eng_val < pairs[i+1].val) { + if (eng_val < pairs[i + 1].val) { if (round_up) i += 1; break; @@ -138,7 +128,8 @@ static int get_reg_val(const int eng_val, const int round_up, * @return engineering value that matches the given reg val */ static int get_engineering_val(const int reg_val, - const struct accel_param_pair *pairs, const int size) + const struct accel_param_pair *pairs, + const int size) { int i; for (i = 0; i < size; i++) { @@ -166,9 +157,7 @@ static inline int raw_write8(const int port, const uint16_t i2c_addr_flags, return i2c_write8(port, i2c_addr_flags, reg, data); } -static int set_range(struct motion_sensor_t *s, - int range, - int rnd) +static int set_range(struct motion_sensor_t *s, int range, int rnd) { int ret, ctrl_val, range_tbl_size; uint8_t ctrl_reg, reg_val; @@ -185,19 +174,17 @@ static int set_range(struct motion_sensor_t *s, */ mutex_lock(s->mutex); - ret = raw_read8(s->port, s->i2c_spi_addr_flags, - ctrl_reg, &ctrl_val); + ret = raw_read8(s->port, s->i2c_spi_addr_flags, ctrl_reg, &ctrl_val); if (ret != EC_SUCCESS) goto accel_cleanup; ctrl_val = (ctrl_val & ~LSM6DS0_RANGE_MASK) | reg_val; - ret = raw_write8(s->port, s->i2c_spi_addr_flags, - ctrl_reg, ctrl_val); + ret = raw_write8(s->port, s->i2c_spi_addr_flags, ctrl_reg, ctrl_val); /* Now that we have set the range, update the driver's value. */ if (ret == EC_SUCCESS) - s->current_range = get_engineering_val(reg_val, ranges, - range_tbl_size); + s->current_range = + get_engineering_val(reg_val, ranges, range_tbl_size); accel_cleanup: mutex_unlock(s->mutex); @@ -209,9 +196,7 @@ static int get_resolution(const struct motion_sensor_t *s) return LSM6DS0_RESOLUTION; } -static int set_data_rate(const struct motion_sensor_t *s, - int rate, - int rnd) +static int set_data_rate(const struct motion_sensor_t *s, int rate, int rnd) { int ret, val, odr_tbl_size; uint8_t ctrl_reg, reg_val; @@ -237,8 +222,8 @@ static int set_data_rate(const struct motion_sensor_t *s, /* Now that we have set the odr, update the driver's value. */ if (ret == EC_SUCCESS) - data->base.odr = get_engineering_val(reg_val, data_rates, - odr_tbl_size); + data->base.odr = + get_engineering_val(reg_val, data_rates, odr_tbl_size); /* CTRL_REG3_G 12h * [7] low-power mode = 0; @@ -254,8 +239,8 @@ static int set_data_rate(const struct motion_sensor_t *s, goto accel_cleanup; val &= ~(0x3 << 4); /* clear bit [5:4] */ val = (rate > 119000) ? - (val | (1<<7)) /* set high-power mode */ : - (val & ~(1<<7)); /* set low-power mode */ + (val | (1 << 7)) /* set high-power mode */ : + (val & ~(1 << 7)); /* set low-power mode */ ret = raw_write8(s->port, s->i2c_spi_addr_flags, LSM6DS0_CTRL_REG3_G, val); } @@ -272,9 +257,8 @@ static int get_data_rate(const struct motion_sensor_t *s) return data->base.odr; } -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) { /* temperature is ignored */ struct lsm6ds0_data *data = s->drv_data; @@ -284,9 +268,8 @@ static int set_offset(const struct motion_sensor_t *s, return EC_SUCCESS; } -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 lsm6ds0_data *data = s->drv_data; offset[X] = data->offset[X]; @@ -300,8 +283,8 @@ static int is_data_ready(const struct motion_sensor_t *s, int *ready) { int ret, tmp; - ret = raw_read8(s->port, s->i2c_spi_addr_flags, - LSM6DS0_STATUS_REG, &tmp); + ret = raw_read8(s->port, s->i2c_spi_addr_flags, LSM6DS0_STATUS_REG, + &tmp); if (ret != EC_SUCCESS) { CPRINTS("%s type:0x%X RS Error", s->name, s->type); @@ -341,12 +324,10 @@ static int read(const struct motion_sensor_t *s, intv3_t v) xyz_reg = get_xyz_reg(s->type); /* Read 6 bytes starting at xyz_reg */ - ret = i2c_read_block(s->port, s->i2c_spi_addr_flags, - xyz_reg, raw, 6); + ret = i2c_read_block(s->port, s->i2c_spi_addr_flags, xyz_reg, raw, 6); if (ret != EC_SUCCESS) { - CPRINTS("%s type:0x%X RD XYZ Error", - s->name, s->type); + CPRINTS("%s type:0x%X RD XYZ Error", s->name, s->type); return ret; } @@ -366,8 +347,8 @@ static int init(struct motion_sensor_t *s) { int ret = 0, tmp; - ret = raw_read8(s->port, s->i2c_spi_addr_flags, - LSM6DS0_WHO_AM_I_REG, &tmp); + ret = raw_read8(s->port, s->i2c_spi_addr_flags, LSM6DS0_WHO_AM_I_REG, + &tmp); if (ret) return EC_ERROR_UNKNOWN; @@ -387,7 +368,6 @@ static int init(struct motion_sensor_t *s) * SW_RESET is down for accel only! */ if (MOTIONSENSE_TYPE_ACCEL == s->type) { - mutex_lock(s->mutex); ret = raw_read8(s->port, s->i2c_spi_addr_flags, LSM6DS0_CTRL_REG8, &tmp); |