Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: i2c: add support for 'i2c-gate' subnode

Handle i2c gates similarly to how i2c arbitrators are handled.
This gets rid of a pointless 'reg' property for i2c gates.

I.e. this new and more compact style

some-gate {
i2c-gate {
#address-cells = <1>;
#size-cells = <0>;

some-i2c-device@50 {
reg = <0x50>;
};
};
};

instead of the old

some-gate {
#address-cells = <1>;
#size-cells = <0>;

i2c@0 {
reg = <0>;

#address-cells = <1>;
#size-cells = <0>;

some-i2c-device@50 {
reg = <0x50>;
};
};
};

Acked-by: Rob Herring <robh@kernel.org>
Reviewed-by: Wolfram Sang <wsa@the-dreams.de>
Signed-off-by: Peter Rosin <peda@axentia.se>

+42
+41
Documentation/devicetree/bindings/i2c/i2c-gate.txt
··· 1 + An i2c gate is useful to e.g. reduce the digital noise for RF tuners connected 2 + to the i2c bus. Gates are similar to arbitrators in that you need to perform 3 + some kind of operation to access the i2c bus past the arbitrator/gate, but 4 + there are no competing masters to consider for gates and therefore there is 5 + no arbitration happening for gates. 6 + 7 + Common i2c gate properties. 8 + 9 + - i2c-gate child node 10 + 11 + Required properties for the i2c-gate child node: 12 + - #address-cells = <1>; 13 + - #size-cells = <0>; 14 + 15 + Optional properties for i2c-gate child node: 16 + - Child nodes conforming to i2c bus binding 17 + 18 + 19 + Example : 20 + 21 + /* 22 + An Invensense mpu9150 at address 0x68 featuring an on-chip Asahi 23 + Kasei ak8975 compass behind a gate. 24 + */ 25 + 26 + mpu9150@68 { 27 + compatible = "invensense,mpu9150"; 28 + reg = <0x68>; 29 + interrupt-parent = <&gpio1>; 30 + interrupts = <18 1>; 31 + 32 + i2c-gate { 33 + #address-cells = <1>; 34 + #size-cells = <0>; 35 + 36 + ax8975@c { 37 + compatible = "ak,ak8975"; 38 + reg = <0x0c>; 39 + }; 40 + }; 41 + };
+1
MAINTAINERS
··· 5668 5668 F: Documentation/i2c/muxes/ 5669 5669 F: Documentation/devicetree/bindings/i2c/i2c-mux* 5670 5670 F: Documentation/devicetree/bindings/i2c/i2c-arb* 5671 + F: Documentation/devicetree/bindings/i2c/i2c-gate* 5671 5672 F: drivers/i2c/i2c-mux.c 5672 5673 F: drivers/i2c/muxes/ 5673 5674 F: include/linux/i2c-mux.h