Thanks Jean,

In fact I'm using the i2c-ocore (opencore) controller, and the «SMBus
Quick Command» block the bus with the Linux standard driver
(drivers/i2c/busses/i2c-ocores.c):
http://www.opencores.org/forums.cgi/cores/2008/10/003391

Then to solve this problem I'm re-writing the driver to support each
SMBus commands separately, following the linux documentation.
If writing '1' on quick command block the bus, I will skip this test.

FabM


On Fri, Jan 9, 2009 at 3:27 PM, Jean Delvare <[email protected]> wrote:
> Salut Fabien,
>
> On Thu, 8 Jan 2009 10:01:01 +0100, Fabien Marteau wrote:
>> I'm writing a driver for i2c controller. To do it, I'm following the
>> SMBus protocol description in linux/Documentation/i2c/SMBus-
>> protocol. This documentation say that we can write a single bit with
>> «SMBus Quick Command». This command is used in i2cdetect program to
>> find slave on the bus.
>>
>> I used this command to write bit 0 and that work whell with my slaves,
>> but if I try to write bit 1 the slaves addressed are blocking the bus
>> (maintain SDA to 0). I tried it with two slaves components :
>> LIS3LV02DL (accelerometer) and DS28CZ04 (EEPROM).
>>
>> Is it a known problem ?
>
> The SMBus specification describes a number of standardized
> transactions. Each chip on the bus can support each given transaction
> type or not. In practice, each slave chip only supports a subset of the
> SMBus specification. I can't remember working on a chip saying it was
> supporting the SMBus quick command. The Linux i2c subsystem abuses this
> transaction type for device detection purposes, because it is known to
> give good results in practice, but ideally it shouldn't do that.
>
> There have been some devices known to lock up the SMBus on Quick
> command with data bit = 1 (as you are experiencing.) In most cases
> these were write-only devices, which didn't expect a transaction
> starting like a read (the SMBus specification says that a Quick command
> with data bit = 1 is writing 1 bit to the slave, but the I2C
> specification says this is a _read_ transaction of length 0.)
>
> This SMBus Quick command thing keeps causing trouble and confusing
> people. Not much we can do though. If your slaves don't like the quick
> command, just don't send that command to them.
>
>> [Erreur de décodage BASE64]
>
> Gni?
>
> --
> Jean Delvare
>

Reply via email to