Hi Sumit, On Thu, 14 Dec 2023 at 06:51, Sumit Garg <sumit.g...@linaro.org> wrote: > > This adds the build infrastructure for checking DT binding schema > documents and validating dtb files using the binding schema. Here we use > devicetree-rebasing directory to provide the DT bindings. > > Dependency: > ----------- > > The DT schema project must be installed in order to validate the DT schema > binding documents and validate DTS files using the DT schema. The DT schema > project can be installed with pip:: > > pip3 install dtschema > > Note that 'dtschema' installation requires 'swig' and Python development > files installed first. On Debian/Ubuntu systems:: > > apt install swig python3-dev > > Testing: > -------- > > Build dts files and check using DT binding schema: > $ make dtbs_check > > Optionally, DT_SCHEMA_FILES can be passed in with a schema file(s) to > use for validation. This makes it easier to find and fix errors > generated by a specific schema. > > Note, at this point dtbs_check is an optional build target as there are > many warnings generated due to custom DT properties used by many > platforms in u-boot. It is expected with these checks that compliance > with DT bindings to take place. Once that's done it can be added to CI > builds to remain compliant with DT bindings. > > Signed-off-by: Sumit Garg <sumit.g...@linaro.org> > --- > Makefile | 20 ++++++++++++++++++-- > scripts/Makefile.lib | 17 +++++++++++++++-- > 2 files changed, 33 insertions(+), 4 deletions(-) > > diff --git a/Makefile b/Makefile > index 750bbdb1b71..d8d168cd4c3 100644 > --- a/Makefile > +++ b/Makefile > @@ -1158,12 +1158,28 @@ endif > @# disabling OF_BOARD. > $(call cmd,ofcheck,$(KCONFIG_CONFIG)) > > -PHONY += dtbs > +PHONY += dtbs dtbs_check > dtbs: dts/dt.dtb > @: > -dts/dt.dtb: u-boot > +dts/dt.dtb: dtbs_prepare u-boot > $(Q)$(MAKE) $(build)=dts dtbs > > +dtbs_prepare: prepare3 > + > +ifneq ($(filter dtbs_check, $(MAKECMDGOALS)),) > +export CHECK_DTBS=y > +endif > + > +ifneq ($(CHECK_DTBS),) > +dtbs_prepare: dt_binding_check > +endif > + > +dtbs_check: dt_binding_check dtbs > + > +DT_BINDING_DIR := devicetree-rebasing/Bindings > +dt_binding_check: scripts_dtc > + $(Q)$(MAKE) $(build)=$(DT_BINDING_DIR) > $(DT_BINDING_DIR)/processed-schema.json > + > quiet_cmd_copy = COPY $@ > cmd_copy = cp $< $@ > > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib > index 16bbc277a9f..27b9437027c 100644 > --- a/scripts/Makefile.lib > +++ b/scripts/Makefile.lib > @@ -356,8 +356,21 @@ endif > > dtsi_include_list_deps = $(addprefix $(obj)/,$(subst > $(quote),,$(dtsi_include_list))) > > -$(obj)/%.dtb: $(src)/%.dts $(DTC) $(dtsi_include_list_deps) FORCE > - $(call if_changed_dep,dtc) > +ifneq ($(CHECK_DTBS),) > +DT_CHECKER ?= dt-validate > +DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m) > +DT_BINDING_DIR := devicetree-rebasing/Bindings > +DT_TMP_SCHEMA := $(objtree)/$(DT_BINDING_DIR)/processed-schema.json > + > +quiet_cmd_dtb = DTC_CHK $@ > + cmd_dtb = $(cmd_dtc) ; $(DT_CHECKER) $(DT_CHECKER_FLAGS) -u > $(srctree)/$(DT_BINDING_DIR) -p $(DT_TMP_SCHEMA) $@ || true > +else > +quiet_cmd_dtb = $(quiet_cmd_dtc) > + cmd_dtb = $(cmd_dtc) > +endif > + > +$(obj)/%.dtb: $(src)/%.dts $(DTC) $(dtsi_include_list_deps) $(DT_TMP_SCHEMA) > FORCE > + $(call if_changed_dep,dtb) > > pre-tmp = $(subst $(comma),_,$(dot-target).pre.tmp) > dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) > -- > 2.34.1 >
This is great. Can you put the commit message in doc/ somewhere? Regards, Simon