summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Wilson <evan@oliodevices.com>2016-02-08 21:40:35 -0800
committerEvan Wilson <evan@oliodevices.com>2016-02-08 21:40:35 -0800
commitce35faaf92940590efd5af49d88de12390c15628 (patch)
tree3aa85ec7b3d712a5bfc97a9d010e742c141d9690
parent3e132f58664314027b4dae9650d3bee06b06519d (diff)
downloadolio-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.c14
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, &regval, 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, &regval, 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);
}