iio: proximity: IRQ driven SAR
authorErik Lilliebjerg <elilliebjerg@nvidia.com>
Mon, 20 Apr 2015 18:06:07 +0000 (11:06 -0700)
committermobile promotions <svcmobile_promotions@nvidia.com>
Fri, 15 May 2015 21:44:57 +0000 (14:44 -0700)
commit3c05f99061eb76d8461480009513e9d21a3c3296
treed4734ea877cd34806171d97cc120e28adde0ef77
parent2fa48d598b18813fd13ff95c6673451a89aacab4
iio: proximity: IRQ driven SAR

- Add interrupt driven support.
- Fix I2C timeout.
- Add reseed.
- Add watchdog timer.
- Add streaming throttling.

By putting the IQS263 device in event mode and reseeding when necessary,
the device can be interrupt driven on proximity events without any polling.
When a proximity event occurs, the device is put in streaming mode.  Only
a single I2C read transaction is done (writes are still stacked) on each
streamed interrupt thereby reducing forced I2C transactions that cause I2C
timeouts.  Once all the reads are done, the device is put back in event
mode.  A watchdog thread forces an interrupt at a device tree programmable
rate.
Just streaming mode is supported as well.  Intead of normally going into
event mode, the interrupt is disabled for a device tree programmable
period, which upon expiration, reenables the interrupt.  This allows
throttling of the streaming interrupt.

Bug 1633231

Change-Id: If4262d7687eb06a603f6fad2980c3133aad1818f
Signed-off-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-on: http://git-master/r/739131
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Tested-by: Robert Collins <rcollins@nvidia.com>
drivers/iio/proximity/nvs_iqs2x3.c