diff options
| author | Evan Wilson <evan@oliodevices.com> | 2016-02-08 21:40:35 -0800 |
|---|---|---|
| committer | Evan Wilson <evan@oliodevices.com> | 2016-02-08 21:40:35 -0800 |
| commit | ce35faaf92940590efd5af49d88de12390c15628 (patch) | |
| tree | 3aa85ec7b3d712a5bfc97a9d010e742c141d9690 | |
| parent | 3e132f58664314027b4dae9650d3bee06b06519d (diff) | |
| download | olio-linux-3.10-75.tar.xz olio-linux-3.10-75.zip | |
Moving the md1 init from probe to enable, because it was causing crashes during a cold Linux initramfs boot75
Change-Id: I484139800fc3e019cd7bc22d00812bd99e63b971
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c index 96cd843b55f..f624e309b26 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c @@ -1076,6 +1076,7 @@ static int st_lsm6ds3_enable_pedometer(struct lsm6ds3_sensor_data *sdata, static int st_lsm6ds3_enable_sensors(struct lsm6ds3_sensor_data *sdata) { + u8 regval; int err, i; switch (sdata->sindex) { @@ -1091,6 +1092,13 @@ static int st_lsm6ds3_enable_sensors(struct lsm6ds3_sensor_data *sdata) if (sdata->sindex == ST_INDIO_DEV_ACCEL) { sdata->cdata->accel_samples_to_discard = ST_LSM6DS3_ACCEL_STD; + regval = 0x44; // MD1 (6D and Tap on INT1) + err = sdata->cdata->tf->write(sdata->cdata, + ST_LSM6DS3_MD1_ADDR, + 1, ®val, false); + if(err < 0) { + return err; + } } sdata->cdata->gyro_samples_to_discard = ST_LSM6DS3_GYRO_STD; @@ -1540,10 +1548,6 @@ static int st_lsm6ds3_init_sensor(struct lsm6ds3_data *cdata) #define ST_LSM6DS3_CTRL8_LPF_ON_ACCEL 0x80 #define ST_LSM6DS3_CTRL4_ADDR 0x13 #define ST_LSM6DS3_CTRL4_STOP_ON_FTH_MASK 0x1 - regval = 0x44; // MD1 (6D and Tap on INT1) - err = sdata->cdata->tf->write(sdata->cdata, - ST_LSM6DS3_MD1_ADDR, - 1, ®val, false); regval = 0x48;//tap threshold err = sdata->cdata->tf->write(sdata->cdata, @@ -2166,7 +2170,7 @@ static int check_wai(struct lsm6ds3_data *cdata) { get_monotonic_boottime(&ts); current_time = ts.tv_sec; - dev_err(cdata->dev, "Last timestamp delta: %d \n", current_time-cdata->irq_timestamp); + //dev_err(cdata->dev, "Last timestamp delta: %d \n", current_time-cdata->irq_timestamp); if(current_time-cdata->irq_timestamp > 15/*minutes*/*60) { return st_lsm6ds3_reset(cdata, true); } |