summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Wilson <evan@oliodevices.com>2016-02-08 21:40:35 -0800
committerEvan Wilson <evan@oliodevices.com>2016-04-14 15:41:48 -0700
commitcc189b38c8b650903a9840712f7d4aeb6569ae58 (patch)
tree23c570243a498635e3c400191ebaf3ca508beb97
parente2b260a10ab1b7e4fad99e3f93b1063546fe6812 (diff)
downloadolio-linux-3.10-staging-1.3.tar.xz
olio-linux-3.10-staging-1.3.zip
Moving the md1 init from probe to enable, because it was causing crashes during a cold Linux initramfs bootstaging-1.3
Change-Id: I484139800fc3e019cd7bc22d00812bd99e63b971
-rw-r--r--drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c
index 12dc8cbf1c7..ff8ff53d0e6 100644
--- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c
+++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c
@@ -1082,6 +1082,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) {
@@ -1097,6 +1098,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, &regval, false);
+ if(err < 0) {
+ return err;
+ }
}
sdata->cdata->gyro_samples_to_discard = ST_LSM6DS3_GYRO_STD;
@@ -1546,10 +1554,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, &regval, false);
regval = 0x48;//tap threshold
err = sdata->cdata->tf->write(sdata->cdata,