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 <fenrir.lin@rock-chips.com>
This commit is contained in:
LiuDiMing Lin
2024-12-04 14:41:31 +08:00
committed by Tao Huang
parent 5c3cf57fce
commit 08f6731c5a
2 changed files with 55 additions and 0 deletions

View File

@@ -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

View File

@@ -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;