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 >
