[PATCH v6 00/11] An effort to bring DT bindings compliance within U-Boot

Sumit Garg sumit.garg at linaro.org
Fri Mar 1 07:17:13 CET 2024


Hi Tom,

On Thu, 22 Feb 2024 at 15:06, Sumit Garg <sumit.garg at linaro.org> wrote:
>
> Changes in v6:
> --------------
> - v6_dt: https://github.com/b49020/u-boot/tree/v6_dt
> - Patch #3: Incorporate fix for sandbox CI failure.
> - Patch #6: Incorporate shell script comments from Marek.
> - Patch #8: Incorporate documentation review comments from Paul.
>

I haven't heard any major feedback/comments for v6. So can you pick up
this series for the U-Boot -next branch? As you may already be aware
that it is a dependency for [1] [2] [3]. Also, we would like to move
all new Qcom platforms to use upstream DT too.

[1] https://patchwork.ozlabs.org/project/uboot/list/?series=396399
[2] https://patchwork.ozlabs.org/project/uboot/list/?series=396742
[3] https://patchwork.ozlabs.org/project/uboot/list/?series=396992&state=*

-Sumit

> Changes in v5:
> --------------
> - Rebased on tip of master (050a9b981d6a835133521b599be3ae189ce70f41)
> - Created v5_dt branch for testing purposes:
>   https://github.com/b49020/u-boot/tree/v5_dt
> - Patch #6: Added support to cherry-pick fixes in subtree update script.
>   Also, used https:// instead of git://.
> - Patch #7: Fixed inappropriate documentation update.
> - Patch #8: Document how to cherry-pick fixes from devicetree-rebasing
>   tree.
>
> Changes in v4:
> --------------
> - Switched subtree to be imported as dts/upstream sub-directory rather
>   than devicetree-rebasing sub-directory to better suite U-Boot
>   directory structure.
> - Since we now have v6.7-dts tag available now, so switch subtree to
>   that from its beginning.
> - Patch #2: Incorporate build fix to adjust Bindings Makefile rules to
>   old U-Boot Kbuild infrastructure.
> - Patch #3: Incorporate fix to resolve rk3399 migration issue reported
>   by Simon.
> - Patch #4: New patch to reuse upstream DT includes by U-Boot as per
>   Brian's use-case for TI K3 SoCs.
> - Patch #5: Added a note to OF_UPSTREAM Kconfig option.
> - Patch #6: New patch to add script dts/update-dts-subtree.sh as per
>   Rob's comments.
> - Patch #7: Separate patch to align documentation to use Kconfig symbols
>   instead.
> - Patch #8: Clarify subtree uprev schedule as a separate documentation
>   section. Also, fixed documentation typos.
> - Patch #9: Added commit description.
>
> Changes in v3:
> --------------
> - Patch #4: Minor commit message update
> - Patch #5: Replace CONFIG_* with Kconfig options
> - Patch #7: Dropped Makefile portion and enabled OF_UPSTREAM for SoC
>   instead.
> - Patch #1, #3, #6 and #8: Picked up review tags
>
> Changes in v2:
> --------------
> - Patch #1: excluded gitab CI config check and added commit description.
> - Patch #3: s/UBOOT_DTSI_LOC/u_boot_dtsi_loc/
> - Patch #4: s/DEVICE_TREE_LOC/dt_dir/ and s/U-boot/U-Boot/
> - Patch #5: s/U-boot/U-Boot/
> - Patch #6 and #7: Picked up review tags
>
> 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 dts/upstream \
>       https://git.kernel.org/pub/scm/linux/kernel/git/devicetree/devicetree-rebasing.git \
>       v6.7-dts --squash
>
> 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 `dts/upstream` sub-directory.
> U-Boot will regularly sync `dts/upstream/` subtree whenever the next window
> opens with the next available kernel major release.
> `dts/update-dts-subtree.sh` script provides a wrapper around git subtree
> pull command, usage from the top level U-Boot source tree, run:
>
> $ ./dts/update-dts-subtree.sh pull <devicetree-rebasing-release-tag>
>
> If required it is also possible to cherry-pick fixes from
> devicetree-rebasing tree prior to next sync, usage:
>
> $ ./dts/update-dts-subtree.sh pick <devicetree-rebasing-commit-id>
>
> 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 setting
> "<name>" when prompted for `DEFAULT_DEVICE_TREE` by Kconfig.
>
> SoC/board maintainers are encouraged to migrate to use synced copies from
> `dts/upstream/src/<arch>/<vendor>`. To do that enable `OF_UPSTREAM` for the
> SoC being used via Kconfig and set up "<vendor>/<name>" when prompted for
> `DEFAULT_DEVICE_TREE` by Kconfig.
>
> An example have been shown for Amlogic meson-gxbb SoC and corresponding
> derived boards via patch #10 and #11.
>
> Devicetree bindings schema checks
> ---------------------------------
>
> With devicetee-rebasing Git subtree, the devicetree bindings are also
> regularly synced with Linux kernel as `dts/upstream/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).
>
> $ apt install yamllint
>
> 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 (11):
>   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
>   Makefile: Allow upstream DT subtree to provide DT includes
>   dts: Add alternative location for upstream DTB builds
>   dts: Add script to uprev dts/upstream subtree
>   doc: devicetree: Align documentation to use Kconfig options
>   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 +-
>  .gitlab-ci.yml                          |   3 +-
>  MAINTAINERS                             |   5 +
>  Makefile                                |  23 +-
>  arch/arm/dts/Makefile                   |   8 -
>  arch/arm/dts/meson-gxbb-kii-pro.dts     | 140 ----
>  arch/arm/dts/meson-gxbb-nanopi-k2.dts   | 426 ------------
>  arch/arm/dts/meson-gxbb-odroidc2.dts    | 414 -----------
>  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            | 870 ------------------------
>  arch/arm/mach-meson/Kconfig             |   1 +
>  configs/nanopi-k2_defconfig             |   2 +-
>  configs/odroid-c2_defconfig             |   2 +-
>  configs/p200_defconfig                  |   2 +-
>  configs/p201_defconfig                  |   2 +-
>  configs/videostrong-kii-pro_defconfig   |   2 +-
>  configs/wetek-hub_defconfig             |   2 +-
>  configs/wetek-play2_defconfig           |   2 +-
>  doc/develop/devicetree/control.rst      | 159 +++--
>  dts/Kconfig                             |  16 +
>  dts/Makefile                            |  17 +-
>  dts/update-dts-subtree.sh               |  48 ++
>  dts/upstream/Bindings/Makefile          |   6 +-
>  dts/upstream/src/arm64/Makefile         |  14 +
>  scripts/Makefile.lib                    |  50 +-
>  30 files changed, 283 insertions(+), 2779 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 100755 dts/update-dts-subtree.sh
>  create mode 100644 dts/upstream/src/arm64/Makefile
>
> --
> 2.34.1
>


More information about the U-Boot mailing list