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
> 
> 

Reply via email to