Hallo Uwe, > Jean Delvare wrote: > > Given that all block transfers you do are standard I2C block transfers, > > you may consider switching to i2c_smbus_{read,write}_i2c_block_data for > > SMBus compatibility. This would also make your code more simple, I > > think. > > I don't understand how I specify the length of the block to be read for > i2c_smbus_read_i2c_block_data. Oops. This is a bug (or at least lack of fundamental feature) in the current implementation of i2c_smbus_read_i2c_block_data. I want to fix it for some times now but always postponed it due to the compatibility issues it raises :( So there is no way you can use i2c_smbus_read_i2c_block_data in your driver at the moment; stick to i2c_transfer for now. > (...) And i2c_smbus_xfer_emulated looks to me > as if it were not possible to use it when my adapter doesn't have > algo->smbus_xfer. Not correct. The i2c-core is able to emulate algo->smbus_xfer using algo->master_xfer. See i2c_smbus_xfer() in i2c-core.c for the test, and i2c_smbus_xfer_emulated() for the implementation. -- Jean Delvare