[PATCH 0/8] An effort to bring DT bindings compliance within U-boot
neil.armstrong at linaro.org
neil.armstrong at linaro.org
Thu Dec 14 15:53:11 CET 2023
Hi,
On 14/12/2023 14:50, Sumit Garg wrote:
> Prerquisite
s/Prerquisite/Prerequisite/
> -----------
>
> This patch series requires devicetree-rebasing git repo to be added as a
> subtree to the main U-boot repo via:
>
> $ git subtree add --prefix devicetree-rebasing \
> git://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git \
> v6.6-dts --squash
So I think the big question is: when should the subtree be updated ?
Because as we discussed in the previous GH pull request, if a bindings changes
was made in the upstream Linux DT, then the subtree update should wait until
the u-boot support is merged before updating. This could cause a lot of frustration.
And this could cause a lot of regressions, even more if both Linux and U-boot are
not maintained by the same people.
Neil
>
> Background
> ----------
>
> This effort started while I was reviewing patch series corresponding to
> Qcom platforms [1] which was about to import modified devicetree source
> files from Linux kernel. I suppose keeping devicetree files sync with
> Linux kernel without any DT bindings schema validation has been a pain
> for U-boot SoC/platform maintainers. There has been past discussions
> about a single DT repo but that hasn't come up and Linux kernel remained
> the place where DT source files as well as bindings are placed and
> maintained.
>
> However, Linux kernel DT maintainers proposed [2] for U-boot to rather
> use devicetree-rebasing repo [3] which is a forked copy from Linux
> kernel for DT source files as well as bindings. It is tagged at every
> Linux kernel major release or intermideate release candidates. So here I
> have tried to reuse that to bring DT bingings compliance as well as a
> standard way to maintain a regular sync of DT source files with Linux
> kernel.
>
> In order to maintain devicetree files sync, U-boot will maintains a Git
> subtree for devicetee-rebasing repo as `devicetee-rebasing/` sub-directory.
> It will be regularly updated with every new kernel major release via
> subtree pull as follows::
>
> $ git subtree pull --prefix devicetree-rebasing \
> git://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git \
> <release-tag> --squash
>
> The RFC/prototype for this series has been discussed with Linux DT
> maintainers as well as U-boot maintainers here [4]. Now we would like to
> reach out to wider U-boot community to seek feedback.
>
> [1] https://lore.kernel.org/all/CAFA6WYMLUD9cnkr=R0Uur+1UeTMkKjM2zDdMJtXb3nmrLk+pDg@mail.gmail.com/
> [2] https://lore.kernel.org/all/CAL_JsqKEjv2tSGmT+0ZiO7_qbBfhTycbGnhJhYpKDFzfO9jzDg@mail.gmail.com/
> [3] https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git/
> [4] https://github.com/u-boot/u-boot/pull/451
>
> Changes
> -------
>
> Traditionally, U-boot placed copies of devicetree source files from Linux
> kernel into `arch/<arch>/dts/<name>.dts`, which can be selected via:
>
> CONFIG_DEFAULT_DEVICE_TREE "<name>"
>
> SoC/board maintainers are encouraged to migrate to using mirrored copies
> from `devicetree-rebasing/` into `dts/arch/<arch>/<vendor>` via:
>
> CONFIG_OF_UPSTREAM=y
> CONFIG_DEFAULT_DEVICE_TREE "<vendor>/<name>"
>
> An example have been shown for Amlogic meson-gxbb SoC and corresponding
> derived boards via patch #7 and #8.
>
> Devicetree bindings schema checks
> ---------------------------------
>
> With devicetee-rebasing Git subtree, the devicetree bindings are also
> regularly synced with Linux kernel as `devicetree-rebasing/Bindings/`
> sub-directory. This allows U-boot to run devicetree bindings schema checks
> which will bring compliance to U-boot core/drivers regarding usage of
> devicetree.
>
> Dependencies
> ------------
>
> 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
>
> Several executables (dt-doc-validate, dt-mk-schema, dt-validate) will be
> installed. Ensure they are in your PATH (~/.local/bin by default).
>
> Recommended is also to install yamllint (used by dtschema when present).
>
> Running checks
> --------------
>
> In order to perform validation of DTB files, use the ``dtbs_check`` target:
>
> $ make dtbs_check
>
> It is also possible to run checks with a subset of matching schema files by
> setting the ``DT_SCHEMA_FILES`` variable to 1 or more specific schema files
> or patterns (partial match of a fixed string). Each file or pattern should
> be separated by ':'.
>
> $ make dtbs_check DT_SCHEMA_FILES=trivial-devices.yaml:rtc.yaml
> $ make dtbs_check DT_SCHEMA_FILES=/gpio/
> $ make dtbs_check DT_SCHEMA_FILES=trivial-devices.yaml
>
> Sumit Garg (8):
> Azure CI: Exclude devicetree-rebasing subtree for CONFIG checks
> Makefile: Add support for DT bindings schema checks
> scripts/Makefile.lib: Statically define *-u-boot.dtsi files location
> dts: Add alternative location for upstream DTB builds
> doc: devicetree: Updates for devicetree-rebasing subtree
> MAINTAINERS: Add myself as devicetree-rebasing maintainer
> dts: meson-gxbb: Switch to using upstream DT
> dts: meson-gxbb: Drop redundant devicetree files
>
> .azure-pipelines.yml | 3 +-
> MAINTAINERS | 6 +
> Makefile | 20 +-
> arch/arm/dts/Makefile | 8 -
> arch/arm/dts/meson-gxbb-kii-pro.dts | 140 ----
> arch/arm/dts/meson-gxbb-nanopi-k2.dts | 415 ------------
> arch/arm/dts/meson-gxbb-odroidc2.dts | 418 ------------
> arch/arm/dts/meson-gxbb-p200.dts | 100 ---
> arch/arm/dts/meson-gxbb-p201.dts | 26 -
> arch/arm/dts/meson-gxbb-p20x.dtsi | 250 -------
> arch/arm/dts/meson-gxbb-wetek-hub.dts | 58 --
> arch/arm/dts/meson-gxbb-wetek-play2.dts | 119 ----
> arch/arm/dts/meson-gxbb-wetek.dtsi | 292 --------
> arch/arm/dts/meson-gxbb.dtsi | 856 ------------------------
> configs/nanopi-k2_defconfig | 3 +-
> configs/odroid-c2_defconfig | 3 +-
> configs/p200_defconfig | 3 +-
> configs/p201_defconfig | 3 +-
> configs/videostrong-kii-pro_defconfig | 3 +-
> configs/wetek-hub_defconfig | 3 +-
> configs/wetek-play2_defconfig | 3 +-
> doc/develop/devicetree/control.rst | 108 ++-
> dts/Kconfig | 11 +
> dts/Makefile | 17 +-
> dts/arch/arm64/Makefile | 23 +
> dts/arch/arm64/amlogic | 1 +
> scripts/Makefile.lib | 42 +-
> 27 files changed, 204 insertions(+), 2730 deletions(-)
> delete mode 100644 arch/arm/dts/meson-gxbb-kii-pro.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-nanopi-k2.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-odroidc2.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-p200.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-p201.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-p20x.dtsi
> delete mode 100644 arch/arm/dts/meson-gxbb-wetek-hub.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-wetek-play2.dts
> delete mode 100644 arch/arm/dts/meson-gxbb-wetek.dtsi
> delete mode 100644 arch/arm/dts/meson-gxbb.dtsi
> create mode 100644 dts/arch/arm64/Makefile
> create mode 120000 dts/arch/arm64/amlogic
>
More information about the U-Boot-Custodians
mailing list