Lines Matching refs:mux
10 1. A mux may be needed on the bus to prevent address collisions.
25 I2C transfers, and all adapters with a parent are part of an "i2c-mux"
28 Depending of the particular mux driver, something happens when there is
29 an I2C transfer on one of its child adapters. The mux driver can
30 obviously operate a mux, but it can also do arbitration with an external
31 bus master or open a gate. The mux driver has two operations for this,
40 mux-locked or parent-locked muxes.
52 stages of the transaction. This has the benefit that the mux driver
61 .--------. | mux- |-----| dev D1 |
63 '--------' | | mux M1 |--. .--------.
73 3. M1 calls ->select to ready the mux.
90 When using a mux-locked mux, be aware of the following restrictions:
93 If you build a topology with a mux-locked mux being the parent
94 of a parent-locked mux, this might break the expectation from the
95 parent-locked mux that the root adapter is locked during the
100 mux-locked muxes that are not siblings, when there are address
105 address 0x42 behind mux-one may be interleaved with a similar
106 operation targeting device address 0x42 behind mux-two. The
108 be that mux-one and mux-two should not be selected simultaneously,
109 but mux-locked muxes do not guarantee that in all topologies.
112 A mux-locked mux cannot be used by a driver for auto-closing
118 If any non-I2C operation in the mux driver changes the I2C mux state,
121 behind the mux, when an unrelated I2C transfer is in flight during
122 the non-I2C mux-changing operation.
129 transfer-deselect transaction. The implication is that the mux driver
142 '--------' | | mux M1 |--. .--------.
153 4. M1 calls ->select to ready the mux.
171 When using a parent-locked mux, be aware of the following restrictions:
174 If you build a topology with a parent-locked mux being the child
175 of another mux, this might break a possible assumption from the
176 child mux that the root adapter is unused between its select op
177 and the actual transfer (e.g. if the child mux is auto-closing
178 and the parent mux issues I2C transfers as part of its select).
179 This is especially the case if the parent mux is mux-locked, but
180 it may also happen if the parent mux is parent-locked.
193 Parent-locked mux as parent of parent-locked mux
201 '--------' | | mux M1 |--. | mux M2 |--. .--------.
212 This topology is bad if M2 is an auto-closing mux and M1->select
217 Mux-locked mux as parent of mux-locked mux
223 .--------. | mux- |-----| mux- |-----| dev D1 |
225 '--------' | | mux M1 |--. | mux M2 |--. .--------.
240 Mux-locked mux as parent of parent-locked mux
246 .--------. | mux- |-----| parent- |-----| dev D1 |
248 '--------' | | mux M1 |--. | mux M2 |--. .--------.
267 mux. In that case, any interleaved accesses to D4 might close M2
274 Parent-locked mux as parent of mux-locked mux
280 .--------. | parent- |-----| mux- |-----| dev D1 |
282 '--------' | | mux M1 |--. | mux M2 |--. .--------.
291 any point, just as is expected for mux-locked muxes.
298 Two mux-locked sibling muxes
305 | mux- |--' '--------'
307 | | mux M1 |-----| dev D2 |
310 .--------. | | mux- |-----| dev D3 |
312 '--------' | | mux M2 |--. .--------.
331 | | mux M1 |-----| dev D2 |
336 '--------' | | mux M2 |--. .--------.
353 | mux- |--' '--------'
355 | | mux M1 |-----| dev D2 |
360 '--------' | | mux M2 |--. .--------.
374 Whether a device is mux-locked or parent-locked depends on its
381 i2c-mux-gpio Normally parent-locked, mux-locked iff
383 same I2C root adapter that they mux.
384 i2c-mux-gpmux Normally parent-locked, mux-locked iff
386 i2c-mux-ltc4306 Mux-locked
387 i2c-mux-mlxcpld Parent-locked
388 i2c-mux-pca9541 Parent-locked
389 i2c-mux-pca954x Parent-locked
390 i2c-mux-pinctrl Normally parent-locked, mux-locked iff
392 by the same I2C root adapter that they mux.
393 i2c-mux-reg Parent-locked