From 08f6731c5aa48f676c130982a0df656059de8a54 Mon Sep 17 00:00:00 2001 From: LiuDiMing Lin Date: Wed, 4 Dec 2024 14:41:31 +0800 Subject: [PATCH] iio: imu: inv_icm42670: use low pass filter bypassed set gyro and accel UI low pass filter bandwidth: Low pass filter bypassed Change-Id: Ia36c04380f630799f27938006b06432d49c83c62 Signed-off-by: LiuDiMing Lin --- drivers/iio/imu/inv_icm42670/inv_icm42670.h | 39 +++++++++++++++++++ .../iio/imu/inv_icm42670/inv_icm42670_core.c | 16 ++++++++ 2 files changed, 55 insertions(+) diff --git a/drivers/iio/imu/inv_icm42670/inv_icm42670.h b/drivers/iio/imu/inv_icm42670/inv_icm42670.h index 20211fb02a08..6deb78ac30e7 100644 --- a/drivers/iio/imu/inv_icm42670/inv_icm42670.h +++ b/drivers/iio/imu/inv_icm42670/inv_icm42670.h @@ -166,6 +166,28 @@ #define BIT_ACCEL_UI_FS_SEL_MASK GENMASK(6, 5) #define BIT_ACCEL_ODR_MASK GENMASK(3, 0) +/* + * GYRO_CONFIG1 + * Register Name : GYRO_CONFIG1 + */ + +/* + * gyro_ui_filt_bw + * Selects GYRO UI low pass filter bandwidth + * + * 000: Low pass filter bypassed + * 001: 180 Hz + * 010: 121 Hz + * 011: 73 Hz + * 100: 53 Hz + * 101: 34 Hz + * 110: 25 Hz + * 111: 16 Hz + * + * This field can be changed on-the-fly even if gyro sensor is on + */ +#define GYRO_CONFIG1_GYRO_UI_FILT_BW_MASK 0x07 + /* Bank0 REG_GYRO_CONFIG1 */ #define BIT_GYR_UI_FLT_BW_BYPASS 0x00 #define BIT_GYR_UI_FLT_BW_180HZ 0x01 @@ -182,6 +204,23 @@ #define BIT_GYR_UI_AVG_IND_32X 0x40 #define BIT_GYR_UI_AVG_IND_64X 0x50 +/* + * accel_ui_filt_bw + * Selects ACCEL UI low pass filter bandwidth + * + * 000: Low pass filter bypassed + * 001: 180 Hz + * 010: 121 Hz + * 011: 73 Hz + * 100: 53 Hz + * 101: 34 Hz + * 110: 25 Hz + * 111: 16 Hz + * + * This field can be changed on-the-fly even if accel sensor is on + */ +#define ACCEL_CONFIG1_ACCEL_UI_FILT_BW_MASK 0x07 + /* Bank0 REG_ACCEL_CONFIG1 */ #define BIT_ACC_FILT_BW_IND_BYPASS 0x00 #define BIT_ACC_FILT_BW_IND_180HZ 0x01 diff --git a/drivers/iio/imu/inv_icm42670/inv_icm42670_core.c b/drivers/iio/imu/inv_icm42670/inv_icm42670_core.c index cd8623768bbf..0f7de499958c 100644 --- a/drivers/iio/imu/inv_icm42670/inv_icm42670_core.c +++ b/drivers/iio/imu/inv_icm42670/inv_icm42670_core.c @@ -988,6 +988,22 @@ static int icm42670_chip_init(struct icm42670_data *data, icm42670_bus_setup bus return ret; } + ret = regmap_update_bits(data->regmap, REG_GYRO_CONFIG1, + GYRO_CONFIG1_GYRO_UI_FILT_BW_MASK, + BIT_GYR_UI_FLT_BW_BYPASS); + if (ret < 0) { + dev_err(dev, "icm42670 set gyro ln bw failed!\r\n"); + return ret; + } + + ret = regmap_update_bits(data->regmap, REG_ACCEL_CONFIG1, + ACCEL_CONFIG1_ACCEL_UI_FILT_BW_MASK, + BIT_ACC_FILT_BW_IND_BYPASS); + if (ret < 0) { + dev_err(dev, "icm42670 set accel ln bw failed!\r\n"); + return ret; + } + ret = regmap_write(data->regmap, REG_INT_CONFIG_REG, data->irq_mask); if (ret < 0) return ret;