diff mbox series

[v5,3/8] dt-bindings: i2c: add support for tsd,mule

Message ID 20240708-dev-mule-i2c-mux-v5-3-71446d3f0b8d@cherry.de (mailing list archive)
State New
Headers show
Series Add tsd,mule-i2c-mux support | expand

Commit Message

Farouk Bouabid July 8, 2024, 4:12 p.m. UTC
Theobroma Systems Mule is an MCU that emulates a set of I2C devices,
among which is an amc6821 and other devices that are reachable through
an I2C-mux. The devices on the mux can be selected by writing the
appropriate device number to an I2C config register (amc6821: reg 0xff)

Signed-off-by: Farouk Bouabid <farouk.bouabid@cherry.de>
---
 .../devicetree/bindings/i2c/tsd,mule.yaml          | 63 ++++++++++++++++++++++
 1 file changed, 63 insertions(+)

Comments

Rob Herring (Arm) July 8, 2024, 5:17 p.m. UTC | #1
On Mon, 08 Jul 2024 18:12:14 +0200, Farouk Bouabid wrote:
> Theobroma Systems Mule is an MCU that emulates a set of I2C devices,
> among which is an amc6821 and other devices that are reachable through
> an I2C-mux. The devices on the mux can be selected by writing the
> appropriate device number to an I2C config register (amc6821: reg 0xff)
> 
> Signed-off-by: Farouk Bouabid <farouk.bouabid@cherry.de>
> ---
>  .../devicetree/bindings/i2c/tsd,mule.yaml          | 63 ++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
> 

My bot found errors running 'make dt_binding_check' on your patch:

yamllint warnings/errors:

dtschema/dtc warnings/errors:
Documentation/devicetree/bindings/i2c/tsd,mule.example.dtb: /example-0/i2c/fan@18/i2c-mux: failed to match any schema with compatible: ['tsd,mule-i2c-mux']

doc reference errors (make refcheckdocs):

See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20240708-dev-mule-i2c-mux-v5-3-71446d3f0b8d@cherry.de

The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.

If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:

pip3 install dtschema --upgrade

Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
Rob Herring (Arm) July 8, 2024, 10:45 p.m. UTC | #2
On Mon, Jul 08, 2024 at 11:17:45AM -0600, Rob Herring (Arm) wrote:
> 
> On Mon, 08 Jul 2024 18:12:14 +0200, Farouk Bouabid wrote:
> > Theobroma Systems Mule is an MCU that emulates a set of I2C devices,
> > among which is an amc6821 and other devices that are reachable through
> > an I2C-mux. The devices on the mux can be selected by writing the
> > appropriate device number to an I2C config register (amc6821: reg 0xff)
> > 
> > Signed-off-by: Farouk Bouabid <farouk.bouabid@cherry.de>
> > ---
> >  .../devicetree/bindings/i2c/tsd,mule.yaml          | 63 ++++++++++++++++++++++
> >  1 file changed, 63 insertions(+)
> > 
> 
> My bot found errors running 'make dt_binding_check' on your patch:
> 
> yamllint warnings/errors:
> 
> dtschema/dtc warnings/errors:
> Documentation/devicetree/bindings/i2c/tsd,mule.example.dtb: /example-0/i2c/fan@18/i2c-mux: failed to match any schema with compatible: ['tsd,mule-i2c-mux']

This can be ignored. Looks like things went sideways here because patch 
1 subject is a substring of patch 3 and then it got marked as 
Superseded.

