diff options
-rw-r--r-- | driver/accelgyro_icm426xx.c | 9 | ||||
-rw-r--r-- | driver/accelgyro_icm426xx.h | 3 |
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, |