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-ce35faaf92940590efd5af49d88de12390c15628.tar.xz olio-linux-3.10-ce35faaf92940590efd5af49d88de12390c15628.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);  	} |