Hi, I saw that the at91 i2c driver has some kind of heuristic in at91_twi_xfer(). It assumes that if there are exactly two messages to transfer, the first is the address write of a common i2c write address, read data transaction. I don't think that assumption is correct. Also there is no check if msg->len is actually smaller than the width of the address which can be written to AT91_TWI_IADR. I think, what is at least missing is that, the first one is actually a write and have at max 3 bytes (IIRC thats the max width of AT91_TWI_IADR). Actually, I don't find any code at all which would handle multiple messages. Looks like it just supports num == 2 (and assumes the first message fits into the AT91_TWI_IADR) and num == 1. -michael