git: ig4 - Use interrupt to wait for receive data

Matthew Dillon dillon at
Fri Feb 7 19:21:22 PST 2014

commit aee4132d71137e263b14434d451f90b08c591028
Author: Matthew Dillon <dillon at>
Date:   Fri Feb 7 19:13:53 2014 -0800

    ig4 - Use interrupt to wait for receive data
    * The transmit FIFO is typically big enough to hold the full command
      so we do not usually hit the DELAY(25) in the poll loop.  However,
      this is not the case when receiving data.
    * Generate an interrupt on stop-bit detection and when a character is
      received.  Set the receive FIFO threshold to 1.  Our polling loop works
      the same way but this allows us to use lksleep() instead of DELAY(25)
      when waiting for receive data.
    * Reduces cpu overhead very significantly.  The cyapa (trackpad) driver
      polling at 100hz previously ate 10% of the cpu and now only uses 2%
      or less when fully active.

Summary of changes:
 sys/bus/smbus/ichiic/ig4_iic.c | 34 +++++++++++++++++++++++++++-------
 sys/bus/smbus/ichiic/ig4_reg.h |  2 +-
 2 files changed, 28 insertions(+), 8 deletions(-)

DragonFly BSD source repository

More information about the Commits mailing list