Hi, On Wed, Apr 17, 2019 at 11:04:22AM -0500, Rob Herring wrote: > On Wed, Apr 17, 2019 at 1:43 AM Maxime Ripard <maxime.ripard@xxxxxxxxxxx> wrote: > > 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@xxxxxxxxxxx> 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.html > > > > Is that something we can switch to while we have not a lot of schemas, > > or would that require some significant work? > > We need check if the json-schema library supports this yet. I think it > should as there was an issue for it which is closed now. Apparently, it's supported since 3.0.0, that got released on the 24th of february. I mass converted the yaml-bindings code to use the draft 7, and the tests are passing (and a dtbs_check run seems legit too). So that went smoothly... > We'll then need to update the meta-schema and maybe the schema fixups > to handle this case. ... except that after adding if, then and else to the meta-schemas, a schema using that construct doesn't do anything (well, anything more than what it is doing without if / then / else). Apart from the fact that it doesn't work as expected (yet), the syntax is pretty elegant, so I guess we should go for that. > We should have a test case in the library too. > Test cases are important given that if you get schemas wrong, the > result is silence. ACK Maxime -- Maxime Ripard, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Attachment:
signature.asc
Description: PGP signature