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); |