mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-22 12:54:37 +00:00
Makefile: Add support for DT bindings schema checks
This adds the build infrastructure for checking DT binding schema documents and validating dtb files using the binding schema. Here we use devicetree-rebasing subtree to provide the DT bindings. Along with that adapt dts/upstream/Bindings/Makefile to align with old U-Boot Kbuild infrastructure. 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. Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> Signed-off-by: Sumit Garg <sumit.garg@linaro.org>
This commit is contained in:
parent
8f31c85cf9
commit
4be3fe9d80
3 changed files with 36 additions and 7 deletions
20
Makefile
20
Makefile
|
@ -1158,12 +1158,28 @@ endif
|
||||||
@# disabling OF_BOARD.
|
@# disabling OF_BOARD.
|
||||||
$(call cmd,ofcheck,$(KCONFIG_CONFIG))
|
$(call cmd,ofcheck,$(KCONFIG_CONFIG))
|
||||||
|
|
||||||
PHONY += dtbs
|
PHONY += dtbs dtbs_check
|
||||||
dtbs: dts/dt.dtb
|
dtbs: dts/dt.dtb
|
||||||
@:
|
@:
|
||||||
dts/dt.dtb: u-boot
|
dts/dt.dtb: dtbs_prepare u-boot
|
||||||
$(Q)$(MAKE) $(build)=dts dtbs
|
$(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 := dts/upstream/Bindings
|
||||||
|
dt_binding_check: scripts_dtc
|
||||||
|
$(Q)$(MAKE) $(build)=$(DT_BINDING_DIR) $(DT_BINDING_DIR)/processed-schema.json
|
||||||
|
|
||||||
quiet_cmd_copy = COPY $@
|
quiet_cmd_copy = COPY $@
|
||||||
cmd_copy = cp $< $@
|
cmd_copy = cp $< $@
|
||||||
|
|
||||||
|
|
|
@ -47,9 +47,9 @@ quiet_cmd_mk_schema = SCHEMA $@
|
||||||
rm -f $$f
|
rm -f $$f
|
||||||
|
|
||||||
define rule_chkdt
|
define rule_chkdt
|
||||||
$(if $(DT_SCHEMA_LINT),$(call cmd,yamllint),)
|
$(if $(DT_SCHEMA_LINT),$(call echo-cmd,yamllint) $(cmd_yamllint),); \
|
||||||
$(call cmd,chk_bindings)
|
$(call echo-cmd,chk_bindings) $(cmd_chk_bindings); \
|
||||||
$(call cmd,mk_schema)
|
$(call echo-cmd,mk_schema) $(cmd_mk_schema)
|
||||||
endef
|
endef
|
||||||
|
|
||||||
DT_DOCS = $(patsubst $(srctree)/%,%,$(shell $(find_all_cmd)))
|
DT_DOCS = $(patsubst $(srctree)/%,%,$(shell $(find_all_cmd)))
|
||||||
|
|
|
@ -356,8 +356,21 @@ endif
|
||||||
|
|
||||||
dtsi_include_list_deps = $(addprefix $(obj)/,$(subst $(quote),,$(dtsi_include_list)))
|
dtsi_include_list_deps = $(addprefix $(obj)/,$(subst $(quote),,$(dtsi_include_list)))
|
||||||
|
|
||||||
$(obj)/%.dtb: $(src)/%.dts $(DTC) $(dtsi_include_list_deps) FORCE
|
ifneq ($(CHECK_DTBS),)
|
||||||
$(call if_changed_dep,dtc)
|
DT_CHECKER ?= dt-validate
|
||||||
|
DT_CHECKER_FLAGS ?= $(if $(DT_SCHEMA_FILES),-l $(DT_SCHEMA_FILES),-m)
|
||||||
|
DT_BINDING_DIR := dts/upstream/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)
|
pre-tmp = $(subst $(comma),_,$(dot-target).pre.tmp)
|
||||||
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
|
dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
|
||||||
|
|
Loading…
Add table
Reference in a new issue