some interesting twist...

Mark Studebaker mds4 at
Tue Oct 12 02:44:49 CEST 2004

#1 unimplemented
	a) if the GEM424 is waiting a while, then is a master on the bus, and needs the ICH5 to be a slave,
	   then you need "master-as-slave" functionality, which is unimplemented in the i2c layer or in any driver
	b) perhaps the GEM424 is using SMBus 2.0 "block write/block read process call" (a block write followed by
	   a block read in one transacction)? If so, it is implemented in the i2c layer but is not supported by
	   any driver (or any chip AFAIK).

#2 not from our package
	you may wish to use the aardvark development tool from but that won't help you
	in your real system.

linda wang wrote:
> Hi,
> I was wondering if anyone ca help w.r.t. how to 
> get some 
> i2c chips to do what I want them to do on a 
> motherboard.  It isn't easy, because I
> spend about a month playing with various different
> drivers: i801.c, lm93, and my own (gem424.c) to 
> get it to work; but so far no total success. sigh.
> I am hoping with your collective expert knowlege base,
> someone will have an idea how to achieve what I am
> about to describe.
> To make long story short, GEM424 is a qlogic chip
> that controlls backplan of a chasis.  It only talks
> SAFTE through i2c.  Normally it suppose connected
> directly to a SATA2 controller, and through
> SCSI/sg, end user can communicate to this chip.
> However, the SATA2 controller that it needs to
> communicated to isn't ready yet. :( source of 
> the engineering chanllenge).
> So, the trick is to get any chip on the motherboard
> to communicate to gem424, and read back what gem424
> sends back.  These are what is available on
> the i2c bus:
> pc87427    lm93      |
>     |        |       |
> ----------------------------- gem424
>         |         |  |
>        ICH5      IPMI|
>                      |
> So far, I was able to use ICH5[MA 0x88/SA 0x89] 
> (since it has a master block write interface) to 
> write out a fake SAFTE command to GEM424 [SA 0x6E].
> GEM424 will respond to the command, and in turn,
> responds by asserting itself as the Master and
> respond back a block response to the specified
> slave address. 
> However, ICH5 only has a slave interface that
> read in byte-mode.  Is there a way for it
> to read in byte by byte of what GEM424 writes back?
> (question #1)
> Since I didn't know how to make ICH5 read in 
> block mode,
> I then found another chip on the motherboard, LM93,
> which allow block read/write.  I then program
> ICH5 to send out the command with LM93's slave
> address, and have it respond back to LM93.
> However, LM93's blocks are pre-programmed to 
> read sense temp, voltage on the chip. Therefore,
> any attemps to write to bytes beyond normal
> address space are acknowledged by the LM93 but
> the data are ignored.
> With the i2c-monitor/analyser, I was able to see
> GEM424 responds to the command send by ICH5 to
> LM93.  Is there a device driver/program that i can 
> use/modify to snoop the bus and capture the responds?
> (question #2)
> It is all I have so far, please please don't make
> fun of me if what I am doing doesn't make any sense.
> I am hoping someone can help me... If not, please
> also let me know.
> many many thanks in advance,
> -linda

More information about the lm-sensors mailing list