iio: proximity: IQS2x3 v11
authorErik Lilliebjerg <elilliebjerg@nvidia.com>
Mon, 13 Jul 2015 20:38:48 +0000 (13:38 -0700)
committerRobert Collins <rcollins@nvidia.com>
Mon, 20 Jul 2015 21:06:34 +0000 (14:06 -0700)
commitc2046cb67caeae94a7abe3ecf383e392baede01b
tree9bcc24b5a3db53ae142e2f895d68b446c80a0246
parentf0b2261c9defafbe9967b9135767322ce65f041b
iio: proximity: IQS2x3 v11

- Fix I2C errors.  The IQS device requires a delay after an I2C STOP has been
  issued to the device and another transaction started.  The IQS device will
  hold the RDY line low ~94-120us *after* the STOP is issued causing a pending
  I2C transaction to think the comm window is open.  Transactions issued during
  this time may cause the device to hold the I2C clock line low.
- Fix runaway interrupts.  When the interrupt line is pulled low to force a
  comm window, the interrupt is first disabled.  However, when the interrupt
  is enabled again, that action causes another interrupt.  Setting the
  interrupt to level triggering prevents the pending interrupt.
- Add slider event/stream mode.  Involved putting the intelligence of whether
  to poll or force communication window for I2C transactions with the caller.
- Add ability to move the SAR GPIO value to follow any IQS device's output
  (proximity or touch).  In other words, SAR GPIO can assert based on either
  proximity or touch assertion depending on the DT setting.
- Add device tree suspend byte stream.
- Add error messages to byte stream parsing.
- Add ATI busy testing before reinitialization.
- Add ATI redo if ATI error is detected.
- Add power cycling for error recovery.
- Add I2C STOP delay monitoring of RDY line before interrupt enable.
- Add interrupt handler debug spew message to discern the communication mode
  used (poll vs forced).
- Add debug functions for the SAR GPIO.  In other words, the SAR GPIO can be
  used as a signal for debugging certain issues and is configurable in the DT.
- Separate driver specific nvs messages to avoid buffer overflow.
- Add documentation that goes with this driver and explains all this.

Change-Id: If8b9403361684897226f7a55f21e20c655690d64
Signed-off-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-on: http://git-master/r/770388
(cherry picked from commit 43c5963508b33488a3895bb2803c3f01cfb5be6b)
Reviewed-on: http://git-master/r/772374
Reviewed-by: Robert Collins <rcollins@nvidia.com>
Tested-by: Robert Collins <rcollins@nvidia.com>
Documentation/devicetree/bindings/iio/iqs253-ps.txt
drivers/iio/proximity/nvs_iqs2x3.c