From 0cd51e38b50ac0d9265e187d936b4cd767abbe8b Mon Sep 17 00:00:00 2001 From: Evan Wilson Date: Wed, 20 Apr 2016 18:54:36 -0700 Subject: 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 --- drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_core.c | 6 +++--- 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 -- cgit v1.2.3-70-g09d2