@@ -30,6 +30,13 @@ properties:
minimum: 1
maximum: 5000000
+ i2c-parent:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ In case of an I2C bus extension, reference to the I2C bus controller
+ this extension is connected to. In other word, reference the I2C bus
+ controller on the fixed side that drives the bus extension.
+
i2c-scl-falling-time-ns:
description:
Number of nanoseconds the SCL signal takes to fall; t(f) in the I2C
@@ -159,6 +166,25 @@ allOf:
- i2c-scl-has-clk-low-timeout
patternProperties:
+ 'i2c-bus-extension@[0-9a-f]+$':
+ type: object
+ description:
+ An I2C bus extension connected to an I2C bus. Those extensions allow to
+ decouple I2C busses when they are wired to connectors.
+
+ properties:
+ reg:
+ maxItems: 1
+
+ i2c-bus:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ Reference to the extension bus.
+
+ required:
+ - reg
+ - i2c-bus
+
'@[0-9a-f]+$':
type: object
@@ -221,3 +247,44 @@ dependentRequired:
i2c-digital-filter-width-ns: [ i2c-digital-filter ]
additionalProperties: true
+
+examples:
+ # I2C bus extension example involving an I2C bus controller and a connector.
+ #
+ # +--------------+ +-------------+ +-------------+
+ # | i2c@abcd0000 | | Connector | | Addon board |
+ # | (i2c1) +-----+ (i2c-addon) +-----+ (device@10) |
+ # | | | | | |
+ # +--------------+ +-------------+ +-------------+
+ #
+ # The i2c1 I2C bus is wired from a I2C controller to a connector. It is
+ # identified at connector level as i2c-addon bus.
+ # An addon board can be connected to this connector and connects a device
+ # (device@10) to this i2c-addon extension bus.
+ - |
+ i2c1: i2c@abcd0000 {
+ compatible = "xyz,i2c-ctrl";
+ reg = <0xabcd0000 0x100>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ i2c-bus-extension@0 {
+ reg = <0>;
+ i2c-bus = <&i2c_addon>;
+ };
+ };
+
+ connector {
+ i2c_addon: i2c-addon {
+ i2c-parent = <&i2c1>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ device@10 {
+ compatible = "xyz,foo";
+ reg = <0x10>;
+ };
+ };
+ };
+
+...