Re: [PATCH] dt-bindings: clk: qcom: Fix self-validation, split, and clean cruft

From: Rob Herring
Date: Wed Jan 29 2020 - 18:50:28 EST


On Wed, Jan 29, 2020 at 5:26 PM Doug Anderson <dianders@xxxxxxxxxxxx> wrote:
>
> Hi,
>
> On Wed, Jan 29, 2020 at 2:01 PM Rob Herring <robh+dt@xxxxxxxxxx> wrote:
> >
> > On Wed, Jan 29, 2020 at 3:23 PM Douglas Anderson <dianders@xxxxxxxxxxxx> wrote:
> > >
> > > The 'qcom,gcc.yaml' file failed self-validation (dt_binding_check)
> > > because it required a property to be either (3 entries big),
> > > (3 entries big), or (7 entries big), but not more than one of those
> > > things. That didn't make a ton of sense.
> > >
> > > This patch splits all of the exceptional device trees (AKA those that
> > > would have needed if/then/else rules) from qcom,gcc.yaml. It also
> > > cleans up some cruft found while doing that.
> > >
> > > After this lands, this worked for me atop clk-next:
> > > for f in \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-apq8064.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-ipq8074.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-msm8996.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-msm8998.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-qcs404.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-sc7180.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc-sm8150.yaml \
> > > Documentation/devicetree/bindings/clock/qcom,gcc.yaml; do \
> > > ARCH=arm64 make dt_binding_check DT_SCHEMA_FILES=$f; \
> > > ARCH=arm64 make dtbs_check DT_SCHEMA_FILES=$f; \
> > > done
> >
> > Note that using DT_SCHEMA_FILES may hide some errors in examples as
> > all other schemas (including the core ones) are not used for
> > validation. So just 'make dt_binding_check' needs to pass (ignoring
> > any other unrelated errors as it breaks frequently). Supposedly a
> > patch is coming explaining this in the documentation.
>
> That seems like it's going to be a huge pain going forward, but OK.

Use of DT_SCHEMA_FILES hiding problems or having to run 'make
dt_binding_check' on everything?

I could probably rework things such that you can check a single
binding example against all schema, but dtbs still get validated by
just a single schema.

The other option is proper makefiles in every directory so you can do
'make Documentation/devicetree/bindings/clk/'. But like compiling a
directory, that doesn't catch all issues (linking).

> I
> kept running "dtbs_check" with the DT_SCHEMA_FILES since I guess this
> was OK? Then I ran this atop next-20200129:

Yes, that's really where DT_SCHEMA_FILES is most useful IMO.

> # Delete broken yaml:
> rm Documentation/devicetree/bindings/pci/intel-gw-pcie.yaml

Been waiting on the fix to be applied since Dec...

> ARCH=arm64 make dt_binding_check | grep 'clock/qcom'
>
> ...and that seemed OK to me. I've updated the commit message to
> include what I did. Hopefully it's right.

Probably is. There are cases where a new schema breaks another file's
example. If someone has a gcc node in another example for example.

Rob