iio: proximity: IQS2x3 v12
authorErik Lilliebjerg <elilliebjerg@nvidia.com>
Mon, 27 Jul 2015 16:57:26 +0000 (09:57 -0700)
committerRobert Collins <rcollins@nvidia.com>
Wed, 5 Aug 2015 17:50:47 +0000 (10:50 -0700)
commita19ea31897d9d806770686cda74086d2f6958134
treefb82626521d96d3e791d724cdce8961cc1cf755f
parenta9b356bc41cd93a3223f1d5570516c4d5294c45a
iio: proximity: IQS2x3 v12

- 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 deferred resume mechanism.  Due to the device's horrendous communication
  protocol that causes unacceptable delays during suspend/resume, the resume
  action, which is reinitialization from the suspend programming, is deferred
  to the communication execution in normal operation, allowing resume with
  minimum delay.
- 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 DT optional irq_set_irq_wake.
- 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.

Bug 200120886
Bug 200124614

Change-Id: I4787f287073c148ccc607cba51c882a310f8e643
Signed-off-by: Erik Lilliebjerg <elilliebjerg@nvidia.com>
Reviewed-on: http://git-master/r/775156
(cherry picked from commit 990c488cd423a0e30c1075ca13c03368fb0a3f10)
Reviewed-on: http://git-master/r/776364
Reviewed-by: Automatic_Commit_Validation_User
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