Hi Rob,
On Tue, Apr 16, 2019 at 04:36:18PM -0500, Rob Herring wrote:
On Mon, Apr 15, 2019 at 7:07 AM Maxime Ripard maxime.ripard@bootlin.com wrote:
The Allwinner SoCs feature an SPDIF controller across multiple SoC generations.
However, earlier generations were a bit simpler than the subsequent ones, and for example would always have RX and TX capabilities, and no reset lines.
In order to express this, let's create two YAML schemas instead of the free form text we had before.
The only difference is 'reset' is required in one? Perhaps better to just not make 'reset' required til we figure out how to handle a conditional like this. Seems like we discussed this and I probably said to split things?
We indeed discussed this, and this was one of the solutions to support this. I wanted to get the discussion started as of how exactly we want to support this kind of construct.
I looked it up a bit, and it looks like json schema 7 introduces conditionals that would allow us to deal with this nicely.
https://json-schema.org/understanding-json-schema/reference/conditionals.htm...
Is that something we can switch to while we have not a lot of schemas, or would that require some significant work?
I guess it's a judgement call depending on how different things are.
Possibly, we could handle this case like this:
allOf:
- $ref: allwinner,sun4i-a10-spdif.yaml
properties: resets: maxItems: 1
required:
- resets
Plus we'd need the 'allwinner,sun6i-a31-spdif' and other compatibles in both files. Note that you can't use 'additionalProperties: false' in either file in this case.
I don't really love this solution though.
Yeah, I'm not a big fan of it either.
Maxime
-- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com