Lines Matching full:mux
8 1. A mux may be needed on the bus to prevent address collisions.
23 I2C transfers, and all adapters with a parent are part of an "i2c-mux"
26 Depending of the particular mux driver, something happens when there is
27 an I2C transfer on one of its child adapters. The mux driver can
28 obviously operate a mux, but it can also do arbitration with an external
29 bus master or open a gate. The mux driver has two operations for this,
38 mux-locked or parent-locked muxes. As is evident from below, it can be
39 useful to know if a mux is mux-locked or if it is parent-locked. The
46 i2c-mux-gpio Normally parent-locked, mux-locked iff
48 same I2C root adapter that they mux.
49 i2c-mux-gpmux Normally parent-locked, mux-locked iff
51 i2c-mux-ltc4306 Mux-locked
52 i2c-mux-mlxcpld Parent-locked
53 i2c-mux-pca9541 Parent-locked
54 i2c-mux-pca954x Parent-locked
55 i2c-mux-pinctrl Normally parent-locked, mux-locked iff
57 by the same I2C root adapter that they mux.
58 i2c-mux-reg Parent-locked
64 gyro/mpu3050 Mux-locked
65 imu/inv_mpu6050/ Mux-locked
71 dvb-frontends/lgdt3306a Mux-locked
74 dvb-frontends/rtl2832 Mux-locked
75 dvb-frontends/si2168 Mux-locked
80 Mux-locked muxes
83 Mux-locked muxes does not lock the entire parent adapter during the
85 adapter are locked. Mux-locked muxes are mostly interesting if the
89 stages of the transaction. This has the benefit that the mux driver
93 ML1. 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
99 mux-locked muxes that are not siblings, when there are address
104 address 0x42 behind mux-one may be interleaved with a similar
105 operation targeting device address 0x42 behind mux-two. The
107 be that mux-one and mux-two should not be selected simultaneously,
108 but mux-locked muxes do not guarantee that in all topologies.
110 ML3. A mux-locked mux cannot be used by a driver for auto-closing
115 ML4. If any non-I2C operation in the mux driver changes the I2C mux state,
118 behind the mux, when an unrelated I2C transfer is in flight during
119 the non-I2C mux-changing operation.
123 Mux-locked Example
130 .--------. | mux- |-----| dev D1 |
132 '--------' | | mux M1 |--. .--------.
142 3. M1 calls ->select to ready the mux.
161 transfer-deselect transaction. The implication is that the mux driver
168 PL1. If you build a topology with a parent-locked mux being the child
169 of another mux, this might break a possible assumption from the
170 child mux that the root adapter is unused between its select op
171 and the actual transfer (e.g. if the child mux is auto-closing
172 and the parent mux issues I2C transfers as part of its select).
173 This is especially the case if the parent mux is mux-locked, but
174 it may also happen if the parent mux is parent-locked.
192 '--------' | | mux M1 |--. .--------.
203 4. M1 calls ->select to ready the mux.
223 Parent-locked mux as parent of parent-locked mux
231 '--------' | | mux M1 |--. | mux M2 |--. .--------.
242 This topology is bad if M2 is an auto-closing mux and M1->select
247 Mux-locked mux as parent of mux-locked mux
253 .--------. | mux- |-----| mux- |-----| dev D1 |
255 '--------' | | mux M1 |--. | mux M2 |--. .--------.
268 Mux-locked mux as parent of parent-locked mux
274 .--------. | mux- |-----| parent- |-----| dev D1 |
276 '--------' | | mux M1 |--. | mux M2 |--. .--------.
295 mux. In that case, any interleaved accesses to D4 might close M2
302 Parent-locked mux as parent of mux-locked mux
308 .--------. | parent- |-----| mux- |-----| dev D1 |
310 '--------' | | mux M1 |--. | mux M2 |--. .--------.
319 any point, just as is expected for mux-locked muxes.
326 Two mux-locked sibling muxes
333 | mux- |--' '--------'
335 | | mux M1 |-----| dev D2 |
338 .--------. | | mux- |-----| dev D3 |
340 '--------' | | mux M2 |--. .--------.
359 | | mux M1 |-----| dev D2 |
364 '--------' | | mux M2 |--. .--------.
374 Mux-locked and parent-locked sibling muxes
381 | mux- |--' '--------'
383 | | mux M1 |-----| dev D2 |
388 '--------' | | mux M2 |--. .--------.