Rob
Rob Herring (Arm) July 8, 2024, 11:03 p.m. UTC | #3
On Mon, Jul 08, 2024 at 06:12:14PM +0200, Farouk Bouabid wrote:
> Theobroma Systems Mule is an MCU that emulates a set of I2C devices,
> among which is an amc6821 and other devices that are reachable through
> an I2C-mux. The devices on the mux can be selected by writing the
> appropriate device number to an I2C config register (amc6821: reg 0xff)
> 
> Signed-off-by: Farouk Bouabid <farouk.bouabid@cherry.de>
> ---
>  .../devicetree/bindings/i2c/tsd,mule.yaml          | 63 ++++++++++++++++++++++
>  1 file changed, 63 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/i2c/tsd,mule.yaml b/Documentation/devicetree/bindings/i2c/tsd,mule.yaml
> new file mode 100644
> index 000000000000..dbbabba8dd6f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/tsd,mule.yaml
> @@ -0,0 +1,63 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/i2c/tsd,mule.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Theobroma Systems Mule I2C device
> +
> +maintainers:
> +  - Farouk Bouabid <farouk.bouabid@cherry.de>
> +  - Quentin Schulz <quentin.schulz@cherry.de>
> +
> +description: |
> +  Theobroma Systems Mule is an MCU that emulates a set of I2C devices, among
> +  which is an amc6821 and other devices that are reachable through an I2C-mux.
> +  The devices on the mux can be selected by writing the appropriate device
> +  number to an I2C config register (amc6821: reg 0xff)
> +
> +additionalProperties: true

Must be false.

> +
> +properties:
> +  compatible:
> +    contains:

No, must define the entries and the order.

> +      enum:
> +        - tsd,mule
> +        - ti,amc6821

Need to drop this from trivial-devices.yaml. We don't define the same 
compatible in 2 places.

As the original device was ti,amc6821 and this is a superset, the 
binding should first document ti,amc6821 meaning that should be the 
filename, title, etc. And then describe the Mule additions. (I mean how 
the binding should read, not patch structure. 1 patch for this is fine.)

> +
> +  reg:
> +    maxItems: 1

To fix the additionalProperties failure you will see, you need to add:

     i2c-mux:
       type: object

> +
> +required:
> +  - compatible
> +  - reg
> +
> +examples:
> +  - |
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        fan@18 {
> +            compatible = "tsd,mule", "ti,amc6821";
> +            reg = <0x18>;
> +
> +            i2c-mux {
> +                compatible = "tsd,mule-i2c-mux";
> +                #address-cells = <1>;
> +                #size-cells = <0>;
> +
> +                i2c@0 {
> +                    reg = <0x0>;
> +                    #address-cells = <1>;
> +                    #size-cells = <0>;
> +
> +                    rtc@6f {
> +                        compatible = "isil,isl1208";
> +                        reg = <0x6f>;
> +                    };
> +                };
> +            };
> +        };
> +    };
> +...
> 
> -- 
> 2.34.1
>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/i2c/tsd,mule.yaml b/Documentation/devicetree/bindings/i2c/tsd,mule.yaml
new file mode 100644
index 000000000000..dbbabba8dd6f
--- /dev/null
+++ b/Documentation/devicetree/bindings/i2c/tsd,mule.yaml
@@ -0,0 +1,63 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/i2c/tsd,mule.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Theobroma Systems Mule I2C device
+
+maintainers:
+  - Farouk Bouabid <farouk.bouabid@cherry.de>
+  - Quentin Schulz <quentin.schulz@cherry.de>
+
+description: |
+  Theobroma Systems Mule is an MCU that emulates a set of I2C devices, among
+  which is an amc6821 and other devices that are reachable through an I2C-mux.
+  The devices on the mux can be selected by writing the appropriate device
+  number to an I2C config register (amc6821: reg 0xff)
+
+additionalProperties: true
+
+properties:
+  compatible:
+    contains:
+      enum:
+        - tsd,mule
+        - ti,amc6821
+
+  reg:
+    maxItems: 1
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        fan@18 {
+            compatible = "tsd,mule", "ti,amc6821";
+            reg = <0x18>;
+
+            i2c-mux {
+                compatible = "tsd,mule-i2c-mux";
+                #address-cells = <1>;
+                #size-cells = <0>;
+
+                i2c@0 {
+                    reg = <0x0>;
+                    #address-cells = <1>;
+                    #size-cells = <0>;
+
+                    rtc@6f {
+                        compatible = "isil,isl1208";
+                        reg = <0x6f>;
+                    };
+                };
+            };
+        };
+    };
+...