|
I2C (not SMBus) SW interface for M10k?
Can anyone tell me if there is a true I2C host adapter on board the M10k and, more importantly, point me to some reference information and/or code that describes it?
As part of Seth's AM/FM RDS radio project, I've been working on the basic I2C interface driver. Some of you are aware, we were planning to hook the boards up to the M10k I2C header for development/testing, before we waste any time developing a USB to I2C bridge.
Based on my weekend of research, the only public control interface for the M10K I2C port implements the SMBus protocols only. Basically all the code or discussion threads I've found point back to the Linux i2c-viapro.c driver. That driver and the underlying control interface is essentially a clone of the Intel PIIX4 SMBus. I have a port of the Linux driver in Windows running in user space. It communicates with the underlying hardware through the Numega portio.sys sample driver from the MS DDK. This code works fine and correctly issues SMBus commands on the bus without any problems.
SMBus is unfortunately only a subset of the full I2C bus. While it's possible to implement SMBus on top of the general I2C interface, the reverse is not possible. In the case of our tuner and signal processor ICs, the commands required cannot be contructed from the SMBus protocol primitives. We need native I2C (Start, Stop, Ack, Nack, Set/Clear Data, Set/Clear Clock), or at least something lower level than what SMBus offers.
|