diff options
| author | Evan Wilson <evan@oliodevices.com> | 2016-04-20 18:54:36 -0700 |
|---|---|---|
| committer | Evan Wilson <evan@oliodevices.com> | 2016-05-03 19:48:47 -0700 |
| commit | 0cd51e38b50ac0d9265e187d936b4cd767abbe8b (patch) | |
| tree | d008bb2f95fe757a7037e04ff142d0e1e6bcfa44 | |
| parent | 25745347e39abeedea951acd20f4b2f33897c9c0 (diff) | |
| download | olio-linux-3.10-0cd51e38b50ac0d9265e187d936b4cd767abbe8b.tar.xz olio-linux-3.10-0cd51e38b50ac0d9265e187d936b4cd767abbe8b.zip | |
Cleaning up accel code:
* Decreasing temp wake locks
* Removing lost tap assumption (because we're now setting double_tap in the md1 we don't lose lost taps)
* Removing excessive log messages
* sixd_ths now uses the full range (0-4)
Change-Id: I001c208cc01dce0780909f2dcb4cdfca2e7199db
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c | 6 | ||||
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c | 21 |
2 files changed, 5 insertions, 22 deletions
diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c index 766ebb42da0..4ab6ba5ac18 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c @@ -1095,7 +1095,7 @@ static int st_lsm6ds3_set_sixd_ths(struct lsm6ds3_data *cdata, int sixd_ths) { int err = 0; dev_info(cdata->dev, "Setting 6d ths: %d", sixd_ths); - if(sixd_ths < 0 || sixd_ths > 3) { + if(sixd_ths < 0 || sixd_ths > 4) { return -EINVAL; } else if(sixd_ths == 0) { err = st_lsm6ds3_write_data_with_mask(cdata, ST_LSM6DS3_MD1_ADDR, ST_LSM6DS3_6D_MD1_INT_MASK, 0, true); @@ -1104,7 +1104,7 @@ static int st_lsm6ds3_set_sixd_ths(struct lsm6ds3_data *cdata, int sixd_ths) { if(err < 0) { return -EIO; } - err = st_lsm6ds3_write_data_with_mask(cdata, ST_LSM6DS3_TAP_THS_6D_ADDR, ST_LSM6DS3_SIXD_THS_MASK, sixd_ths, true); + err = st_lsm6ds3_write_data_with_mask(cdata, ST_LSM6DS3_TAP_THS_6D_ADDR, ST_LSM6DS3_SIXD_THS_MASK, sixd_ths-1, true); } if(err < 0) { @@ -2432,7 +2432,7 @@ int st_lsm6ds3_common_probe(struct lsm6ds3_data *cdata, int irq) // default values cdata->sixd_mask = 0x21; - cdata->sixd_ths = 0x2; + cdata->sixd_ths = 0x1; cdata->tap_ths = 0x8; cdata->indio_dev[ST_INDIO_DEV_ACCEL]->name = diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c index a97a5da517c..15eff9445f9 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c @@ -146,13 +146,11 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) u8 src_value = 0x00, src_fifo = 0x00; u8 d6d_event = 0; u8 tap_event = 0; - int wake_irq; int ignore_event = 0; cdata = container_of((struct work_struct *)data_work, struct lsm6ds3_data, data_work); - wake_irq = last_wakeup_reason_test(cdata->irq); mutex_lock(&cdata->fifo_lock); cdata->tf->read(cdata, ST_LSM6DS3_6D_SRC_ADDR, 1, &d6d_src_reg, true); cdata->tf->read(cdata, ST_LSM6DS3_TAP_SRC_ADDR, 1, &tap_src_reg, true); @@ -160,9 +158,6 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) cdata->tf->read(cdata, ST_LSM6DS3_FIFO_DATA_AVL_ADDR, 1, &src_fifo, true); - dev_dbg(cdata->dev, "ST irq start :src_value, 6d, tap:%x %x %x", - src_value, d6d_src_reg, tap_src_reg); - if(d6d_src_reg & ST_LSM6DS3_6D_SRC_DETECTED_MASK){ #ifdef WAKE_STATS_DEBUG_INFO update_orient_stats(d6d_src_reg, cdata->timestamp); @@ -191,21 +186,9 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) dev_info(cdata->dev, "Ignoring tap"); } } - - if(cdata->first_irq_from_resume && wake_irq){ -#ifdef WAKE_STATS_DEBUG_INFO - wakeup_irq_count++; -#endif - if(!d6d_event && !tap_event && !ignore_event){ - dev_info(cdata->dev, "No event from first resume, assuming lost TAP"); - tap_event = 1; - cdata->last_wakeup_source |= LSM6DS3_WAKEUP_TAP; - dev_info(cdata->dev, "Valid Tap from sleep"); - } - } if(!ignore_event && (tap_event || d6d_event) && cdata->first_irq_from_resume){ - wake_lock_timeout(&cdata->tap_wlock,msecs_to_jiffies(1000)); + wake_lock_timeout(&cdata->tap_wlock,msecs_to_jiffies(750)); #ifdef WAKE_STATS_DEBUG_INFO wakeup_irq_stayawake_count++; #endif @@ -214,7 +197,7 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) } } else if(d6d_event && !ignore_event) { //negative roll - wake_lock_timeout(&cdata->tap_wlock,msecs_to_jiffies(600)); + wake_lock_timeout(&cdata->tap_wlock,msecs_to_jiffies(400)); #ifdef WAKE_STATS_DEBUG_INFO wakeup_irq_keepawake_count++; #endif |