I would also like to point out that SMBus 2.0 Section 5.5.1 documents Quick Command, which is composed as:
S | Slave Address | Rd/Wr | A | P which has no data. If this were performed with i2c_transaction_tx, there is no way to know with the current API if the command was error free by using the return value. If the i2c API could return a negative integer, -1 could be used to indicate errors like NACK, arbitration loss, timeout, etc. Mike On Jan 21, 2013, at 8:08 AM, Michael Jones <mjo...@linear.com> wrote: > While working with the I2C interface using Kinetis to write a SMBus/PMBus > layer over it, I could not implement a probe. > > PMBus developers typically probe the bus looking for slaves by sending an > address and using ACK/NACK to determine presence. > > The only way one can probe with the current I2C API is to send at least one > data byte, so that the return is an indicator of success or failure. However, > this is a dangerous way to probe, because it might have side effects. > > Sometimes people probe with Addr+Read, but most use Addr+Write, because that > avoids a potential ARA response. > > I am looking for ideas how best to deal with this problem. Potential > solutions: > > 1) Use a target specific API > 2) Add to existing API, like i2c_slave_present(... > 3) Add new API/Package > > In my opinion, choice 2 would be the best because it is target independent, > and least confusing. > > The practical impact is people developing SMBus/PMBus tend to use Cortex M. > There are a small number of targets (5) in the dev tree. So perhaps it is > still possible to add to the I2C API? > > Thoughts? > > Mike > >