Hi Morimoto-san, On Mon, Feb 6, 2023 at 4:03 AM Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx> wrote: > > > The "required" with if - then - else on "rcar_sound,ssi" is > > > always match to "then" even though it is checking "renesas,rcar_sound-gen4" or not. > > > Why ?? Is it my fault ?? > > I'm not sure why but some "if - then - else" doesn't work correctly for me. > One concern is that it is under "patternProperties". > Non "patternProperties" case is works well. > > This is just sample case. > In below case, only gen4 case requires "foo/bar" if my understanding was correct. > But I get error "foo/bar are required" on *all* compatible. > > It is my fault ? > > --- sample ----------- > rcar_sound,ssi: > ... > patternProperties: > "^ssi-[0-9]$": > ... > allOf: > - if: > properties: > compatible: > contains: > => const: renesas,rcar_sound-gen4 > then: > required: > => - foo > => - bar As it is under patternProperties, the "if: properties" applies to the properties under the ssi node, where you do not have any compatible value (and definitely not the "renesas,rcar_sound-gen4" value, which belongs to the _parent_ of the ssi node). So I think the only solution is to move the "if" up, and thus duplicate the ssi node description: if: properties: compatible: contains: const: renesas,rcar_sound-gen4 then: patternProperties: "^ssi-[0-9]$": ... else: patternProperties: "^ssi-[0-9]$": ... Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds