Blame view

Documentation/i2c/ten-bit-addresses 1.09 KB
89140f415   Andrea Gelmini   Documentation/i2c...
1
  The I2C protocol knows about two kinds of device addresses: normal 7 bit
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
2
3
4
5
6
  addresses, and an extended set of 10 bit addresses. The sets of addresses
  do not intersect: the 7 bit address 0x10 is not the same as the 10 bit
  address 0x10 (though a single device could respond to both of them). You
  select a 10 bit address by adding an extra byte after the address
  byte:
89140f415   Andrea Gelmini   Documentation/i2c...
7
    S Addr7 Rd/Wr ....
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
8
9
10
11
12
  becomes
    S 11110 Addr10 Rd/Wr
  S is the start bit, Rd/Wr the read/write bit, and if you count the number
  of bits, you will see the there are 8 after the S bit for 7 bit addresses,
  and 16 after the S bit for 10 bit addresses.
89140f415   Andrea Gelmini   Documentation/i2c...
13
  WARNING! The current 10 bit address support is EXPERIMENTAL. There are
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
14
15
16
17
18
19
20
21
  several places in the code that will cause SEVERE PROBLEMS with 10 bit
  addresses, even though there is some basic handling and hooks. Also,
  almost no supported adapter handles the 10 bit addresses correctly.
  
  As soon as a real 10 bit address device is spotted 'in the wild', we
  can and will add proper support. Right now, 10 bit address devices
  are defined by the I2C protocol, but we have never seen a single device
  which supports them.