Hi Frank, On Sun, 28 Oct 2012 15:32:16 +0200, Frank Schäfer wrote: > Am 28.10.2012 14:03, schrieb Jean Delvare: > > On Sat, 27 Oct 2012 18:41:19 +0300, Frank Schäfer wrote: > >> What are the correct functionality flags to use in this case ? > >> I2C_FUNC_I2C | I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_WORD_DATA ? > > If your controller is limited then I2C_FUNC_I2C is most certainly > > wrong. From what you described, I'd say: > > > > I2C_FUNC_SMBUS_READ_BYTE | I2C_FUNC_SMBUS_WRITE_BYTE_DATA > > > > This doesn't match what Laurent said about SCCB 4 months ago though: > > > > "The read transaction transmits 2 2-byte messages (addr/w, reg, > > followed by addr/r, data)." > > > > You can take a look at Documentation/i2c/smbus-protocol to match > > transactions to function names (and from there to I2C_FUNC flags.) > > Ok, I've been digging deeper into this but still don't understand the > meaning of the functionality flags I2C_FUNC_*** with regards to the > capabilites of an master_xfer implemetation in struct i2c_algortihm... > Are they supposed to describe the smbus operations/methods that can be > successfully emulated by the smbus layer using i2c_xfer or do they > describe the actual capabilities of function master_xfer / the i2c adapter ? Most I2C_FUNC_* flags actual refer to the smbus_xfer method. A driver implementing master_xfer is typically fully I2C capable and can thus run almost any I2C or SMBus transaction. Such a driver will set functionality flags to I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL. The rest of the flags are for SMBus-only controllers. Each flag basically corresponds to an i2c_smbus_*() function, which in turn corresponds to the combination of an SMBus transaction type or size and a direction (read or write). The mapping between i2c_smbus_*() functions and functionality flags is rather obvious, but for clarity I'll update Documentation/i2c/smbus-protocol to mention it. Patch follows. Also see Documentation/i2c/functionality for a detailed explanation of how functionality flags work both on the I2C/SMBus adapter driver and the I2C device driver sides. -- Jean Delvare -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html