diff options
| author | mattis fjallstrom <mattis@acm.org> | 2015-11-17 17:27:16 -0800 |
|---|---|---|
| committer | Evan Wilson <evan@oliodevices.com> | 2015-12-08 20:53:36 -0800 |
| commit | 1b81aed96ffcb3bb08dfea2d37a120542ee5db9c (patch) | |
| tree | 396e6ee441788b00207b6075033e0247ec334774 | |
| parent | 844a56c2f21dc07f86bbacf5943b0129c7302a5b (diff) | |
| download | olio-linux-3.10-1b81aed96ffcb3bb08dfea2d37a120542ee5db9c.tar.xz olio-linux-3.10-1b81aed96ffcb3bb08dfea2d37a120542ee5db9c.zip | |
Adding special handling for 6d-events, so that we can recognize it higher up the software stack.
Change-Id: I00a3ebe3bbcf4cfeb8ff89e75c990d90d8e1acc9
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3.h | 1 | ||||
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_buffer.c | 14 | ||||
| -rw-r--r-- | drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c | 5 |
3 files changed, 18 insertions, 2 deletions
diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3.h b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3.h index edc5de95b1d..afd696effc2 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3.h +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3.h @@ -237,6 +237,7 @@ void st_lsm6ds3_deallocate_rings(struct lsm6ds3_data *cdata); int st_lsm6ds3_trig_set_state(struct iio_trigger *trig, bool state); void st_lsm6ds3_read_fifo(struct lsm6ds3_data *cdata, bool check_fifo_len, bool update_discard); void st_lsm6ds3_push_tap_to_fifo(struct lsm6ds3_data *cdata); +void st_lsm6ds3_push_d6d_to_fifo(struct lsm6ds3_data *cdata); int st_lsm6ds3_set_fifo_decimators_and_threshold(struct lsm6ds3_data *cdata); #define ST_LSM6DS3_TRIGGER_SET_STATE (&st_lsm6ds3_trig_set_state) #else /* CONFIG_IIO_BUFFER */ diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_buffer.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_buffer.c index 75d3e3aaca2..eb080d4b8f9 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_buffer.c +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_buffer.c @@ -148,7 +148,7 @@ static void st_lsm6ds3_parse_fifo_data(struct lsm6ds3_data *cdata, u16 read_len) void st_lsm6ds3_push_tap_to_fifo(struct lsm6ds3_data *cdata) { - int i; + /* int i; */ u8 fake_tap[6] = {0}; dev_info(cdata->dev, "Sending Fake tap through accel data @:%llu", cdata->accel_timestamp-1); st_lsm6ds3_push_data_with_timestamp( @@ -157,6 +157,18 @@ void st_lsm6ds3_push_tap_to_fifo(struct lsm6ds3_data *cdata) cdata->accel_timestamp -1); } + +void st_lsm6ds3_push_d6d_to_fifo(struct lsm6ds3_data *cdata) +{ + u8 d6d_signature[6] = {1}; + dev_info(cdata->dev, "Sending 6d event through accel data @:%llu", cdata->accel_timestamp-1); + st_lsm6ds3_push_data_with_timestamp( + cdata, ST_INDIO_DEV_ACCEL, + d6d_signature, + cdata->accel_timestamp -1); +} + + void st_lsm6ds3_read_fifo(struct lsm6ds3_data *cdata, bool check_fifo_len, bool update_discard) { int err; diff --git a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c index f8e768dab38..8aab9911596 100644 --- a/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c +++ b/drivers/iio/imu/st_lsm6ds3/st_lsm6ds3_trigger.c @@ -205,6 +205,9 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) #ifdef WAKE_STATS_DEBUG_INFO wakeup_irq_stayawake_count++; #endif + if (d6d_event) { + st_lsm6ds3_push_d6d_to_fifo(cdata); + } } else if(d6d_event && !ignore_event){//negative roll wake_lock_timeout(&cdata->tap_wlock,msecs_to_jiffies(200)); @@ -212,7 +215,7 @@ static void st_lsm6ds3_irq_management(struct work_struct *data_work) wakeup_irq_keepawake_count++; #endif } -//significant motion event processing + //significant motion event processing if(tap_event){ dev_info(cdata->dev, "Sending sig mot event(tap); ready:%i",cdata->sign_motion_event_ready); st_lsm6ds3_push_tap_to_fifo(cdata); |