> > > + 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. But msg->addr is 7 bit and LSB aligned. If I am not horribly wrong, with the above code, an EEPROM at 0x50 would show up as 0x28 with your driver? > Indeed, real 10-bit addresses require some additional manipulation of this > I2C master in order to work. We don't support it right now. Then you should remove the associated FUNC flag.
Attachment:
signature.asc
Description: PGP signature