* 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).