@@ -611,6 +611,7 @@ static const struct iio_info fxos8700_info = {
static int fxos8700_chip_init(struct fxos8700_data *data, bool use_spi)
{
int ret;
+ int reg;
unsigned int val;
struct device *dev = regmap_get_device(data->regmap);
@@ -663,8 +664,11 @@ static int fxos8700_chip_init(struct fxos8700_data *data, bool use_spi)
return ret;
/* Max ODR (800Hz individual or 400Hz hybrid), active mode */
- return regmap_write(data->regmap, FXOS8700_CTRL_REG1,
- FXOS8700_CTRL_ODR_MAX | FXOS8700_ACTIVE);
+ ret = regmap_read(data->regmap, FXOS8700_CTRL_REG1, ®);
+ if (ret)
+ return ret;
+ reg = reg | FIELD_PREP(FXOS8700_CTRL_ODR_MSK, FXOS8700_CTRL_ODR_MAX) | FXOS8700_ACTIVE;
+ return regmap_write(data->regmap, FXOS8700_CTRL_REG1, reg);
}
static void fxos8700_chip_uninit(void *data)