Lines Matching +full:i2c +full:- +full:arb +full:- +full:gpio +full:- +full:challenge

1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
3 ---
4 $id: http://devicetree.org/schemas/i2c/i2c-arb-gpio-challenge.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: GPIO-based I2C Arbitration Using a Challenge & Response Mechanism
10 - Doug Anderson <dianders@chromium.org>
11 - Peter Rosin <peda@axentia.se>
14 This uses GPIO lines and a challenge & response mechanism to arbitrate who is
15 the master of an I2C bus in a multimaster situation.
18 standard I2C multi-master rules. Using GPIOs is generally useful in the case
23 * It is nonstandard (not using standard I2C multimaster)
25 problems (hard to tell if i2c issues were caused by one master, another,
30 others can see. These are all active low with pull-ups enabled. We'll
51 const: i2c-arb-gpio-challenge
53 i2c-parent:
56 The I2C bus that this multiplexer's master-side port is connected to.
58 our-claim-gpios:
61 The GPIO that we use to claim the bus.
63 slew-delay-us:
66 Time to wait for a GPIO to go high.
68 their-claim-gpios:
75 wait-free-us:
80 wait-retry-us:
85 i2c-arb:
87 $ref: /schemas/i2c/i2c-controller.yaml
90 I2C arbitration bus node.
93 - compatible
94 - i2c-arb
95 - our-claim-gpios
96 - their-claim-gpios
101 - |
102 #include <dt-bindings/gpio/gpio.h>
103 #include <dt-bindings/interrupt-controller/irq.h>
105 i2c-arbitrator {
106 compatible = "i2c-arb-gpio-challenge";
107 i2c-parent = <&i2c_4>;
109 our-claim-gpios = <&gpf0 3 GPIO_ACTIVE_LOW>;
110 their-claim-gpios = <&gpe0 4 GPIO_ACTIVE_LOW>;
111 slew-delay-us = <10>;
112 wait-retry-us = <3000>;
113 wait-free-us = <50000>;
115 i2c-arb {
116 #address-cells = <1>;
117 #size-cells = <0>;
119 sbs-battery@b {
120 compatible = "sbs,sbs-battery";
122 sbs,poll-retry-count = <1>;
125 embedded-controller@1e {
126 compatible = "google,cros-ec-i2c";
129 interrupt-parent = <&gpx1>;
130 pinctrl-names = "default";
131 pinctrl-0 = <&ec_irq>;
132 wakeup-source;