Lines Matching +full:i2c +full:- +full:bus
1 GPIO-based I2C Arbitration Using a Challenge & Response Mechanism
4 the master of an I2C bus in a multimaster situation.
7 the standard I2C multi-master rules. Using GPIOs is generally useful in
8 the case where there is a device on the bus that has errata and/or bugs
12 * It is nonstandard (not using standard I2C multimaster)
13 * Having two masters on a bus in general makes it relatively hard to debug
14 problems (hard to tell if i2c issues were caused by one master, another, or
15 some device on the bus).
20 All masters on the bus have a 'bus claim' line which is an output that the
21 others can see. These are all active low with pull-ups enabled. We'll
24 - OUR_CLAIM: output from us signaling to other hosts that we want the bus
25 - THEIR_CLAIMS: output from others signaling that they want the bus
27 The basic algorithm is to assert your line when you want the bus, then make
31 Let's say we want to claim the bus. We:
35 3. Check THEIR_CLAIMS. If none are asserted then the we have the bus and we are
43 - compatible: i2c-arb-gpio-challenge
44 - our-claim-gpio: The GPIO that we use to claim the bus.
45 - their-claim-gpios: The GPIOs that the other sides use to claim the bus.
47 - I2C arbitration bus node. See i2c-arb.txt in this directory.
50 - slew-delay-us: microseconds to wait for a GPIO to go high. Default is 10 us.
51 - wait-retry-us: we'll attempt another claim after this many microseconds.
53 - wait-free-us: we'll give up after this many microseconds. Default is 50000 us.
57 i2c@12ca0000 {
58 compatible = "acme,some-i2c-device";
59 #address-cells = <1>;
60 #size-cells = <0>;
63 i2c-arbitrator {
64 compatible = "i2c-arb-gpio-challenge";
66 i2c-parent = <&{/i2c@12CA0000}>;
68 our-claim-gpio = <&gpf0 3 1>;
69 their-claim-gpios = <&gpe0 4 1>;
70 slew-delay-us = <10>;
71 wait-retry-us = <3000>;
72 wait-free-us = <50000>;
74 i2c-arb {
75 #address-cells = <1>;
76 #size-cells = <0>;
78 i2c@52 {
79 // Normal I2C device