Hi Morimoto-san,
On Mon, Feb 6, 2023 at 4:03 AM Kuninori Morimoto kuninori.morimoto.gx@renesas.com 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@linux-m68k.org
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