0001 =====================
0002 I2C Ten-bit Addresses
0003 =====================
0004
0005 The I2C protocol knows about two kinds of device addresses: normal 7 bit
0006 addresses, and an extended set of 10 bit addresses. The sets of addresses
0007 do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
0008 address 0x10 (though a single device could respond to both of them).
0009 To avoid ambiguity, the user sees 10 bit addresses mapped to a different
0010 address space, namely 0xa000-0xa3ff. The leading 0xa (= 10) represents the
0011 10 bit mode. This is used for creating device names in sysfs. It is also
0012 needed when instantiating 10 bit devices via the new_device file in sysfs.
0013
0014 I2C messages to and from 10-bit address devices have a different format.
0015 See the I2C specification for the details.
0016
0017 The current 10 bit address support is minimal. It should work, however
0018 you can expect some problems along the way:
0019
0020 * Not all bus drivers support 10-bit addresses. Some don't because the
0021 hardware doesn't support them (SMBus doesn't require 10-bit address
0022 support for example), some don't because nobody bothered adding the
0023 code (or it's there but not working properly.) Software implementation
0024 (i2c-algo-bit) is known to work.
0025 * Some optional features do not support 10-bit addresses. This is the
0026 case of automatic detection and instantiation of devices by their,
0027 drivers, for example.
0028 * Many user-space packages (for example i2c-tools) lack support for
0029 10-bit addresses.
0030
0031 Note that 10-bit address devices are still pretty rare, so the limitations
0032 listed above could stay for a long time, maybe even forever if nobody
0033 needs them to be fixed.