summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--driver/accelgyro_icm426xx.c9
-rw-r--r--driver/accelgyro_icm426xx.h3
2 files changed, 11 insertions, 1 deletions
diff --git a/driver/accelgyro_icm426xx.c b/driver/accelgyro_icm426xx.c
index 47558beeed..e0be3ae02e 100644
--- a/driver/accelgyro_icm426xx.c
+++ b/driver/accelgyro_icm426xx.c
@@ -848,7 +848,14 @@ static int icm426xx_init_config(const struct motion_sensor_t *s)
#endif
}
- return icm_field_update8(s, ICM426XX_REG_INTF_CONFIG0, mask, val);
+ ret = icm_field_update8(s, ICM426XX_REG_INTF_CONFIG0, mask, val);
+ if (ret)
+ return ret;
+
+ /* set accel oscillator to RC clock to avoid bad transition with PLL */
+ return icm_field_update8(s, ICM426XX_REG_INTF_CONFIG1,
+ ICM426XX_ACCEL_LP_CLK_SEL,
+ ICM426XX_ACCEL_LP_CLK_SEL);
}
static int icm426xx_init(struct motion_sensor_t *s)
diff --git a/driver/accelgyro_icm426xx.h b/driver/accelgyro_icm426xx.h
index 0b4e3aa14a..c281e352b1 100644
--- a/driver/accelgyro_icm426xx.h
+++ b/driver/accelgyro_icm426xx.h
@@ -137,6 +137,9 @@ enum icm426xx_slew_rate {
#define ICM426XX_UI_SIFS_CFG_SPI_DIS 0x02
#define ICM426XX_UI_SIFS_CFG_I2C_DIS 0x03
+#define ICM426XX_REG_INTF_CONFIG1 0x004D
+#define ICM426XX_ACCEL_LP_CLK_SEL BIT(3)
+
enum icm426xx_sensor_mode {
ICM426XX_MODE_OFF,
ICM426XX_MODE_STANDBY,