Lines Matching +full:on +full:- +full:chip
1 .. SPDX-License-Identifier: GPL-2.0
11 -----------
16 with a modified slave address. The address used on the parent bus is
21 An ATR looks similar to an i2c-mux except:
22 - the address on the parent and child busses can be different
23 - there is normally no need to select the child port; the alias used on the
26 The ATR functionality can be provided by a chip with many other features.
27 The kernel i2c-atr provides a helper to implement an ATR within a driver.
29 The ATR creates a new I2C "child" adapter on each child bus. Adding
30 devices on the child bus ends up in invoking the driver code to select
34 all I2C transactions directed to devices on the child buses.
41 .-----. |
42 .-----. | |---+---- B
43 | CPU |--A--| ATR |
44 `-----' | |---+---- C
45 `-----' |
51 each other. The ATR receives the transactions initiated on bus A and
52 propagates them on bus B or bus C or none depending on the device address
53 in the transaction and based on the alias table.
68 - Slave X driver requests a transaction (on adapter B), slave address 0x10
69 - ATR driver finds slave X is on bus B and has alias 0x20, rewrites
71 - Physical I2C transaction on bus A, slave address 0x20
72 - ATR chip detects transaction on address 0x20, finds it in table,
73 propagates transaction on bus B with address translated to 0x10,
74 keeps clock stretched on bus A waiting for reply
75 - Slave X chip (on bus B) detects transaction at its own physical
77 - ATR chip stops clock stretching and forwards reply on bus A,
79 - ATR driver receives the reply, rewrites messages with address 0x10
81 - Slave X driver gets back the msgs[], with reply and address 0x10
88 configure it in the chip and return the chosen alias in the
91 the chip and put the alias back in the pool for later usage
94 -------------------------------------
96 .. kernel-doc:: include/linux/i2c-atr.h