Re: [PATCH 04/10] dt-bindings: media: nxp,imx8mq-vpu: Support split G1 and G2 nodes with vpu-blk-ctrl

From: Rob Herring
Date: Fri Dec 10 2021 - 10:36:29 EST


On Thu, Dec 09, 2021 at 05:36:04AM -0600, Adam Ford wrote:
> On Thu, Dec 9, 2021 at 4:26 AM Ezequiel Garcia
> <ezequiel@xxxxxxxxxxxxxxxxxxxx> wrote:
> >
> > Hi,
> >
> > Thanks for the patch.
> >
> > On Wed, Dec 08, 2021 at 04:50:23PM -0600, Adam Ford wrote:
> > > The G1 and G2 are separate decoder blocks that are enabled by the
> > > vpu-blk-ctrl power-domain controller, which now has a proper driver.
> > > Update the bindings to support separate nodes for the G1 and G2
> > > decoders using the proper driver or the older unified node with
> > > the legacy controls.
> > >
> > > To be compatible with older DT the driver, mark certain items as
> > > deprecated and retain the backwards compatible example.
> > >
> > > Signed-off-by: Adam Ford <aford173@xxxxxxxxx>
> > > ---
> > > .../bindings/media/nxp,imx8mq-vpu.yaml | 83 ++++++++++++++-----
> > > 1 file changed, 64 insertions(+), 19 deletions(-)
> > >
> > > diff --git a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
> > > index 762be3f96ce9..eeb7bd6281f9 100644
> > > --- a/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
> > > +++ b/Documentation/devicetree/bindings/media/nxp,imx8mq-vpu.yaml
> > > @@ -15,29 +15,39 @@ description:
> > >
> > > properties:
> > > compatible:
> > > - const: nxp,imx8mq-vpu
> > > + oneOf:
> > > + - const: nxp,imx8mq-vpu
> > > + deprecated: true
> > > + - const: nxp,imx8mq-vpu-g1
> > > + - const: nxp,imx8mq-vpu-g2
> > >
> > > reg:
> > > + minItems: 1
> > > maxItems: 3
> >
> > Is it really useful to keep the deprecated binding nxp,imx8mq-vpu
> > as something supported by the binding file?
>
> Since I was told that the driver needed to be backwards compatible, i
> wanted to make sure that any attempts to build the old device tree
> would not fail

I'm not convinced changing the binding at all is correct. 'The driver
structure is changing and I want the binding to align with it' is not a
reason. Are G1 and G2 actually separate, independent blocks where we
could have 1 or both of them? And what about other platforms using this
block?

Even if the driver handles the old binding, a new dtb with an old kernel
is broken. It's up to the platform to care or not, but you have to
highlight that.


> > In other words, can we drop the deprecated binding from this file,
> > while keeping the support in the driver for legacy device-trees?
>
> I was trying to represent both the old driver binding and the new one
> at the same time. I thought that's what I was told to do.

I don't care so much if we have a schema for old binding. I'd rather
have warnings if the binding has not been updated. Eventually I want to
be able to test for compatibility by testing DTs with different schema
versions. We've got to get to 0 warnings first though...

Rob