devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Express that at least one patternProperties is required
@ 2021-08-18 11:03 Sa, Nuno
  2021-08-18 18:28 ` Rob Herring
  0 siblings, 1 reply; 2+ messages in thread
From: Sa, Nuno @ 2021-08-18 11:03 UTC (permalink / raw)
  To: Rob Herring; +Cc: devicetree

Hi Rob,

I'm preparing a patch to do a slight improvement in [1] where if there are no channels
given in the devicetree, it does not really make sense to probe the device. Now,
I want to express this in the bindings doc [2] but I'm failing to find a way to say that
at least one of the patternProperties channel has to be present. For my shame,
this is the only way I could express it:

----
diff --git a/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml b/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
index 0f79d9a01c49..27c17e07aeb0 100644
--- a/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
+++ b/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
@@ -382,6 +382,207 @@ required:
   - reg
   - interrupts
 
+# at least one sensor channel must be present
+anyOf:
+  - required:
+      - thermocouple@1
+  - required:
+      - thermocouple@2
+  - required:
+      - thermocouple@3
+  - required:
+      - thermocouple@4
+  - required:
+      - thermocouple@5
+  - required:
+      - thermocouple@6
+  - required:
+      - thermocouple@7
+  - required:
+      - thermocouple@8
+  - required:
+      - thermocouple@9
+  - required:
+      - thermocouple@10
+  - required:
+      - thermocouple@11
+  - required:
+      - thermocouple@12
+  - required:
+      - thermocouple@13
+  - required:
+      - thermocouple@14
+  - required:
+      - thermocouple@15
+  - required:
+      - thermocouple@16
+  - required:
+      - thermocouple@17
+  - required:
+      - thermocouple@18
+  - required:
+      - thermocouple@19
+  - required:
+      - thermocouple@20
+  - required:
+      - diode@1
+  - required:
+      - diode@2
+  - required:
+      - diode@3
+  - required:
+      - diode@4
+  - required:
+      - diode@5
+  - required:
+      - diode@6
+  - required:
+      - diode@7
+  - required:
+      - diode@8
+  - required:
+      - diode@9
+  - required:
+      - diode@10
+  - required:
+      - diode@11
+  - required:
+      - diode@12
+  - required:
+      - diode@13
+  - required:
+      - diode@14
+  - required:
+      - diode@15
+  - required:
+      - diode@16
+  - required:
+      - diode@17
+  - required:
+      - diode@18
+  - required:
+      - diode@19
+  - required:
+      - diode@20
+  - required:
+      - rtd@2
+  - required:
+      - rtd@3
+  - required:
+      - rtd@4
+  - required:
+      - rtd@5
+  - required:
+      - rtd@6
+  - required:
+      - rtd@7
+  - required:
+      - rtd@8
+  - required:
+      - rtd@9
+  - required:
+      - rtd@10
+  - required:
+      - rtd@11
+  - required:
+      - rtd@12
+  - required:
+      - rtd@13
+  - required:
+      - rtd@14
+  - required:
+      - rtd@15
+  - required:
+      - rtd@16
+  - required:
+      - rtd@17
+  - required:
+      - rtd@18
+  - required:
+      - rtd@19
+  - required:
+      - rtd@20
+  - required:
+      - thermistor@1
+  - required:
+      - thermistor@2
+  - required:
+      - thermistor@3
+  - required:
+      - thermistor@4
+  - required:
+      - thermistor@5
+  - required:
+      - thermistor@6
+  - required:
+      - thermistor@7
+  - required:
+      - thermistor@8
+  - required:
+      - thermistor@9
+  - required:
+      - thermistor@10
+  - required:
+      - thermistor@11
+  - required:
+      - thermistor@12
+  - required:
+      - thermistor@13
+  - required:
+      - thermistor@14
+  - required:
+      - thermistor@15
+  - required:
+      - thermistor@16
+  - required:
+      - thermistor@17
+  - required:
+      - thermistor@18
+  - required:
+      - thermistor@19
+  - required:
+      - thermistor@20
+  - required:
+      - adc@1
+  - required:
+      - adc@2
+  - required:
+      - adc@3
+  - required:
+      - adc@4
+  - required:
+      - adc@5
+  - required:
+      - adc@6
+  - required:
+      - adc@7
+  - required:
+      - adc@8
+  - required:
+      - adc@9
+  - required:
+      - adc@10
+  - required:
+      - adc@11
+  - required:
+      - adc@12
+  - required:
+      - adc@13
+  - required:
+      - adc@14
+  - required:
+      - adc@15
+  - required:
+      - adc@16
+  - required:
+      - adc@17
+  - required:
+      - adc@18
+  - required:
+      - adc@19
+  - required:
+      - adc@20
+
 additionalProperties: false
 
 examples:

----

Obviously, this looks bad but I'm not sure we can actually use regex in the required schema?
Is there any clever way of expressing this or is this the only way?

[1]: https://elixir.bootlin.com/linux/v5.14-rc6/source/drivers/iio/temperature/ltc2983.c#L1275
[2]: https://elixir.bootlin.com/linux/v5.14-rc6/source/Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml

Thanks!
- Nuno Sá


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: Express that at least one patternProperties is required
  2021-08-18 11:03 Express that at least one patternProperties is required Sa, Nuno
@ 2021-08-18 18:28 ` Rob Herring
  0 siblings, 0 replies; 2+ messages in thread
From: Rob Herring @ 2021-08-18 18:28 UTC (permalink / raw)
  To: Sa, Nuno; +Cc: devicetree

On Wed, Aug 18, 2021 at 6:03 AM Sa, Nuno <Nuno.Sa@analog.com> wrote:
>
> Hi Rob,
>
> I'm preparing a patch to do a slight improvement in [1] where if there are no channels
> given in the devicetree, it does not really make sense to probe the device. Now,
> I want to express this in the bindings doc [2] but I'm failing to find a way to say that
> at least one of the patternProperties channel has to be present. For my shame,
> this is the only way I could express it:

No shame, there's actually not a better way. What you need is
something like this[1], but you'll see it has been an open issue for
some time.

I don't think it's worth adding given the verbosity.

Rob

[1] https://github.com/json-schema-org/json-schema-vocabularies/issues/16

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-08-18 18:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-18 11:03 Express that at least one patternProperties is required Sa, Nuno
2021-08-18 18:28 ` Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).