[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