On 07/09/2018 05:41 PM, Wolfram Sang wrote:
+ cmd |= FIELD_PREP(I2C_CMD_ADDR, msg->addr >> 1);
I just noticed this and wonder: Don't you need the LSB of the address?
It is not the RW flag, this is encoded in msg->flags.
So, the hardware interprets the LSB as the RW flag. It wouldn't be
possible to have a device addressed with the LSB set on this I2C master.
Also, no seperate handling for 10 bit addresses? Technically, 7-bit 0x50
is different on the wire from 10-bit 0x050. This is minor, though. There
are no 10-bit devices out there. Still, did you test 10-bit support?
Indeed, real 10-bit addresses require some additional manipulation of
this I2C master in order to work. We don't support it right now.
Thanks,
Eddie
Rest looks good.