On Thu, Dec 16, 2021 at 05:52:12AM +0300, Dmitry Osipenko wrote:
12.12.2021 01:49, David Heidelberg пишет:
+unevaluatedProperties: false
+examples:
- |
- sound {
compatible = "nvidia,tegra-audio-rt5677-ryu",
"nvidia,tegra-audio-rt5677";
nvidia,model = "NVIDIA Tegra Ryu";
nvidia,audio-routing =
"Headphone", "LOUT2",
"Headphone", "LOUT1",
"Headset Mic", "MICBIAS1",
"IN1P", "Headset Mic",
"IN1N", "Headset Mic",
"DMIC L1", "Internal Mic 1",
"DMIC R1", "Internal Mic 1",
"DMIC L2", "Internal Mic 2",
"DMIC R2", "Internal Mic 2",
"Speaker", "PDM1L",
"Speaker", "PDM1R";
nvidia,i2s-controller = <&tegra_i2s1>;
nvidia,audio-codec = <&rt5677>;
nvidia,hp-det-gpios = <&gpio 143 0>;
nvidia,mic-present-gpios = <&gpio 132 1>;
nvidia,hp-en-gpios = <&rt5677 1 0>;
nvidia,dmic-clk-en-gpios = <&rt5677 2 1>;
I spotted that nvidia,dmic-clk-en-gpios is undocumented, but DTs and binding are passing the validation. We will make another patch to fix it.
Rob, could you please tell whether this is because unevaluatedProperties doesn't work yet or we're missing something?
If you update dt-schema.git to the latest "main" branch you should have most of what's needed to make unevaluatedProperties work. However, there seems to be an issue with some $referenced schemas setting additionalProperties to true and then that gets propogated to the schema that included it.
Rob came up with the patch below to fix that:
--- >8 --- diff --git a/dtschema/lib.py b/dtschema/lib.py index 3cc5e428b0eb..a0f22aab935a 100644 --- a/dtschema/lib.py +++ b/dtschema/lib.py @@ -367,6 +367,9 @@ def fixup_sub_schema(schema, is_prop): if not isinstance(schema, dict): return
+ if 'additionalProperties' in schema and schema['additionalProperties'] == True: + schema.pop('additionalProperties', None) + schema.pop('description', None) fixup_interrupts(schema) if is_prop: --- >8 ---
I'm currently running the tools based on that and it's indeed been flagging some properties as unevaluated that weren't there before.
Thierry