public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Adding an async I2C interface
@ 2005-01-24 15:05 Corey Minyard
  2005-01-28  0:18 ` Mark Studebaker
  0 siblings, 1 reply; 7+ messages in thread
From: Corey Minyard @ 2005-01-24 15:05 UTC (permalink / raw)
  To: Sensors, lkml

I have an IPMI interface driver that sits on top of the I2C code.  I'd
like to get it into the mainstream kernel, but I have a few problems
to solve first before I can do that.  The I2C code is synchronous and
must run from a task context.  The IPMI driver has certain
operations that occur at panic time, including:

   * Storing panic information in IPMI's system event log
   * Extending the watchdog timer so it doesn't go off during panic
     operations (like kernel coredumps).
   * Powering the system off

I can't really put the IPMI SMB interface into the kernel until I can
do those operations.  Also, I understand that some vendors put RTC
chips onto the I2C bus and this must be accessed outside task context,
too.  I would really like add asynchronous interface to the I2C bus
drivers.  I propose:

   * Adding an async send interface to the busses that does a callback
     when the operation is complete.
   * Adding a poll interface to the busses.  The I2C core code could
     call this if a synchronous call is made from task context (much
     like all the current drivers do right now).  For asyncronous
     operation, the I2C core code would call it from a timer
     interrupt.  If the driver supported interrupts, polling from the
     timer interrupt would not be necessary.
   * Add async operations for the user to call, including access to the
     polling code.
   * If the driver didn't support an async send, it would work as it
     does today and the async calls would return ENOSYS.

This way, the bus drivers on I2C could be converted on a
driver-by-driver basis.  The IPMI code could query to see if the
driver supported async operations.  And the RTC code could use it,
too.

Is this ok with the I2C community?  I would do the base work and
convert over a few drivers.

Thanks,

-Corey

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2005-01-28 15:16 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-01-24 15:05 Adding an async I2C interface Corey Minyard
2005-01-28  0:18 ` Mark Studebaker
2005-01-28  4:43   ` Corey Minyard
     [not found]     ` <41F9E183.5A9B1BA2@gte.net>
2005-01-28  7:23       ` Bukie Mabayoje
2005-01-28 14:02       ` Corey Minyard
2005-01-28 15:08       ` [PATCH] Add a non-blocking " Corey Minyard
2005-01-28 15:11       ` [PATCH] Updates for the i801 driver to support the I2C non-blocking interface Corey Minyard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox