Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) I2C Ten-bit Addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) The I2C protocol knows about two kinds of device addresses: normal 7 bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) addresses, and an extended set of 10 bit addresses. The sets of addresses
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) address 0x10 (though a single device could respond to both of them).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) To avoid ambiguity, the user sees 10 bit addresses mapped to a different
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) address space, namely 0xa000-0xa3ff. The leading 0xa (= 10) represents the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) 10 bit mode. This is used for creating device names in sysfs. It is also
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) needed when instantiating 10 bit devices via the new_device file in sysfs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) I2C messages to and from 10-bit address devices have a different format.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) See the I2C specification for the details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) The current 10 bit address support is minimal. It should work, however
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) you can expect some problems along the way:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) * Not all bus drivers support 10-bit addresses. Some don't because the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)   hardware doesn't support them (SMBus doesn't require 10-bit address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)   support for example), some don't because nobody bothered adding the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)   code (or it's there but not working properly.) Software implementation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)   (i2c-algo-bit) is known to work.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) * Some optional features do not support 10-bit addresses. This is the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)   case of automatic detection and instantiation of devices by their,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27)   drivers, for example.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) * Many user-space packages (for example i2c-tools) lack support for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)   10-bit addresses.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) Note that 10-bit address devices are still pretty rare, so the limitations
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) listed above could stay for a long time, maybe even forever if nobody
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) needs them to be fixed.