Re: [PATCH v11 5/8] i2c: fsi: Add transfer implementation

From: Eddie James
Date: Tue Jul 10 2018 - 17:12:37 EST




On 07/10/2018 02:39 PM, Wolfram Sang wrote:
Sorry, what do you mean "show up as"? Yes, we could first shift all our
addresses in user-space before passing them to the driver, so that the
msg->addr field is exactly what the hardware expects already... This would
be non-trivial for our users considering all our documentation represents
the addresses as the top 7 bits of a byte :(
Ah, now I understand the whole situation! Good that I asked. But I have
bad news for you:

msg->addr is 7 bit and LSB aligned. No way around that. This is how
Linux I2C worked since the beginning. You have to adapt to it.

I know what you mean. Most doumentation I get has the addresses in 8
bit, i.e. 7 bit address shifted + RW bit. But sorry again, the Linux
representation is different and all drivers have to adhere to that.

An EEPROM ist at 0x50 in Linux. There is no write addr 0xa0 and read
addr 0xa1.

OK, I understand! Will test and resend with conforming addressing. Thanks for all the feedback!

Eddie


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.
Ah, but due to the addressing situation, tools like i2cget don't work with
our addresses unless the 10 bit flag is specified. For example, we may want
to access 0xA0.
This is a kinda dirty workaround to the above problem. It is even wrong
because 10-bit addresses look totally different on the wire.

Sorry for the hazzle with the docs, but there is no way around that.