On 07.03.2022 17:57, Michael Walle wrote: > Hi, Mi Michael, > > 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. The constraints are set using the quirks feature [1] of the i2c subsystem. Best regards, Codrin [1] https://elixir.bootlin.com/linux/latest/source/drivers/i2c/busses/i2c-at91-master.c#L720