16.12.2021 16:44, Thierry Reding пишет: > 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. Thank you! The unevaluatedProperties indeed works properly using this patch.