Re: [PATCH v3 1/2] dt-bindings: i2c-mux: Add property for settle time
From: Horatiu Vultur <horatiu.vultur@microchip.com>
Date: 2021-11-01 21:30:22
Also in:
linux-i2c, lkml
Subsystem:
i2c muxes, i2c subsystem host drivers, open firmware and flattened device tree bindings, the rest · Maintainers:
Peter Rosin, Andi Shyti, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Linus Torvalds
The 11/01/2021 15:32, Peter Rosin wrote: Hi Peter,
On 2021-11-01 13:25, Horatiu Vultur wrote:quoted
Some HW requires some time for the signals to settle after the muxing is changed. Allow this time to be specified in device tree. Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com> --- Documentation/devicetree/bindings/i2c/i2c-mux.yaml | 6 ++++++ 1 file changed, 6 insertions(+)diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux.yaml b/Documentation/devicetree/bindings/i2c/i2c-mux.yaml index 24cac36037f5..4628ff6340c1 100644 --- a/Documentation/devicetree/bindings/i2c/i2c-mux.yaml +++ b/Documentation/devicetree/bindings/i2c/i2c-mux.yaml@@ -29,6 +29,12 @@ properties: '#size-cells': const: 0 + settle-time-us: + default: 0 + description: + The time required for the signals to settle. Currently only the + i2c-mux-gpmux driver supports this optional binding.The information about how i2c-mux-gpmux is special is bound to go stale, and I don't think we should mention such specific details in the binding. What I meant was a generic warnings about optional bindings perhaps not being supported by all drivers, along the lines of this from i2c.txt: "These properties may not be supported by all drivers. However, if a driver wants to support one of the below features, it should adapt these bindings." However, I now notice that this sentence makes no sense. It looks like it should be s/adapt/adopt/. And, in the i2c-mux.yaml case it can simply say "Optional properties" instead of "These properites" (which refers to a subset of properties immediately below the text) since with a yaml binding it is always clear which properties are optional and which are required. Lastly, I guess this warning belongs in the description.quoted
+ patternProperties: '^i2c@[0-9a-f]+$': $ref: /schemas/i2c/i2c-controller.yamlSince this is the first optional property, you now need to specify what properties are required, which is everything but settle-time-us. If you don't, all properties are required. Which is not what we want... Something like this should do it, I think: required: - compatible - '#address-cells' - '#size-cells'
Thanks for a detail explanation but I am still struggling with these bindings. Were you thinking to have something like this? ---
diff --git a/Documentation/devicetree/bindings/i2c/i2c-mux.yaml b/Documentation/devicetree/bindings/i2c/i2c-mux.yaml
index 24cac36037f5..c9fde1bb0fea 100644
--- a/Documentation/devicetree/bindings/i2c/i2c-mux.yaml
+++ b/Documentation/devicetree/bindings/i2c/i2c-mux.yaml@@ -19,6 +19,9 @@ description: |+ populating the i2c child busses. If an 'i2c-mux' subnode is present, only subnodes of this will be considered as i2c child busses. + Optional properties may not be supported by all drivers. However, if a driver + wants to support one of the below features, it should adopt these bindings. + properties: $nodename: pattern: '^(i2c-?)?mux'
@@ -29,6 +32,11 @@ properties: '#size-cells': const: 0 + settle-time-us: + default: 0 + description: + The time required for the signals to settle. + patternProperties: '^i2c@[0-9a-f]+$': $ref: /schemas/i2c/i2c-controller.yaml
@@ -41,6 +49,11 @@ patternProperties: additionalProperties: true +required: + - compatible + - '#address-cells' + - '#size-cells' + examples: - | /* ---
If I have this then my problem is with the required properties because then I start to get new warnings once I run: make ARCH=arm CROSS_COMPILE=arm-linux- dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/i2c/i2c-mux.yaml For example, one of new the warnings is this: /home/hvultur/linux/arch/arm/boot/dts/am335x-icev2.dt.yaml: mux-mii-hog: 'compatible' is a required property From schema: /home/hvultur/linux/Documentation/devicetree/bindings/i2c/i2c-mux.yaml /home/hvultur/linux/arch/arm/boot/dts/am335x-icev2.dt.yaml: mux-mii-hog: '#address-cells' is a required property From schema: /home/hvultur/linux/Documentation/devicetree/bindings/i2c/i2c-mux.yaml /home/hvultur/linux/arch/arm/boot/dts/am335x-icev2.dt.yaml: mux-mii-hog: '#size-cells' is a required property From schema: /home/hvultur/linux/Documentation/devicetree/bindings/i2c/i2c-mux.yaml If I don't have the required properties then I don't see these new warnings. Does it mean that actually the properties are optional by default?
Cheers, Peter
-- /Horatiu