Subject: Re: SMBus implementation
To: Jason Thorpe <thorpej@shagadelic.org>
From: Jared D. McNeill <jmcneill@invisible.ca>
List: tech-kern
Date: 10/27/2005 11:28:29
On Thu, 27 Oct 2005, Jason Thorpe wrote:
> Neither.  smbus operations are really just specific i2c sequences, so there 
> really doesn't need to be an "smbus" instance at all (since every iic would 
> logically have an smbus child -- seems rather pointless).
>
> Although...
>
> So, iic uses indirect config.  But, I believe that smbus can actually use 
> direct config (isn't there some handshaking method to determine which devices 
> are on an SMBus?)  If that is the case, then maybe it makes sense to attach 
> an smbus instance to an iic instance (iff specified in the kernel config 
> file).  In that case, then smbus devices would attach to the smbus.  The 
> iic_smbus_*_byte() helper functions could move into the smbus module, and 
> just become smbus_*_byte().

Yeah, you can emumerate devices over SMBus.

> As for the controller interface, just glue an smbus controller in as a 
> regular i2c controller, and error out with ENOTSUP if the arguments to the 
> "exec" method don't match SMBus's constraints.

So for SMBus host implementations, I only want to implement ic_exec, 
right? I can't think of another way to 'read word' :)

>>> There should not be /dev/smb* device nodes, IMO.
>> 
>> Agreed, but without support for attaching other devices (where the code
>> is today), not very useful :) It's at least helpful for debugging.
>
> Let's get the configuration and glue worked out first.  Need to figure out 
> how it would interact with a hypothetical /dev/i2c*.
>
> /dev/smb* is the wrong name anyway.  If we were to have such devices, they 
> should be /dev/smbus*.

Yeah, /dev/smbus* is correct; I only chose /dev/smb* because that's what 
FreeBSD (and their tools) use. Easily changed.

Thanks,
Jared