dt: build overlays
Subsystems (4)
v7 cover dt: build overlays
Hi,
This patchset makes necessary changes to the kernel to add support for building overlays (%.dtbo) and the required fdtoverlay tool. This also builds static_test.dtb using most of the existing overlay tests present in drivers/of/unittest-data/ for better test coverage.
Note that in order for anyone to test this stuff, you need to manually run the ./update-dtc-source.sh script once to fetch the necessary changes from the external DTC project (i.e. fdtoverlay.c and this[1] patch).
I have tested this patchset for static and runtime testing (on Hikey board) and no issues were reported.
V7:
- Add a comment in scripts/dtc/Makefile
- Add Ack from Masahiro for patch 4/6.
- Drop word "merge" from commit log of 2/6.
- Split apply_static_overlay, static_test.dtb, and static_base.dts into two parts to handle overlay_base.dts and testcases.dts separately.
V6:
- Create separate rules for dtbo-s and separate entries in .gitignore in 4/6 (Masahiro).
- A new file layout for handling all overlays for existing and new tests 5/6 (Frank).
- Include overlay.dts as well now in 6/6 (Frank).
V5:
- Don't reuse DTC_SOURCE for fdtoverlay.c in patch 1/5 (Frank).
- Update .gitignore and scripts/Makefile.dtbinst, drop dtbo-y syntax and DTC_FLAGS += -@ in patch 4/5 (Masahiro).
- Remove the intermediate dtb, rename output to static_test.dtb, don't use overlay.dtb and overlay_base.dtb for static builds, improved layout/comments in Makefile for patch 5/5 (Frank).
--
Viresh
[1] https://github.com/dgibson/dtc/commit/163f0469bf2ed8b2fe5aa15bc796b93c70243ddc
[2] https://lore.kernel.org/lkml/[email protected]/
Viresh Kumar (6):
scripts: dtc: Fetch fdtoverlay.c from external DTC project
scripts: dtc: Build fdtoverlay tool
scripts: dtc: Remove the unused fdtdump.c file
kbuild: Add support to build overlays (%.dtbo)
of: unittest: Create overlay_common.dtsi and testcases_common.dtsi
of: unittest: Statically apply overlays using fdtoverlay
.gitignore | 1 + Makefile | 5 +- drivers/of/unittest-data/Makefile | 56 ++++++ drivers/of/unittest-data/overlay_base.dts | 90 +--------- drivers/of/unittest-data/overlay_common.dtsi | 91 ++++++++++ drivers/of/unittest-data/static_base_1.dts | 4 + drivers/of/unittest-data/static_base_2.dts | 4 + drivers/of/unittest-data/testcases.dts | 18 +- .../of/unittest-data/testcases_common.dtsi | 19 ++ .../of/unittest-data/tests-interrupts.dtsi | 7 - scripts/Makefile.dtbinst | 3 + scripts/Makefile.lib | 5 + scripts/dtc/Makefile | 8 +- scripts/dtc/fdtdump.c | 163 ------------------ scripts/dtc/update-dtc-source.sh | 3 +- 15 files changed, 204 insertions(+), 273 deletions(-) create mode 100644 drivers/of/unittest-data/overlay_common.dtsi create mode 100644 drivers/of/unittest-data/static_base_1.dts create mode 100644 drivers/of/unittest-data/static_base_2.dts create mode 100644 drivers/of/unittest-data/testcases_common.dtsi delete mode 100644 scripts/dtc/fdtdump.c
base-commit: 6ee1d745b7c9fd573fba142a2efdad76a9f1cb04
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
PATCH v7 1/6 scripts: dtc: Fetch fdtoverlay.c from external DTC project
We will start building overlays for platforms soon in the kernel and would need fdtoverlay tool going forward. Lets start fetching it.
--- scripts/dtc/update-dtc-source.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
scripts/dtc/update-dtc-source.sh +2 -1
@@ -37,6 +37,7 @@ DTC_SOURCE="checks.c data.c dtc.c dtc.h flattree.c fstree.c livetree.c srcpos.c LIBFDT_SOURCE="fdt.c fdt.h fdt_addresses.c fdt_empty_tree.c \ fdt_overlay.c fdt_ro.c fdt_rw.c fdt_strerror.c fdt_sw.c \ fdt_wip.c libfdt.h libfdt_env.h libfdt_internal.h" +FDTOVERLAY_SOURCE=fdtoverlay.c get_last_dtc_version() { git log --oneline scripts/dtc/ | grep 'upstream' | head -1 | sed -e 's/^.* \(.*\)/\1/'
@@ -54,7 +55,7 @@ dtc_log=$(git log --oneline ${last_dtc_ver}..) # Copy the files into the Linux tree cd $DTC_LINUX_PATH -for f in $DTC_SOURCE; do +for f in $DTC_SOURCE $FDTOVERLAY_SOURCE; do cp ${DTC_UPSTREAM_PATH}/${f} ${f} git add ${f} done
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
PATCH v7 2/6 scripts: dtc: Build fdtoverlay tool
In reply to Viresh KumarWe will start building overlays for platforms soon in the kernel and would need fdtoverlay going forward. Lets start building it.
The fdtoverlay program applies one or more overlay dtb blobs to a base dtb blob. The kernel build system would later use fdtoverlay to generate the overlaid blobs based on platform specific configurations.
--- scripts/dtc/Makefile | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)
scripts/dtc/Makefile +7 -1
@@ -1,13 +1,19 @@ # SPDX-License-Identifier: GPL-2.0 # scripts/dtc makefile -hostprogs-always-$(CONFIG_DTC) += dtc +hostprogs-always-$(CONFIG_DTC) += dtc fdtoverlay hostprogs-always-$(CHECK_DT_BINDING) += dtc dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \ srcpos.o checks.o util.o dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o +# The upstream project builds libfdt as a separate library. We are choosing to +# instead directly link the libfdt object files into fdtoverlay. +libfdt-objs := fdt.o fdt_ro.o fdt_wip.o fdt_sw.o fdt_rw.o fdt_strerror.o fdt_empty_tree.o fdt_addresses.o fdt_overlay.o +libfdt = $(addprefix libfdt/,$(libfdt-objs)) +fdtoverlay-objs := $(libfdt) fdtoverlay.o util.o + # Source files need to get at the userspace version of libfdt_env.h to compile HOST_EXTRACFLAGS += -I $(srctree)/$(src)/libfdt
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
PATCH v7 3/6 scripts: dtc: Remove the unused fdtdump.c file
In reply to Viresh KumarThis was copied from external DTC repository long back and isn't used anymore. Over that the dtc tool can be used to generate the dts source back from the dtb. Remove the unused fdtdump.c file.
--- scripts/dtc/fdtdump.c | 163 ------------------------------------------ 1 file changed, 163 deletions(-) delete mode 100644 scripts/dtc/fdtdump.c
scripts/dtc/fdtdump.c deleted +0 -163
@@ -1,163 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* -* fdtdump.c - Contributed by Pantelis Antoniou <pantelis.antoniou AT gmail.com> -*/ - -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <ctype.h> - -#include <fdt.h> -#include <libfdt_env.h> - -#include "util.h" - -#define ALIGN (x, a) (((x) + ((a) - 1)) & ~((a) - 1)) -#define PALIGN (p, a) ((void *)(ALIGN((unsigned long)(p), (a)))) -#define GET_CELL (p) (p += 4, *((const uint32_t *)(p-4))) - -static void print_data (const char *data,int len) -{ -int i; -const char *p = data; - -/* no data, don't print */ -if (len ==0 ) -return ; - -if (util_is_printable_string (data, len)) { -printf (" = \"%s\"" , (const char *)data); - }else if ((len %4 ) ==0 ) { -printf (" = <" ); -for (i =0 ; i < len; i +=4 ) -printf ("0x%08x%s" ,fdt32_to_cpu (GET_CELL (p)), - i < (len -4 ) ?" " :"" ); -printf (">" ); - }else { -printf (" = [" ); -for (i =0 ; i < len; i++) -printf ("%02x%s" , *p++, i < len -1 ?" " :"" ); -printf ("]" ); - } -} - -static void dump_blob (void *blob) -{ -struct fdt_header *bph = blob; -uint32_t off_mem_rsvmap =fdt32_to_cpu (bph->off_mem_rsvmap); -uint32_t off_dt =fdt32_to_cpu (bph->off_dt_struct); -uint32_t off_str =fdt32_to_cpu (bph->off_dt_strings); -struct fdt_reserve_entry *p_rsvmap = - (struct fdt_reserve_entry *)((char *)blob + off_mem_rsvmap); -const char *p_struct = (const char *)blob + off_dt; -const char *p_strings = (const char *)blob + off_str; -uint32_t version =fdt32_to_cpu (bph->version); -uint32_t totalsize =fdt32_to_cpu (bph->totalsize); -uint32_t tag; -const char *p, *s, *t; -int depth, sz, shift; -int i; -uint64_t addr, size; - - depth =0 ; - shift =4 ; - -printf ("/dts-v1/;\n" ); -printf ("// magic:\t\t0x%x\n" ,fdt32_to_cpu (bph->magic)); -printf ("// totalsize:\t\t0x%x (%d)\n" , totalsize, totalsize); -printf ("// off_dt_struct:\t0x%x\n" , off_dt); -printf ("// off_dt_strings:\t0x%x\n" , off_str); -printf ("// off_mem_rsvmap:\t0x%x\n" , off_mem_rsvmap); -printf ("// version:\t\t%d\n" , version); -printf ("// last_comp_version:\t%d\n" , -fdt32_to_cpu (bph->last_comp_version)); -if (version >=2 ) -printf ("// boot_cpuid_phys:\t0x%x\n" , -fdt32_to_cpu (bph->boot_cpuid_phys)); - -if (version >=3 ) -printf ("// size_dt_strings:\t0x%x\n" , -fdt32_to_cpu (bph->size_dt_strings)); -if (version >=17 ) -printf ("// size_dt_struct:\t0x%x\n" , -fdt32_to_cpu (bph->size_dt_struct)); -printf ("\n" ); - -for (i =0 ; ; i++) { - addr =fdt64_to_cpu (p_rsvmap[i].address); - size =fdt64_to_cpu (p_rsvmap[i].size); -if (addr ==0 && size ==0 ) -break ; - -printf ("/memreserve/ %llx %llx;\n" , - (unsigned long long )addr, (unsigned long long )size); - } - - p = p_struct; -while ((tag =fdt32_to_cpu (GET_CELL (p))) !=FDT_END ) { - -/* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */ - -if (tag ==FDT_BEGIN_NODE ) { - s = p; - p =PALIGN (p +strlen (s) +1 ,4 ); - -if (*s =='\0' ) - s ="/" ; - -printf ("%*s%s {\n" , depth * shift,"" , s); - - depth++; -continue ; - } - -if (tag ==FDT_END_NODE ) { - depth--; - -printf ("%*s};\n" , depth * shift,"" ); -continue ; - } - -if (tag ==FDT_NOP ) { -printf ("%*s// [NOP]\n" , depth * shift,"" ); -continue ; - } - -if (tag !=FDT_PROP ) { -fprintf (stderr,"%*s ** Unknown tag 0x%08x\n" , depth * shift,"" , tag); -break ; - } - sz =fdt32_to_cpu (GET_CELL (p)); - s = p_strings +fdt32_to_cpu (GET_CELL (p)); -if (version <16 && sz >=8 ) - p =PALIGN (p,8 ); - t = p; - - p =PALIGN (p + sz,4 ); - -printf ("%*s%s" , depth * shift,"" , s); -print_data (t, sz); -printf (";\n" ); - } -} - - -int main (int argc,char *argv[]) -{ -char *buf; - -if (argc <2 ) { -fprintf (stderr,"supply input filename\n" ); -return 5 ; - } - - buf =utilfdt_read (argv[1 ]); -if (buf) -dump_blob (buf); -else -return 10 ; - -return 0 ; -}
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
PATCH v7 4/6 kbuild: Add support to build overlays (%.dtbo)
In reply to Viresh KumarAdd support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have .dtbo extension to distinguish it from normal blobs.
--- .gitignore | 1 + Makefile | 5 ++++- scripts/Makefile.dtbinst | 3 +++ scripts/Makefile.lib | 5 +++++ 4 files changed, 13 insertions(+), 1 deletion(-)
.gitignore +1 -0
@@ -18,6 +18,7 @@ *.c.[012]*.* *.dt.yaml *.dtb +*.dtbo *.dtb.S *.dwo *.elf
Makefile +4 -1
@@ -1337,6 +1337,9 @@ ifneq ($(dtstree),) %.dtb: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ +%.dtbo: include/config/kernel.release scripts_dtc + $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ + PHONY += dtbs dtbs_install dtbs_check dtbs: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree)
@@ -1816,7 +1819,7 @@ clean: $(clean-dirs) @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ \( -name '*.[aios]' -o -name '*.ko' -o -name '.*.cmd' \ -o -name '*.ko.*' \ - -o -name '*.dtb' -o -name '*.dtb.S' -o -name '*.dt.yaml' \ + -o -name '*.dtb' -o -name '*.dtbo' -o -name '*.dtb.S' -o -name '*.dt.yaml' \ -o -name '*.dwo' -o -name '*.lst' \ -o -name '*.su' -o -name '*.mod' \ -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \
scripts/Makefile.dtbinst +3 -0
@@ -29,6 +29,9 @@ quiet_cmd_dtb_install = INSTALL $@ $(dst)/%.dtb: $(obj)/%.dtb $(call cmd,dtb_install) +$(dst)/%.dtbo: $(obj)/%.dtbo + $(call cmd,dtb_install) + PHONY += $(subdirs) $(subdirs): $(Q)$(MAKE) $(dtbinst)=$@ dst=$(patsubst $(obj)/%,$(dst)/%,$@)
scripts/Makefile.lib +5 -0
@@ -86,7 +86,9 @@ extra-$(CONFIG_OF_ALL_DTBS) += $(dtb-) ifneq ($(CHECK_DTBS),) extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y)) +extra-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y)) extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-)) +extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-)) endif # Add subdir path
@@ -327,6 +329,9 @@ cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) +$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE + $(call if_changed_dep,dtc) + DT_CHECKER ?= dt-validate DT_BINDING_DIR := Documentation/devicetree/bindings # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Hi Viresh,
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)
Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?
Quoted 4 lines
.dtbo extension to distinguish it from normal blobs.
Acked-by Masahiro Yamada <[email protected]>Signed-off-by Viresh Kumar <[email protected]>
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Quoted 5 lines · Geert Uytterhoeven
Hi Viresh,
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)
Quoted 7 lines
Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?
I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Signature · 1 line
viresh
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Hi Viresh,
Quoted 12 lines · Viresh Kumar
Quoted 10 lines · Geert Uytterhoeven
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?
Quoted 5 lines
I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Care to explain why? I've been using .dtsi for ages in
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-overlays
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Quoted 15 lines · Geert Uytterhoeven
Hi Viresh,
Quoted 12 lines · Viresh Kumar
Quoted 10 lines · Geert Uytterhoeven
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?
Quoted 8 lines
Quoted 5 lines
I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Care to explain why? I've been using .dtsi for ages in
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-overlays
I don't see you building them anywhere, they aren't added to the Makefile ever. What am I missing ?
actually none of the dtso's were added to any makefile in that branch.
Anyway, the DTC needs to know how to treat the dtso format and it will error out currently with unknown format kind of errors.
Below email [1] have some information on the kind of changes required here. Also note that we had to do similar changes for dtbo earlier [2].
Signature · 4 lines
viresh [1] https://lore.kernel.org/lkml/CAK7LNASViCOTGR7yDTfh0O+PAu+X-P2NwdY4oPMuXrr51awafA@mail.gmail.com/ [2] https://lore.kernel.org/lkml/30fd0e5f2156665c713cf191c5fea9a5548360c0.1609926856.git.viresh.kumar@linaro.org/
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Hi Viresh,
Quoted 20 lines · Viresh Kumar
Quoted 19 lines · Geert Uytterhoeven
Quoted 17 lines · Viresh Kumar
Quoted 10 lines · Geert Uytterhoeven
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Quoted 7 lines
Quoted 2 lines
Care to explain why? I've been using .dtsi for ages in
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-overlaysI don't see you building them anywhere, they aren't added to the
Makefileever. What am I missing ?actually none of the dtso's were added to any makefile in that branch.
E.g. "ARM: dts: Build all overlays if OF_OVERLAY=y"?
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/?h=topic/renesas-overlays&id=597ee90971687a45678cca8d16bf624d174a99eb
Quoted 11 lines
Anyway, the DTC needs to know how to treat the dtso format and it will error out currently with unknown format kind of errors.
Below email [1] have some information on the kind of changes required here. Also note that we had to do similar changes for dtbo earlier [2].
--
viresh[1] https://lore.kernel.org/lkml/CAK7LNASViCOTGR7yDTfh0O+PAu+X-P2NwdY4oPMuXrr51awafA@mail.gmail.com/
-@ is handled by "kbuild: Enable DT symbols when CONFIG_OF_OVERLAY is used"
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/?h=topic/renesas-overlays&id=91e9d998514f3743125a707013a30d5f83054579
Quoted 1 line
I never had a need for those changes to dtc. .dtso/.dtbo work fine regardless.
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Rob Herring
maintainerRe: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Quoted 44 lines · Geert Uytterhoeven
Hi Viresh,
Quoted 20 lines · Viresh Kumar
Quoted 19 lines · Geert Uytterhoeven
Quoted 17 lines · Viresh Kumar
Quoted 10 lines · Geert Uytterhoeven
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Quoted 7 lines
Quoted 2 lines
Care to explain why? I've been using .dtsi for ages in
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-overlaysI don't see you building them anywhere, they aren't added to the
Makefileever. What am I missing ?actually none of the dtso's were added to any makefile in that branch.
E.g. "ARM: dts: Build all overlays if OF_OVERLAY=y"?
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/?h=topic/renesas-overlays&id=597ee90971687a45678cca8d16bf624d174a99ebQuoted 10 lines
Anyway, the DTC needs to know how to treat the dtso format and it will error out currently with unknown format kind of errors.
Below email [1] have some information on the kind of changes required here. Also note that we had to do similar changes for dtbo earlier [2].
--
viresh
Quoted 8 lines
Quoted 1 line
[1] https://lore.kernel.org/lkml/CAK7LNASViCOTGR7yDTfh0O+PAu+X-P2NwdY4oPMuXrr51awafA@mail.gmail.com/
-@ is handled by "kbuild: Enable DT symbols when
CONFIG_OF_OVERLAYis used"
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/?h=topic/renesas-overlays&id=91e9d998514f3743125a707013a30d5f83054579Quoted 1 line
I never had a need for those changes to dtc. .dtso/.dtbo work fine regardless.
I think what Viresh means is dtc won't automatically set the input type to dts if not .dts.
We stuck with .dtbo as it's already widely used. I don't know about dtso though. If there's strong consensus to use .dtso, then let's do that. Whatever color for this shed you like.
Rob
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Hi Rob,
Quoted 16 lines · Rob Herring
On Fri, Feb 05, 2021 at 11:17:10AM +0100, Geert Uytterhoeven wrote:
Quoted 14 lines · Viresh Kumar
Quoted 14 lines · Geert Uytterhoeven
Quoted 13 lines · Viresh Kumar
Quoted 12 lines · Geert Uytterhoeven
Quoted 10 lines
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?
Quoted 8 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
Quoted 5 lines
I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
I think what Viresh means is dtc won't automatically set the input type to dts if not .dts.
Which is not needed with the kernel build rules.
Quoted 3 lines
We stuck with .dtbo as it's already widely used. I don't know about dtso though. If there's strong consensus to use .dtso, then let's do that. Whatever color for this shed you like.
I did a quick survey of its popularity, and found:
1. .dts => .dtbo
https://www.kernel.org/doc/Documentation/devicetree/overlay-notes.txt
https://github.com/beagleboard/bb.org-overlays
https://www.raspberrypi.org/documentation/configuration/device-tree.md
https://www.96boards.org/documentation/consumer/dragonboard/dragonboard410c/guides/dt-overlays.md.html
https://learn.adafruit.com/introduction-to-the-beaglebone-black-device-tree/compiling-an-overlay
https://developer.toradex.com/knowledge-base/device-tree-overlays
2. .dtso => .dtbo
https://github.com/linux4sam/dt-overlay-at91/tree/master/sama5d3_xplained
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-overlays
3. .dtsi => .dtbo
https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841645/Solution+Zynq+PL+Programming+With+FPGA+Manager
Note that many overlay users haven't migrated to the sugar syntax yet.
IMHO the biggest advantage of .dtso over .dts is that you (and the tooling) know which files should be compiled to .dtbo, and which to .dtb. This doesn't matter for
obj-$(CONFIG_FOO) += foo.dtbo
but it does for options like CONFIG_OF_ALL_DTBS.
Having a way to build all overlays will become more important when we will have more generic overlays (capes/hats/wings/...), that can apply to multiple base DTBs.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
In reply to Rob HerringQuoted 52 lines · Rob Herring
Quoted 51 lines · Geert Uytterhoeven
Hi Viresh,
Quoted 20 lines · Viresh Kumar
Quoted 19 lines · Geert Uytterhoeven
Quoted 17 lines · Viresh Kumar
Quoted 10 lines · Geert Uytterhoeven
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Quoted 7 lines
Quoted 2 lines
Care to explain why? I've been using .dtsi for ages in
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/log/?h=topic/renesas-overlaysI don't see you building them anywhere, they aren't added to the
Makefileever. What am I missing ?actually none of the dtso's were added to any makefile in that branch.
E.g. "ARM: dts: Build all overlays if OF_OVERLAY=y"?
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/?h=topic/renesas-overlays&id=597ee90971687a45678cca8d16bf624d174a99ebQuoted 11 lines
Anyway, the DTC needs to know how to treat the dtso format and it will error out currently with unknown format kind of errors.
Below email [1] have some information on the kind of changes required here. Also note that we had to do similar changes for dtbo earlier [2].
--
viresh[1] https://lore.kernel.org/lkml/CAK7LNASViCOTGR7yDTfh0O+PAu+X-P2NwdY4oPMuXrr51awafA@mail.gmail.com/
-@ is handled by "kbuild: Enable DT symbols when
CONFIG_OF_OVERLAYis used"
https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-drivers.git/commit/?h=topic/renesas-overlays&id=91e9d998514f3743125a707013a30d5f83054579
Quoted 8 lines
Quoted 1 line
I never had a need for those changes to dtc. .dtso/.dtbo work fine regardless.
I think what Viresh means is dtc won't automatically set the input type to dts if not .dts.
We stuck with .dtbo as it's already widely used. I don't know about dtso though. If there's strong consensus to use .dtso, then let's do that. Whatever color for this shed you like.
I overlooked this and mistakenly thought that the move to .dtbo also involved changing to .dtso. My bad.
My favorite color here is to use .dtso for the source file that will be compiled to create a .dtbo.
Linus has already accepted patch 4/6 to 5.12-rc1, so changing to .dtso will require another patch.
-Frank
Quoted 3 lines
Rob
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Quoted 8 lines · Frank Rowand
I overlooked this and mistakenly thought that the move to .dtbo also involved changing to .dtso. My bad.
My favorite color here is to use .dtso for the source file that will be compiled to create a .dtbo.
Linus has already accepted patch 4/6 to 5.12-rc1, so changing to .dtso will require another patch.
Looks like this is what many people desire, lets do it and make it a standard even if it wasn't followed earlier.
What about this ?
scripts/Makefile.lib +7 -1
@@ -337,7 +337,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE quiet_cmd_dtc = DTC $@ cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ - $(DTC) -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \ + $(DTC) -I dts -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \ $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
@@ -348,6 +348,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) +$(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE + $(call if_changed_dep,dtc) + overlay-y := $(addprefix $(obj)/, $(overlay-y)) quiet_cmd_fdtoverlay = DTOVL $@
@@ -373,6 +376,9 @@ endef $(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE $(call if_changed_rule,dtc,yaml) +$(obj)/%.dt.yaml: $(src)/%.dtso $(DTC) $(DT_TMP_SCHEMA) FORCE + $(call if_changed_rule,dtc,yaml) + dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) # Bzip2
-------------------------8<-------------------------
I had to keep the original line as is:
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
to support the unittest stuff as there are no dtso files there. There are few things we can do here:
- Don't follow the dtso/dtbo convention for unittest, build files as dtb only and everything will continue to work I suppose as fdtoverlay won't complain.
- Keep the above line in Makefile, this doesn't sound right, isn't it ?
- Make .dts links for unittest file, maybe from the Makefile itself.
- Something else ?
Signature · 1 line
viresh
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Hi Viresh,
Quoted 7 lines · Viresh Kumar
Quoted 6 lines · Frank Rowand
I overlooked this and mistakenly thought that the move to .dtbo also involved changing to .dtso. My bad.
My favorite color here is to use .dtso for the source file that will be compiled to create a .dtbo.
Quoted 7 lines
Quoted 2 lines
Linus has already accepted patch 4/6 to 5.12-rc1, so changing to .dtso will require another patch.
Looks like this is what many people desire, lets do it and make it a standard even if it wasn't followed earlier.
What about this ?
Thanks, looks good to me, and works for me, so
Quoted 22 lines
scripts/Makefile.lib +4
-1@@ -337,7 +337,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE quiet_cmd_dtc = DTC $@ cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ - $(DTC) -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \ + $(DTC) -I dts -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \ $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)@@ -348,6 +348,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) +$(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE + $(call if_changed_dep,dtc) + overlay-y := $(addprefix $(obj)/, $(overlay-y)) quiet_cmd_fdtoverlay = DTOVL $@
scripts/Makefile.lib endef · line 379
Quoted 4 lines
scripts/Makefile.lib +1
-0@@ -373,6 +376,9 @@ endef $(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE $(call if_changed_rule,dtc,yaml) +$(obj)/%.dt.yaml: $(src)/%.dtso $(DTC) $(DT_TMP_SCHEMA) FORCE
I'm wondering if "dt.yaml" should be changed to "dto.yaml" (here and in the existing rule earlier in Makefile.lib), to avoid issues if both foo.dts and foo.dtso exist? Unlikely, but it might happen...
Quoted 11 lines
I had to keep the original line as is:
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
to support the unittest stuff as there are no dtso files there. There are few things we can do here:
- Don't follow the dtso/dtbo convention for unittest, build files as dtb only and everything will continue to work I suppose as fdtoverlay won't complain.
Quoted 6 lines
- Keep the above line in
Makefile, this doesn't sound right, isn't it ?- Make .dts links for unittest file, maybe from the
Makefileitself.- Something else ?
Rename unittest .dts files to .dtso where applicable?
Gr{oetje,eeting}s,
Geert
Signature · 5 lines
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected] In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
Quoted 13 lines · Geert Uytterhoeven
Hi Viresh,
Quoted 10 lines · Viresh Kumar
Quoted 8 lines · Frank Rowand
I overlooked this and mistakenly thought that the move to .dtbo also involved changing to .dtso. My bad.
My favorite color here is to use .dtso for the source file that will be compiled to create a .dtbo.
Linus has already accepted patch 4/6 to 5.12-rc1, so changing to .dtso will require another patch.
Quoted 8 lines
Quoted 4 lines
Looks like this is what many people desire, lets do it and make it a standard even if it wasn't followed earlier.
What about this ?
Thanks, looks good to me, and works for me, so
Reviewed-by Geert Uytterhoeven <[email protected]>Tested-by Geert Uytterhoeven <[email protected]>
Thanks.
Quoted 25 lines
Quoted 25 lines
scripts/Makefile.lib +4
-1@@ -337,7 +337,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb FORCE quiet_cmd_dtc = DTC $@ cmd_dtc = $(HOSTCC) -E $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ - $(DTC) -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \ + $(DTC) -I dts -O $(patsubst .%,%,$(suffix $@)) -o $@ -b 0 \ $(addprefix -i,$(dir $<) $(DTC_INCLUDE)) $(DTC_FLAGS) \ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)@@ -348,6 +348,9 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) +$(obj)/%.dtbo: $(src)/%.dtso $(DTC) FORCE + $(call if_changed_dep,dtc) + overlay-y := $(addprefix $(obj)/, $(overlay-y)) quiet_cmd_fdtoverlay = DTOVL $@@@ -373,6 +376,9 @@ endef $(obj)/%.dt.yaml: $(src)/%.dts $(DTC) $(DT_TMP_SCHEMA) FORCE $(call if_changed_rule,dtc,yaml)
Quoted 5 lines
scripts/Makefile.lib endef · line 379
Quoted 1 line
scripts/Makefile.lib +1
-0+$(obj)/%.dt.yaml: $(src)/%.dtso $(DTC) $(DT_TMP_SCHEMA) FORCEI'm wondering if "
dt.yaml" should be changed to "dto.yaml" (here and in the existing rule earlier in Makefile.lib), to avoid issues if bothfoo.dtsand foo.dtso exist? Unlikely, but it might happen...
I will let Rob answer that :)
Quoted 11 lines
Quoted 11 lines
I had to keep the original line as is:
$(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE
to support the unittest stuff as there are no dtso files there. There are few things we can do here:
- Don't follow the dtso/dtbo convention for unittest, build files as dtb only and everything will continue to work I suppose as fdtoverlay won't complain.
Quoted 8 lines
Quoted 6 lines
- Keep the above line in
Makefile, this doesn't sound right, isn't it ?- Make .dts links for unittest file, maybe from the
Makefileitself.- Something else ?
Rename unittest .dts files to .dtso where applicable?
They are used for some runtime tests, we are reusing them to do this testing as well, so renaming them is out of the question I believe.
Signature · 1 line
viresh
Re: [PATCH V7 4/6] kbuild: Add support to build overlays (%.dtbo)
In reply to Viresh KumarQuoted 14 lines · Viresh Kumar
Quoted 5 lines · Geert Uytterhoeven
Hi Viresh,
Thanks for your patch
(which I only noticed because it appeared in dt-rh/for-next ;-)Quoted 7 lines
Quoted 2 lines · Viresh Kumar
Add support for building DT overlays (%.dtbo). The overlay's source file will have the usual extension, i.e. .dts, though the blob will have
Why use .dts and not .dtso for overlays?
Because you originally (until v5) had a single rule for building .dtb and .dtbo files?
Quoted 5 lines
I am fine with doing that as well if Rob and David agree to it. Rob did suggest that at one point but we didn't do much about it later on for some reason.
FWIW, this will also require a change in the DTC compiler.
Not really. It would need a change to automatically recognize that extension, but you can easily work around that by explicitly giving the -I option to specify the input type.
Signature · 4 lines
David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
PATCH v7 5/6 of: unittest: Create overlay_common.dtsi and testcases_common.dtsi
In reply to Viresh KumarIn order to build-test the same unit-test files using fdtoverlay tool, move the device nodes from the existing overlay_base.dts and testcases_common.dts files to .dtsi counterparts. The .dts files now include the new .dtsi files, resulting in exactly the same behavior as earlier.
The .dtsi files can now be reused for compile time tests using fdtoverlay (will be done by a later commit).
This is required because the base files passed to fdtoverlay tool shouldn't be overlays themselves (i.e. shouldn't have the /plugin/; tag).
Note that this commit also moves "testcase-device2" node to testcases.dts from tests-interrupts.dtsi, as this node has a deliberate error in it and is only relevant for runtime testing done with unittest.c.
--- drivers/of/unittest-data/overlay_base.dts | 90 +----------------- drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++ drivers/of/unittest-data/testcases.dts | 18 ++-- .../of/unittest-data/testcases_common.dtsi | 19 ++++ .../of/unittest-data/tests-interrupts.dtsi | 7 -- 5 files changed, 118 insertions(+), 107 deletions(-) create mode 100644 drivers/of/unittest-data/overlay_common.dtsi create mode 100644 drivers/of/unittest-data/testcases_common.dtsi
drivers/of/unittest-data/overlay_base.dts +1 -89
@@ -2,92 +2,4 @@ /dts-v1/; /plugin/; -/* - * Base device tree that overlays will be applied against. - * - * Do not add any properties in node "/". - * Do not add any nodes other than "/testcase-data-2" in node "/". - * Do not add anything that would result in dtc creating node "/__fixups__". - * dtc will create nodes "/__symbols__" and "/__local_fixups__". - */ - -/ { - testcase-data-2 { - #address-cells = <1>; - #size-cells = <1>; - - electric_1: substation@100 { - compatible = "ot,big-volts-control"; - reg = < 0x00000100 0x100 >; - status = "disabled"; - - hvac_1: hvac-medium-1 { - compatible = "ot,hvac-medium"; - heat-range = < 50 75 >; - cool-range = < 60 80 >; - }; - - spin_ctrl_1: motor-1 { - compatible = "ot,ferris-wheel-motor"; - spin = "clockwise"; - rpm_avail = < 50 >; - }; - - spin_ctrl_2: motor-8 { - compatible = "ot,roller-coaster-motor"; - }; - }; - - rides_1: fairway-1 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "ot,rides"; - status = "disabled"; - orientation = < 127 >; - - ride@100 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "ot,roller-coaster"; - reg = < 0x00000100 0x100 >; - hvac-provider = < &hvac_1 >; - hvac-thermostat = < 29 > ; - hvac-zones = < 14 >; - hvac-zone-names = "operator"; - spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >; - spin-controller-names = "track_1", "track_2"; - queues = < 2 >; - - track@30 { - reg = < 0x00000030 0x10 >; - }; - - track@40 { - reg = < 0x00000040 0x10 >; - }; - - }; - }; - - lights_1: lights@30000 { - compatible = "ot,work-lights"; - reg = < 0x00030000 0x1000 >; - status = "disabled"; - }; - - lights_2: lights@40000 { - compatible = "ot,show-lights"; - reg = < 0x00040000 0x1000 >; - status = "disabled"; - rate = < 13 138 >; - }; - - retail_1: vending@50000 { - reg = < 0x00050000 0x1000 >; - compatible = "ot,tickets"; - status = "disabled"; - }; - - }; -}; - +#include "overlay_common.dtsi"
drivers/of/unittest-data/overlay_common.dtsi new file +91 -0
91 lines not on this page · raw message
drivers/of/unittest-data/testcases.dts +7 -11
@@ -2,19 +2,15 @@ /dts-v1/; /plugin/; +#include "testcases_common.dtsi" + / { testcase-data { - changeset { - prop-update = "hello"; - prop-remove = "world"; - node-remove { - }; + testcase-device2 { + compatible = "testcase-device"; + interrupt-parent = <&test_intc2>; + interrupts = <1>; /* invalid specifier - too short */ }; }; + }; -#include "tests-phandle.dtsi" -#include "tests-interrupts.dtsi" -#include "tests-match.dtsi" -#include "tests-address.dtsi" -#include "tests-platform.dtsi" -#include "tests-overlay.dtsi"
drivers/of/unittest-data/testcases_common.dtsi new file +19 -0
@@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0 + +/ { + testcase-data { + changeset { + prop-update = "hello"; + prop-remove = "world"; + node-remove { + }; + }; + }; +}; + +#include "tests-phandle.dtsi" +#include "tests-interrupts.dtsi" +#include "tests-match.dtsi" +#include "tests-address.dtsi" +#include "tests-platform.dtsi" +#include "tests-overlay.dtsi"
drivers/of/unittest-data/tests-interrupts.dtsi +0 -7
@@ -61,12 +61,5 @@ testcase-device1 { interrupt-parent = <&test_intc0>; interrupts = <1>; }; - - testcase-device2 { - compatible = "testcase-device"; - interrupt-parent = <&test_intc2>; - interrupts = <1>; /* invalid specifier - too short */ - }; }; - };
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
Re: [PATCH V7 5/6] of: unittest: Create overlay_common.dtsi and testcases_common.dtsi
Quoted 229 lines · Viresh Kumar
In order to build-test the same unit-test files using fdtoverlay tool, move the device nodes from the existing
overlay_base.dtsandtestcases_common.dtsfiles to .dtsi counterparts. The .dts files now include the new .dtsi files, resulting in exactly the same behavior as earlier.The .dtsi files can now be reused for compile time tests using fdtoverlay (will be done by a later commit).
This is required because the base files passed to fdtoverlay tool shouldn't be overlays themselves (i.e. shouldn't have the /plugin/; tag).
Note that this commit also moves "testcase-device2" node to
testcases.dtsfromtests-interrupts.dtsi, as this node has a deliberate error in it and is only relevant for runtime testing done withunittest.c.Signed-off-by Viresh Kumar <[email protected]>--- drivers/of/unittest-data/overlay_base.dts | 90 +----------------- drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++ drivers/of/unittest-data/testcases.dts | 18 ++-- .../of/unittest-data/testcases_common.dtsi | 19 ++++ .../of/unittest-data/tests-interrupts.dtsi | 7 -- 5 files changed, 118 insertions(+), 107 deletions(-) create mode 100644 drivers/of/unittest-data/overlay_common.dtsi create mode 100644 drivers/of/unittest-data/testcases_common.dtsidrivers/of/unittest-data/overlay_base.dts +1
-89@@ -2,92 +2,4 @@ /dts-v1/; /plugin/; -/* - * Base device tree that overlays will be applied against. - * - * Do not add any properties in node "/". - * Do not add any nodes other than "/testcase-data-2" in node "/". - * Do not add anything that would result in dtc creating node "/__fixups__". - * dtc will create nodes "/__symbols__" and "/__local_fixups__". - */ - -/ { - testcase-data-2 { - #address-cells = <1>; - #size-cells = <1>; - - electric_1: substation@100 { - compatible = "ot,big-volts-control"; - reg = < 0x00000100 0x100 >; - status = "disabled"; - - hvac_1: hvac-medium-1 { - compatible = "ot,hvac-medium"; - heat-range = < 50 75 >; - cool-range = < 60 80 >; - }; - - spin_ctrl_1: motor-1 { - compatible = "ot,ferris-wheel-motor"; - spin = "clockwise"; - rpm_avail = < 50 >; - }; - - spin_ctrl_2: motor-8 { - compatible = "ot,roller-coaster-motor"; - }; - }; - - rides_1: fairway-1 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "ot,rides"; - status = "disabled"; - orientation = < 127 >; - - ride@100 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "ot,roller-coaster"; - reg = < 0x00000100 0x100 >; - hvac-provider = < &hvac_1 >; - hvac-thermostat = < 29 > ; - hvac-zones = < 14 >; - hvac-zone-names = "operator"; - spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >; - spin-controller-names = "track_1", "track_2"; - queues = < 2 >; - - track@30 { - reg = < 0x00000030 0x10 >; - }; - - track@40 { - reg = < 0x00000040 0x10 >; - }; - - }; - }; - - lights_1: lights@30000 { - compatible = "ot,work-lights"; - reg = < 0x00030000 0x1000 >; - status = "disabled"; - }; - - lights_2: lights@40000 { - compatible = "ot,show-lights"; - reg = < 0x00040000 0x1000 >; - status = "disabled"; - rate = < 13 138 >; - }; - - retail_1: vending@50000 { - reg = < 0x00050000 0x1000 >; - compatible = "ot,tickets"; - status = "disabled"; - }; - - }; -}; - +#include "overlay_common.dtsi"drivers/of/unittest-data/overlay_common.dtsi new file +91
-0@@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Base device tree that overlays will be applied against. + * + * Do not add any properties in node "/". + * Do not add any nodes other than "/testcase-data-2" in node "/". + * Do not add anything that would result in dtc creating node "/__fixups__". + * dtc will create nodes "/__symbols__" and "/__local_fixups__". + */ + +/ { + testcase-data-2 { + #address-cells = <1>; + #size-cells = <1>; + + electric_1: substation@100 { + compatible = "ot,big-volts-control"; + reg = < 0x00000100 0x100 >; + status = "disabled"; + + hvac_1: hvac-medium-1 { + compatible = "ot,hvac-medium"; + heat-range = < 50 75 >; + cool-range = < 60 80 >; + }; + + spin_ctrl_1: motor-1 { + compatible = "ot,ferris-wheel-motor"; + spin = "clockwise"; + rpm_avail = < 50 >; + }; + + spin_ctrl_2: motor-8 { + compatible = "ot,roller-coaster-motor"; + }; + }; + + rides_1: fairway-1 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ot,rides"; + status = "disabled"; + orientation = < 127 >; + + ride@100 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ot,roller-coaster"; + reg = < 0x00000100 0x100 >; + hvac-provider = < &hvac_1 >; + hvac-thermostat = < 29 > ; + hvac-zones = < 14 >; + hvac-zone-names = "operator"; + spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >; + spin-controller-names = "track_1", "track_2"; + queues = < 2 >; + + track@30 { + reg = < 0x00000030 0x10 >; + }; + + track@40 { + reg = < 0x00000040 0x10 >; + }; + + }; + }; + + lights_1: lights@30000 { + compatible = "ot,work-lights"; + reg = < 0x00030000 0x1000 >; + status = "disabled"; + }; + + lights_2: lights@40000 { + compatible = "ot,show-lights"; + reg = < 0x00040000 0x1000 >; + status = "disabled"; + rate = < 13 138 >; + }; + + retail_1: vending@50000 { + reg = < 0x00050000 0x1000 >; + compatible = "ot,tickets"; + status = "disabled"; + }; + + }; +}; +drivers/of/unittest-data/testcases.dts +0
-0
drivers/of/unittest-data/testcases.dts line 7
Quoted 6 lines
drivers/of/unittest-data/testcases.dts +2
-0@@ -2,19 +2,15 @@ /dts-v1/; /plugin/; +#include "testcases_common.dtsi" + / {
Please add:
/*
* testcase data that intentionally results in an error
* is located here instead of in testcases_common.dtsi
* so that the static overlay apply tests will not include
* the error
*/
Quoted 50 lines
drivers/of/unittest-data/testcases.dts +5
-11testcase-data { - changeset { - prop-update = "hello"; - prop-remove = "world"; - node-remove { - }; + testcase-device2 { + compatible = "testcase-device"; + interrupt-parent = <&test_intc2>; + interrupts = <1>; /* invalid specifier - too short */ }; }; + }; -#include "tests-phandle.dtsi" -#include "tests-interrupts.dtsi" -#include "tests-match.dtsi" -#include "tests-address.dtsi" -#include "tests-platform.dtsi" -#include "tests-overlay.dtsi"drivers/of/unittest-data/testcases_common.dtsi new file +19
-0@@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0 + +/ { + testcase-data { + changeset { + prop-update = "hello"; + prop-remove = "world"; + node-remove { + }; + }; + }; +}; + +#include "tests-phandle.dtsi" +#include "tests-interrupts.dtsi" +#include "tests-match.dtsi" +#include "tests-address.dtsi" +#include "tests-platform.dtsi" +#include "tests-overlay.dtsi"drivers/of/unittest-data/tests-interrupts.dtsi +0
-0
drivers/of/unittest-data/tests-interrupts.dtsi testcase-device1 { · line 63
Quoted 3 lines
drivers/of/unittest-data/tests-interrupts.dtsi +0
-0@@ -61,12 +61,5 @@ testcase-device1 { interrupt-parent = <&test_intc0>; interrupts = <1>; };
Please add:
/*
* testcase data that intentionally results in an error
* is located in testcases.dts instead of in this file
* so that the static overlay apply tests will not include
* the error
*/
Quoted 10 lines
drivers/of/unittest-data/tests-interrupts.dtsi +0
-7- - testcase-device2 { - compatible = "testcase-device"; - interrupt-parent = <&test_intc2>; - interrupts = <1>; /* invalid specifier - too short */ - }; }; - };
Re: [PATCH V7 5/6] of: unittest: Create overlay_common.dtsi and testcases_common.dtsi
Hi Viresh,
I am in the wrong version with the comments below. You are at version 8 now.
-Frank
Quoted 320 lines · Frank Rowand
Quoted 229 lines · Viresh Kumar
In order to build-test the same unit-test files using fdtoverlay tool, move the device nodes from the existing
overlay_base.dtsandtestcases_common.dtsfiles to .dtsi counterparts. The .dts files now include the new .dtsi files, resulting in exactly the same behavior as earlier.The .dtsi files can now be reused for compile time tests using fdtoverlay (will be done by a later commit).
This is required because the base files passed to fdtoverlay tool shouldn't be overlays themselves (i.e. shouldn't have the /plugin/; tag).
Note that this commit also moves "testcase-device2" node to
testcases.dtsfromtests-interrupts.dtsi, as this node has a deliberate error in it and is only relevant for runtime testing done withunittest.c.Signed-off-by Viresh Kumar <[email protected]>--- drivers/of/unittest-data/overlay_base.dts | 90 +----------------- drivers/of/unittest-data/overlay_common.dtsi | 91 +++++++++++++++++++ drivers/of/unittest-data/testcases.dts | 18 ++-- .../of/unittest-data/testcases_common.dtsi | 19 ++++ .../of/unittest-data/tests-interrupts.dtsi | 7 -- 5 files changed, 118 insertions(+), 107 deletions(-) create mode 100644 drivers/of/unittest-data/overlay_common.dtsi create mode 100644 drivers/of/unittest-data/testcases_common.dtsidrivers/of/unittest-data/overlay_base.dts +1
-89@@ -2,92 +2,4 @@ /dts-v1/; /plugin/; -/* - * Base device tree that overlays will be applied against. - * - * Do not add any properties in node "/". - * Do not add any nodes other than "/testcase-data-2" in node "/". - * Do not add anything that would result in dtc creating node "/__fixups__". - * dtc will create nodes "/__symbols__" and "/__local_fixups__". - */ - -/ { - testcase-data-2 { - #address-cells = <1>; - #size-cells = <1>; - - electric_1: substation@100 { - compatible = "ot,big-volts-control"; - reg = < 0x00000100 0x100 >; - status = "disabled"; - - hvac_1: hvac-medium-1 { - compatible = "ot,hvac-medium"; - heat-range = < 50 75 >; - cool-range = < 60 80 >; - }; - - spin_ctrl_1: motor-1 { - compatible = "ot,ferris-wheel-motor"; - spin = "clockwise"; - rpm_avail = < 50 >; - }; - - spin_ctrl_2: motor-8 { - compatible = "ot,roller-coaster-motor"; - }; - }; - - rides_1: fairway-1 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "ot,rides"; - status = "disabled"; - orientation = < 127 >; - - ride@100 { - #address-cells = <1>; - #size-cells = <1>; - compatible = "ot,roller-coaster"; - reg = < 0x00000100 0x100 >; - hvac-provider = < &hvac_1 >; - hvac-thermostat = < 29 > ; - hvac-zones = < 14 >; - hvac-zone-names = "operator"; - spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >; - spin-controller-names = "track_1", "track_2"; - queues = < 2 >; - - track@30 { - reg = < 0x00000030 0x10 >; - }; - - track@40 { - reg = < 0x00000040 0x10 >; - }; - - }; - }; - - lights_1: lights@30000 { - compatible = "ot,work-lights"; - reg = < 0x00030000 0x1000 >; - status = "disabled"; - }; - - lights_2: lights@40000 { - compatible = "ot,show-lights"; - reg = < 0x00040000 0x1000 >; - status = "disabled"; - rate = < 13 138 >; - }; - - retail_1: vending@50000 { - reg = < 0x00050000 0x1000 >; - compatible = "ot,tickets"; - status = "disabled"; - }; - - }; -}; - +#include "overlay_common.dtsi"drivers/of/unittest-data/overlay_common.dtsi new file +91
-0@@ -0,0 +1,91 @@ +// SPDX-License-Identifier: GPL-2.0 + +/* + * Base device tree that overlays will be applied against. + * + * Do not add any properties in node "/". + * Do not add any nodes other than "/testcase-data-2" in node "/". + * Do not add anything that would result in dtc creating node "/__fixups__". + * dtc will create nodes "/__symbols__" and "/__local_fixups__". + */ + +/ { + testcase-data-2 { + #address-cells = <1>; + #size-cells = <1>; + + electric_1: substation@100 { + compatible = "ot,big-volts-control"; + reg = < 0x00000100 0x100 >; + status = "disabled"; + + hvac_1: hvac-medium-1 { + compatible = "ot,hvac-medium"; + heat-range = < 50 75 >; + cool-range = < 60 80 >; + }; + + spin_ctrl_1: motor-1 { + compatible = "ot,ferris-wheel-motor"; + spin = "clockwise"; + rpm_avail = < 50 >; + }; + + spin_ctrl_2: motor-8 { + compatible = "ot,roller-coaster-motor"; + }; + }; + + rides_1: fairway-1 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ot,rides"; + status = "disabled"; + orientation = < 127 >; + + ride@100 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "ot,roller-coaster"; + reg = < 0x00000100 0x100 >; + hvac-provider = < &hvac_1 >; + hvac-thermostat = < 29 > ; + hvac-zones = < 14 >; + hvac-zone-names = "operator"; + spin-controller = < &spin_ctrl_2 5 &spin_ctrl_2 7 >; + spin-controller-names = "track_1", "track_2"; + queues = < 2 >; + + track@30 { + reg = < 0x00000030 0x10 >; + }; + + track@40 { + reg = < 0x00000040 0x10 >; + }; + + }; + }; + + lights_1: lights@30000 { + compatible = "ot,work-lights"; + reg = < 0x00030000 0x1000 >; + status = "disabled"; + }; + + lights_2: lights@40000 { + compatible = "ot,show-lights"; + reg = < 0x00040000 0x1000 >; + status = "disabled"; + rate = < 13 138 >; + }; + + retail_1: vending@50000 { + reg = < 0x00050000 0x1000 >; + compatible = "ot,tickets"; + status = "disabled"; + }; + + }; +}; +drivers/of/unittest-data/testcases.dts +0
-0drivers/of/unittest-data/testcases.dts line 7
Quoted 6 lines
drivers/of/unittest-data/testcases.dts +2
-0@@ -2,19 +2,15 @@ /dts-v1/; /plugin/; +#include "testcases_common.dtsi" + / {Please add:
/*
* testcase data that intentionally results in an error
* is located here instead of intestcases_common.dtsi
* so that the static overlay apply tests will not include
* the error
*/Quoted 50 lines
drivers/of/unittest-data/testcases.dts +5
-11testcase-data { - changeset { - prop-update = "hello"; - prop-remove = "world"; - node-remove { - }; + testcase-device2 { + compatible = "testcase-device"; + interrupt-parent = <&test_intc2>; + interrupts = <1>; /* invalid specifier - too short */ }; }; + }; -#include "tests-phandle.dtsi" -#include "tests-interrupts.dtsi" -#include "tests-match.dtsi" -#include "tests-address.dtsi" -#include "tests-platform.dtsi" -#include "tests-overlay.dtsi"drivers/of/unittest-data/testcases_common.dtsi new file +19
-0@@ -0,0 +1,19 @@ +// SPDX-License-Identifier: GPL-2.0 + +/ { + testcase-data { + changeset { + prop-update = "hello"; + prop-remove = "world"; + node-remove { + }; + }; + }; +}; + +#include "tests-phandle.dtsi" +#include "tests-interrupts.dtsi" +#include "tests-match.dtsi" +#include "tests-address.dtsi" +#include "tests-platform.dtsi" +#include "tests-overlay.dtsi"drivers/of/unittest-data/tests-interrupts.dtsi +0
-0drivers/of/unittest-data/tests-interrupts.dtsi testcase-device1 { · line 63
Quoted 3 lines
drivers/of/unittest-data/tests-interrupts.dtsi +0
-0@@ -61,12 +61,5 @@ testcase-device1 { interrupt-parent = <&test_intc0>; interrupts = <1>; };Please add:
/*
* testcase data that intentionally results in an error
* is located intestcases.dtsinstead of in this file
* so that the static overlay apply tests will not include
* the error
*/Quoted 10 lines
drivers/of/unittest-data/tests-interrupts.dtsi +0
-7- - testcase-device2 { - compatible = "testcase-device"; - interrupt-parent = <&test_intc2>; - interrupts = <1>; /* invalid specifier - too short */ - }; }; - };
Re: [PATCH V7 5/6] of: unittest: Create overlay_common.dtsi and testcases_common.dtsi
Quoted 3 lines · Frank Rowand
Hi Viresh,
I am in the wrong version with the comments below. You are at version 8 now.
Yeah, it is fine. I have updated the patches already based on your comments.
Signature · 1 line
viresh
PATCH v7 6/6 of: unittest: Statically apply overlays using fdtoverlay
In reply to Viresh KumarNow that fdtoverlay is part of the kernel build, start using it to test the unitest overlays we have by applying them statically. Create two new base files static_base_1.dts and static_base_2.dts which includes other .dtsi files.
Some unittest overlays deliberately contain errors that unittest checks for. These overlays will cause fdtoverlay to fail, and are thus not included for static builds.
--- drivers/of/unittest-data/Makefile | 56 ++++++++++++++++++++++ drivers/of/unittest-data/static_base_1.dts | 4 ++ drivers/of/unittest-data/static_base_2.dts | 4 ++ 3 files changed, 64 insertions(+) create mode 100644 drivers/of/unittest-data/static_base_1.dts create mode 100644 drivers/of/unittest-data/static_base_2.dts
drivers/of/unittest-data/Makefile +56 -0
@@ -34,7 +34,63 @@ DTC_FLAGS_overlay += -@ DTC_FLAGS_overlay_bad_phandle += -@ DTC_FLAGS_overlay_bad_symbol += -@ DTC_FLAGS_overlay_base += -@ +DTC_FLAGS_static_base_1 += -@ +DTC_FLAGS_static_base_2 += -@ DTC_FLAGS_testcases += -@ # suppress warnings about intentional errors DTC_FLAGS_testcases += -Wno-interrupts_property + +# Apply overlays statically with fdtoverlay. This is a build time test that +# the overlays can be applied successfully by fdtoverlay. This does not +# guarantee that the overlays can be applied successfully at run time by +# unittest, but it provides a bit of build time test coverage for those +# who do not execute unittest. +# +# The overlays are applied on top of static_base_1.dtb and static_base_2.dtb to +# create static_test_1.dtb and static_test_2.dtb. If fdtoverlay detects an +# error than the kernel build will fail. static_test_1.dtb and +# static_test_2.dtb are not consumed by unittest. +# +# Some unittest overlays deliberately contain errors that unittest checks for. +# These overlays will cause fdtoverlay to fail, and are thus not included +# in the static test: +# overlay_bad_add_dup_node.dtb \ +# overlay_bad_add_dup_prop.dtb \ +# overlay_bad_phandle.dtb \ +# overlay_bad_symbol.dtb \ + +apply_static_overlay_1 := overlay_0.dtb \ + overlay_1.dtb \ + overlay_2.dtb \ + overlay_3.dtb \ + overlay_4.dtb \ + overlay_5.dtb \ + overlay_6.dtb \ + overlay_7.dtb \ + overlay_8.dtb \ + overlay_9.dtb \ + overlay_10.dtb \ + overlay_11.dtb \ + overlay_12.dtb \ + overlay_13.dtb \ + overlay_15.dtb \ + overlay_gpio_01.dtb \ + overlay_gpio_02a.dtb \ + overlay_gpio_02b.dtb \ + overlay_gpio_03.dtb \ + overlay_gpio_04a.dtb \ + overlay_gpio_04b.dtb + +apply_static_overlay_2 := overlay.dtb + +quiet_cmd_fdtoverlay = FDTOVERLAY $@ + cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $^ + +$(obj)/static_test_1.dtb: $(obj)/static_base_1.dtb $(addprefix $(obj)/,$(apply_static_overlay_1)) + $(call if_changed,fdtoverlay) + +$(obj)/static_test_2.dtb: $(obj)/static_base_2.dtb $(addprefix $(obj)/,$(apply_static_overlay_2)) + $(call if_changed,fdtoverlay) + +always-$(CONFIG_OF_OVERLAY) += static_test_1.dtb static_test_2.dtb
drivers/of/unittest-data/static_base_1.dts new file +4 -0
@@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "testcases_common.dtsi"
drivers/of/unittest-data/static_base_2.dts new file +4 -0
@@ -0,0 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; + +#include "overlay_common.dtsi"
Signature · 1 line
2.25.0.rc1.19.g042ed3e048af
Rob Herring
maintainerRe: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
Quoted 9 lines · Viresh Kumar
Now that fdtoverlay is part of the kernel build, start using it to test the unitest overlays we have by applying them statically. Create two new base files
static_base_1.dtsandstatic_base_2.dtswhich includes other .dtsi files.Some unittest overlays deliberately contain errors that unittest checks for. These overlays will cause fdtoverlay to fail, and are thus not included for static builds.
Quoted 8 lines
Signed-off-by Viresh Kumar <[email protected]>--- drivers/of/unittest-data/Makefile | 56 ++++++++++++++++++++++ drivers/of/unittest-data/static_base_1.dts | 4 ++ drivers/of/unittest-data/static_base_2.dts | 4 ++ 3 files changed, 64 insertions(+) create mode 100644 drivers/of/unittest-data/static_base_1.dts create mode 100644 drivers/of/unittest-data/static_base_2.dts
The first 4 patches look good to me, no need to resend those if you don't want to.
Quoted 46 lines
drivers/of/unittest-data/Makefile +33
-0@@ -34,7 +34,63 @@ DTC_FLAGS_overlay += -@ DTC_FLAGS_overlay_bad_phandle += -@ DTC_FLAGS_overlay_bad_symbol += -@ DTC_FLAGS_overlay_base += -@ +DTC_FLAGS_static_base_1 += -@ +DTC_FLAGS_static_base_2 += -@ DTC_FLAGS_testcases += -@ # suppress warnings about intentional errors DTC_FLAGS_testcases += -Wno-interrupts_property + +# Apply overlays statically with fdtoverlay. This is a build time test that +# the overlays can be applied successfully by fdtoverlay. This does not +# guarantee that the overlays can be applied successfully at run time by +# unittest, but it provides a bit of build time test coverage for those +# who do not execute unittest. +# +# The overlays are applied on top of static_base_1.dtb and static_base_2.dtb to +# create static_test_1.dtb and static_test_2.dtb. If fdtoverlay detects an +# error than the kernel build will fail. static_test_1.dtb and +# static_test_2.dtb are not consumed by unittest. +# +# Some unittest overlays deliberately contain errors that unittest checks for. +# These overlays will cause fdtoverlay to fail, and are thus not included +# in the static test: +# overlay_bad_add_dup_node.dtb \ +# overlay_bad_add_dup_prop.dtb \ +# overlay_bad_phandle.dtb \ +# overlay_bad_symbol.dtb \ + +apply_static_overlay_1 := overlay_0.dtb \ + overlay_1.dtb \ + overlay_2.dtb \ + overlay_3.dtb \ + overlay_4.dtb \ + overlay_5.dtb \ + overlay_6.dtb \ + overlay_7.dtb \ + overlay_8.dtb \ + overlay_9.dtb \ + overlay_10.dtb \
drivers/of/unittest-data/Makefile DTC_FLAGS_overlay += -@ · line 83
Quoted 10 lines
drivers/of/unittest-data/Makefile +10
-0+ overlay_11.dtb \ + overlay_12.dtb \ + overlay_13.dtb \ + overlay_15.dtb \ + overlay_gpio_01.dtb \ + overlay_gpio_02a.dtb \ + overlay_gpio_02b.dtb \ + overlay_gpio_03.dtb \ + overlay_gpio_04a.dtb \ + overlay_gpio_04b.dtb
As these are overlays, .dtbo
drivers/of/unittest-data/Makefile DTC_FLAGS_overlay += -@ · line 96
Quoted 13 lines
drivers/of/unittest-data/Makefile +13
-0+ +apply_static_overlay_2 := overlay.dtb + +quiet_cmd_fdtoverlay = FDTOVERLAY $@ + cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $^ + +$(obj)/static_test_1.dtb: $(obj)/static_base_1.dtb $(addprefix $(obj)/,$(apply_static_overlay_1)) + $(call if_changed,fdtoverlay) + +$(obj)/static_test_2.dtb: $(obj)/static_base_2.dtb $(addprefix $(obj)/,$(apply_static_overlay_2)) + $(call if_changed,fdtoverlay) + +always-$(CONFIG_OF_OVERLAY) += static_test_1.dtb static_test_2.dtb
We can't be leaving all this for ordinary folks to copy-n-paste in every directory with overlays. It needs to be simple for users like multi-file modules:
test1-dtbs := static_base_1.dtb $(apply_static_overlay_1) test2-dtbs := static_base_2.dtb $(apply_static_overlay_2)
dtb-$(CONFIG_OF_OVERLAY) += test1.dtb test2.dtb
I've gotten something working with the patch below. Hopefully, Masahiro has some comments on it. I couldn't get multiple '-dtbs' to work without the '.SECONDEXPANSION'.
Rob
8<------------------------------------------------------------------- From 3f3f1e478d0cc512050c70eda2e9e6f577bc3107 Mon Sep 17 00:00:00 2001
From: Rob Herring <[email protected]>
Date: Wed, 3 Feb 2021 19:22:47 -0600
Subject: [PATCH] rework dtb overlay building
--- drivers/of/unittest-data/Makefile | 54 ++++++++++++++----------------- scripts/Makefile.lib | 12 +++++++ 2 files changed, 36 insertions(+), 30 deletions(-)
drivers/of/unittest-data/Makefile +24 -30
@@ -60,37 +60,31 @@ DTC_FLAGS_testcases += -Wno-interrupts_property # overlay_bad_phandle.dtb \ # overlay_bad_symbol.dtb \ -apply_static_overlay_1 := overlay_0.dtb \ - overlay_1.dtb \ - overlay_2.dtb \ - overlay_3.dtb \ - overlay_4.dtb \ - overlay_5.dtb \ - overlay_6.dtb \ - overlay_7.dtb \ - overlay_8.dtb \ - overlay_9.dtb \ - overlay_10.dtb \ - overlay_11.dtb \ - overlay_12.dtb \ - overlay_13.dtb \ - overlay_15.dtb \ - overlay_gpio_01.dtb \ - overlay_gpio_02a.dtb \ - overlay_gpio_02b.dtb \ - overlay_gpio_03.dtb \ - overlay_gpio_04a.dtb \ - overlay_gpio_04b.dtb +apply_static_overlay_1 := overlay_0.dtbo \ + overlay_1.dtbo \ + overlay_2.dtbo \ + overlay_3.dtbo \ + overlay_4.dtbo \ + overlay_5.dtbo \ + overlay_6.dtbo \ + overlay_7.dtbo \ + overlay_8.dtbo \ + overlay_9.dtbo \ + overlay_10.dtbo \ + overlay_11.dtbo \ + overlay_12.dtbo \ + overlay_13.dtbo \ + overlay_15.dtbo \ + overlay_gpio_01.dtbo \ + overlay_gpio_02a.dtbo \ + overlay_gpio_02b.dtbo \ + overlay_gpio_03.dtbo \ + overlay_gpio_04a.dtbo \ + overlay_gpio_04b.dtbo apply_static_overlay_2 := overlay.dtb -quiet_cmd_fdtoverlay = FDTOVERLAY $@ - cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $^ +test1-dtbs := static_base_1.dtb $(apply_static_overlay_1) +test2-dtbs := static_base_2.dtb $(apply_static_overlay_2) -$(obj)/static_test_1.dtb: $(obj)/static_base_1.dtb $(addprefix $(obj)/,$(apply_static_overlay_1)) - $(call if_changed,fdtoverlay) - -$(obj)/static_test_2.dtb: $(obj)/static_base_2.dtb $(addprefix $(obj)/,$(apply_static_overlay_2)) - $(call if_changed,fdtoverlay) - -always-$(CONFIG_OF_OVERLAY) += static_test_1.dtb static_test_2.dtb +dtb-$(CONFIG_OF_OVERLAY) += test1.dtb test2.dtb
scripts/Makefile.lib +12 -0
@@ -66,6 +66,9 @@ multi-used := $(multi-used-y) $(multi-used-m) real-obj-y := $(foreach m, $(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) real-obj-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)),$(m))) +real-dtb-y := $(foreach m,$(dtb-y), $(if $(strip $($(m:.dtb=-dtbs))),$($(m:.dtb=-dtbs)),)) +dtb-y += $(real-dtb-y) + always-y += $(always-m) # hostprogs-always-y += foo
@@ -332,6 +335,15 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) + +quiet_cmd_fdtoverlay = DTOVL $@ + cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(real-prereqs) + +.SECONDEXPANSION: + +$(obj)/%.dtb: $$(addprefix $$(obj)/,$$(%-dtbs)) FORCE + $(call if_changed,fdtoverlay) + DT_CHECKER ?= dt-validate DT_BINDING_DIR := Documentation/devicetree/bindings # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
Signature · 1 line
2.27.0
Re: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
Quoted 20 lines · Rob Herring
scripts/Makefile.lib +5
-0@@ -66,6 +66,9 @@ multi-used := $(multi-used-y) $(multi-used-m) real-obj-y := $(foreach m, $(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) real-obj-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)),$(m))) +real-dtb-y := $(foreach m,$(dtb-y), $(if $(strip $($(m:.dtb=-dtbs))),$($(m:.dtb=-dtbs)),)) +dtb-y += $(real-dtb-y) + always-y += $(always-m) # hostprogs-always-y += foo@@ -332,6 +335,15 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) + +quiet_cmd_fdtoverlay = DTOVL $@
scripts/Makefile.lib $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE · line 349
Quoted 10 lines
scripts/Makefile.lib +7
-0+ cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(real-prereqs) + +.SECONDEXPANSION: + +$(obj)/%.dtb: $$(addprefix $$(obj)/,$$(%-dtbs)) FORCE + $(call if_changed,fdtoverlay) + DT_CHECKER ?= dt-validate DT_BINDING_DIR := Documentation/devicetree/bindings # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
Thanks, this simplifies it greatly for platform guys.
Signature · 1 line
viresh
Re: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
In reply to Rob Herringscripts/Makefile.lib multi-used := $(multi-used-y) $(multi-used-m) · line 69
Quoted 9 lines · Rob Herring
scripts/Makefile.lib +1
-0@@ -66,6 +66,9 @@ multi-used := $(multi-used-y) $(multi-used-m) real-obj-y := $(foreach m, $(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) real-obj-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)),$(m))) +real-dtb-y := $(foreach m,$(dtb-y), $(if $(strip $($(m:.dtb=-dtbs))),$($(m:.dtb=-dtbs)),))
Sorry for my lack of knowledge, but what does (m:.dtb=-dtbs) do exactly ?
Quoted 11 lines
scripts/Makefile.lib +4
-0+dtb-y += $(real-dtb-y) + always-y += $(always-m) # hostprogs-always-y += foo@@ -332,6 +335,15 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) + +quiet_cmd_fdtoverlay = DTOVL $@
scripts/Makefile.lib $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE · line 349
Quoted 10 lines
scripts/Makefile.lib +7
-0+ cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(real-prereqs) + +.SECONDEXPANSION: + +$(obj)/%.dtb: $$(addprefix $$(obj)/,$$(%-dtbs)) FORCE + $(call if_changed,fdtoverlay) + DT_CHECKER ?= dt-validate DT_BINDING_DIR := Documentation/devicetree/bindings # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/Makefile
I tried to test a dtbo from arch/ code like this:
arch/arm64/boot/dts/hisilicon/Makefile +5 -0
@@ -6,3 +6,8 @@ dtb-$(CONFIG_ARCH_HISI) += hi6220-hikey.dtb dtb-$(CONFIG_ARCH_HISI) += hip05-d02.dtb dtb-$(CONFIG_ARCH_HISI) += hip06-d03.dtb dtb-$(CONFIG_ARCH_HISI) += hip07-d05.dtb + +DTC_FLAGS_hi3660-hikey960 += -@ + +test1-dtbs := hi3660-hikey960.dtb hi3660-hikey960-overlay.dtbo +dtb-y += test1.dtb
arch/arm64/boot/dts/hisilicon/hi3660-hikey960-overlay.dts new file +16 -0
@@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +&dwmmc2 { + #address-cells = <0x1>; + #size-cells = <0x0>; + + wlcore2: wlcore@5 { + compatible = "ti,wl1837"; + reg = <2>; + interrupt-parent = <&gpio22>; + interrupts = <3 1>; + test = <1>; + }; +};
Even after your patch there are some issues I am facing:
1. dtbs_check doesn't test hi3660-hikey960-overlay.dts. I also tried to add it to dtbo-y +=, but that didn't do anything as well.
I expected this to work as we have this in scripts/Makefile.lib:
ifneq ($(CHECK_DTBS),)
extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))
+extra-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y))
extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
+extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-))
endif
2. This fails dtbs_check as it tries to run it for the source file of test1.dtb
$ make ARCH=arm64 O=../barm64/ -j8 CROSS_COMPILE=aarch64-linux-gnu- dtbs_check make[1]: Entering directory '/mnt/ssd/all/work/repos/devel/barm64' make[3]: *** No rule to make target 'arch/arm64/boot/dts/hisilicon/test1.dt.yaml', needed by '__build'. Stop. /mnt/ssd/all/work/repos/devel/linux/scripts/Makefile.build:496: recipe for target 'arch/arm64/boot/dts/hisilicon' failed make[2]: *** [arch/arm64/boot/dts/hisilicon] Error 2 make[2]: *** Waiting for unfinished jobs.... /mnt/ssd/all/work/repos/devel/linux/Makefile:1345: recipe for target 'dtbs' failed make[1]: *** [dtbs] Error 2 make[1]: Leaving directory '/mnt/ssd/all/work/repos/devel/barm64' Makefile:185: recipe for target '__sub-make' failed make: *** [__sub-make] Error 2
I am not sure how to fix this.
Signature · 1 line
viresh
Rob Herring
maintainerRe: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
Quoted 10 lines · Viresh Kumar
Quoted 8 lines · Rob Herring
scripts/Makefile.lib +0
-0@@ -66,6 +66,9 @@ multi-used := $(multi-used-y) $(multi-used-m) real-obj-y := $(foreach m, $(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) real-obj-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)),$(m)))
Quoted 4 lines
scripts/Makefile.lib multi-used := $(multi-used-y) $(multi-used-m) · line 69
Quoted 1 line
scripts/Makefile.lib +1
-0+real-dtb-y := $(foreach m,$(dtb-y), $(if $(strip $($(m:.dtb=-dtbs))),$($(m:.dtb=-dtbs)),))Sorry for my lack of knowledge, but what does (m:.dtb=-dtbs) do exactly ?
In string 'm' replace '.dtb' with '-dtbs'. Then we get the value of that variable.
Quoted 70 lines
Quoted 12 lines
scripts/Makefile.lib +4
-0+dtb-y += $(real-dtb-y) + always-y += $(always-m) # hostprogs-always-y += foo@@ -332,6 +335,15 @@ $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE $(obj)/%.dtbo: $(src)/%.dts $(DTC) FORCE $(call if_changed_dep,dtc) + +quiet_cmd_fdtoverlay = DTOVL $@scripts/Makefile.lib $(obj)/%.dtb: $(src)/%.dts $(DTC) FORCE · line 349
Quoted 10 lines
scripts/Makefile.lib +7
-0+ cmd_fdtoverlay = $(objtree)/scripts/dtc/fdtoverlay -o $@ -i $(real-prereqs) + +.SECONDEXPANSION: + +$(obj)/%.dtb: $$(addprefix $$(obj)/,$$(%-dtbs)) FORCE + $(call if_changed,fdtoverlay) + DT_CHECKER ?= dt-validate DT_BINDING_DIR := Documentation/devicetree/bindings # DT_TMP_SCHEMA may be overridden from Documentation/devicetree/bindings/MakefileI tried to test a dtbo from
arch/code like this:arch/arm64/boot/dts/hisilicon/Makefile +5
-0@@ -6,3 +6,8 @@ dtb-$(CONFIG_ARCH_HISI) += hi6220-hikey.dtb dtb-$(CONFIG_ARCH_HISI) += hip05-d02.dtb dtb-$(CONFIG_ARCH_HISI) += hip06-d03.dtb dtb-$(CONFIG_ARCH_HISI) += hip07-d05.dtb + +DTC_FLAGS_hi3660-hikey960 += -@ + +test1-dtbs := hi3660-hikey960.dtb hi3660-hikey960-overlay.dtbo +dtb-y += test1.dtbarch/arm64/boot/dts/hisilicon/hi3660-hikey960-overlay.dts new file +16
-0@@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +&dwmmc2 { + #address-cells = <0x1>; + #size-cells = <0x0>; + + wlcore2: wlcore@5 { + compatible = "ti,wl1837"; + reg = <2>; + interrupt-parent = <&gpio22>; + interrupts = <3 1>; + test = <1>; + }; +};Even after your patch there are some issues I am facing:
1.
dtbs_checkdoesn't testhi3660-hikey960-overlay.dts. I also tried to add it to dtbo-y +=, but that didn't do anything as well.I expected this to work as we have this in
scripts/Makefile.lib:ifneq ($(CHECK_DTBS),)
extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))
arch/arm64/boot/dts/hisilicon/hi3660-hikey960-overlay.dts
Quoted 4 lines
arch/arm64/boot/dts/hisilicon/hi3660-hikey960-overlay.dts new file +2
-0+extra-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y)) extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-)) +extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-)) endif
I'll have to try that out. I think that should work.
Quoted 15 lines
2. This fails
dtbs_checkas it tries to run it for the source file of test1.dtb$ make ARCH=arm64 O=../barm64/ -j8 CROSS_COMPILE=aarch64-linux-gnu- dtbs_check make[1]: Entering directory '/mnt/ssd/all/work/repos/devel/barm64' make[3]: *** No rule to make target 'arch/arm64/boot/dts/hisilicon/test1.dt.yaml', needed by '__build'. Stop. /mnt/ssd/all/work/repos/devel/linux/scripts/Makefile.build:496: recipe for target 'arch/arm64/boot/dts/hisilicon' failed make[2]: *** [arch/arm64/boot/dts/hisilicon] Error 2 make[2]: *** Waiting for unfinished jobs.... /mnt/ssd/all/work/repos/devel/linux/Makefile:1345: recipe for target 'dtbs' failed make[1]: *** [dtbs] Error 2 make[1]: Leaving directory '/mnt/ssd/all/work/repos/devel/barm64' Makefile:185: recipe for target '__sub-make' failed make: *** [__sub-make] Error 2
Quoted 1 line
I am not sure how to fix this.
Even if we fixed the make rules, it's not going to work with validation. There's some information from source files that we maintain in yaml output, but is lost in dtb output. For example, the sizes of /bits/ syntax are maintained. For now, I think we'll want to just validate base and overlays separately. We may need to turn off checks in overlays for required properties as they may be incomplete. We already do that on disabled nodes.
Rob
Re: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
Quoted 2 lines · Rob Herring
In string 'm' replace '.dtb' with '-dtbs'. Then we get the value of that variable.
Ah, thanks. I was able to get everything to work as expected now :)
Quoted 8 lines
Review
Quoted 6 lines
ifneq ($(CHECK_DTBS),)
extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))(quoted diff) +2
-0+extra-y += $(patsubst %.dtbo,%.dt.yaml, $(dtb-y)) extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-)) +extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtbo,%.dt.yaml, $(dtb-)) endifI'll have to try that out. I think that should work.
It works with your patch itself, just that it was done after the failure and so wasn't happening.
Quoted 17 lines
Quoted 15 lines
2. This fails
dtbs_checkas it tries to run it for the source file of test1.dtb$ make ARCH=arm64 O=../barm64/ -j8 CROSS_COMPILE=aarch64-linux-gnu- dtbs_check make[1]: Entering directory '/mnt/ssd/all/work/repos/devel/barm64' make[3]: *** No rule to make target 'arch/arm64/boot/dts/hisilicon/test1.dt.yaml', needed by '__build'. Stop. /mnt/ssd/all/work/repos/devel/linux/scripts/Makefile.build:496: recipe for target 'arch/arm64/boot/dts/hisilicon' failed make[2]: *** [arch/arm64/boot/dts/hisilicon] Error 2 make[2]: *** Waiting for unfinished jobs.... /mnt/ssd/all/work/repos/devel/linux/Makefile:1345: recipe for target 'dtbs' failed make[1]: *** [dtbs] Error 2 make[1]: Leaving directory '/mnt/ssd/all/work/repos/devel/barm64' Makefile:185: recipe for target '__sub-make' failed make: *** [__sub-make] Error 2Quoted 1 line
I am not sure how to fix this.
Quoted 7 lines
Even if we fixed the make rules, it's not going to work with validation. There's some information from source files that we maintain in yaml output, but is lost in dtb output. For example, the sizes of /bits/ syntax are maintained. For now, I think we'll want to just validate base and overlays separately. We may need to turn off checks in overlays for required properties as they may be incomplete. We already do that on disabled nodes.
I did this instead and it made everything work, we don't try dt.yaml for the test1.dtb file anymore, is this acceptable ?
scripts/Makefile.lib +1 -1
@@ -66,7 +66,7 @@ multi-used := $(multi-used-y) $(multi-used-m) real-obj-y := $(foreach m, $(obj-y), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)),$(m))) real-obj-m := $(foreach m, $(obj-m), $(if $(strip $($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)) $($(m:.o=-))),$($(m:.o=-objs)) $($(m:.o=-y)) $($(m:.o=-m)),$(m))) -real-dtb-y := $(foreach m,$(dtb-y), $(if $(strip $($(m:.dtb=-dtbs))),$($(m:.dtb=-dtbs)),)) +real-dtb-y := $(foreach m,$(overlay-y), $(if $(strip $($(m:.dtb=-dtbs))),$($(m:.dtb=-dtbs)),)) dtb-y += $(real-dtb-y) always-y += $(always-m)
arch/arm64/boot/dts/hisilicon/Makefile +5 -0
@@ -6,3 +6,8 @@ dtb-$(CONFIG_ARCH_HISI) += hi6220-hikey.dtb dtb-$(CONFIG_ARCH_HISI) += hip05-d02.dtb dtb-$(CONFIG_ARCH_HISI) += hip06-d03.dtb dtb-$(CONFIG_ARCH_HISI) += hip07-d05.dtb + +DTC_FLAGS_hi3660-hikey960 += -@ + +test1-dtbs := hi3660-hikey960.dtb hi3660-hikey960-overlay.dtbo +overlay-y += test1.dtb
arch/arm64/boot/dts/hisilicon/hi3660-hikey960-overlay.dts new file +16 -0
@@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 +/dts-v1/; +/plugin/; + +&dwmmc2 { + #address-cells = <0x1>; + #size-cells = <0x0>; + + wlcore2: wlcore@5 { + compatible = "ti,wl1837"; + reg = <2>; + interrupt-parent = <&gpio22>; + interrupts = <3 1>; + test = <1>; + }; +};
Signature · 1 line
viresh
Re: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
In reply to Rob HerringQuoted 3 lines · Rob Herring
We may need to turn off
checks in overlays for required properties as they may be incomplete. We already do that on disabled nodes.
And after decent amount of effort understanding how to do this, I finally did it in a not so efficient way, I am sure you can help improving it :)
Author: Viresh Kumar <[email protected]> Date: Tue Feb 9 12:19:50 2021 +0530
dt-validate: Skip "required property" checks for overlays
The overlays may not carry the required properties and would depend on the base dtb to carry those, there is no point raising those errors here.
--- tools/dt-validate | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
tools/dt-validate +17 -0
@@ -80,6 +80,23 @@ show_unmatched = False (filename, line, col, fullname, node['compatible']), file=sys.stderr) continue + if nodename == '/': + is_fragment = False + for name in node.items(): + if name[0] == 'fragment@0': + is_fragment = True + break; + + if is_fragment == True: + if 'required property' in error.message: + continue + elif error.context: + for e in error.context: + if not 'required property' in e.message: + break + else: + continue + print(dtschema.format_error(filename, error, nodename=nodename, verbose=verbose) + '\n\tFrom schema: ' + schema['$filename'], file=sys.stderr)
Signature · 1 line
viresh
Re: [PATCH V7 6/6] of: unittest: Statically apply overlays using fdtoverlay
Quoted 3 lines · Viresh Kumar
And after decent amount of effort understanding how to do this, I finally did it in a not so efficient way, I am sure you can help improving it :)
Ping!
Also, where do we send patches for dt-schema ? Which list ?
Quoted 42 lines
Author: Viresh Kumar <[email protected]> Date: Tue Feb 9 12:19:50 2021 +0530dt-validate: Skip "required property" checks for overlays
The overlays may not carry the required properties and would depend on the base dtb to carry those, there is no point raising those errors here.
Signed-off-by Viresh Kumar <[email protected]>--- tools/dt-validate | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)tools/dt-validate +17
-0@@ -80,6 +80,23 @@ show_unmatched = False (filename, line, col, fullname, node['compatible']), file=sys.stderr) continue + if nodename == '/': + is_fragment = False + for name in node.items(): + if name[0] == 'fragment@0': + is_fragment = True + break; + + if is_fragment == True: + if 'required property' in error.message: + continue + elif error.context: + for e in error.context: + if not 'required property' in e.message: + break + else: + continue + print(dtschema.format_error(filename, error, nodename=nodename, verbose=verbose) + '\n\tFrom schema: ' + schema['$filename'], file=sys.stderr)
Signature · 1 line
viresh
Rob Herring
maintainerQuoted 46 lines · Viresh Kumar
Hi,
This patchset makes necessary changes to the kernel to add support for building overlays (%.dtbo) and the required fdtoverlay tool. This also builds static_test.dtb using most of the existing overlay tests present in
drivers/of/unittest-data/for better test coverage.Note that in order for anyone to test this stuff, you need to manually run the ./update-dtc-source.sh script once to fetch the necessary changes from the external DTC project (i.e.
fdtoverlay.cand this[1] patch).I have tested this patchset for static and runtime testing (on Hikey board) and no issues were reported.
V7:
- Add a comment inscripts/dtc/Makefile
- Add Ack from Masahiro for patch 4/6.
- Drop word "merge" from commit log of 2/6.
- Splitapply_static_overlay, static_test.dtb, andstatic_base.dtsinto two parts to handleoverlay_base.dtsandtestcases.dtsseparately.V6:
- Create separate rules for dtbo-s and separate entries in .gitignore in 4/6 (Masahiro).
- A new file layout for handling all overlays for existing and new tests 5/6 (Frank).
- Includeoverlay.dtsas well now in 6/6 (Frank).V5:
- Don't reuse
DTC_SOURCEforfdtoverlay.cin patch 1/5 (Frank).- Update .gitignore and
scripts/Makefile.dtbinst, drop dtbo-y syntax andDTC_FLAGS+= -@ in patch 4/5 (Masahiro).- Remove the intermediate dtb, rename output to static_test.dtb, don't use overlay.dtb and overlay_base.dtb for static builds, improved layout/comments in
Makefilefor patch 5/5 (Frank).--
Viresh[1] https://github.com/dgibson/dtc/commit/163f0469bf2ed8b2fe5aa15bc796b93c70243ddc
[2] https://lore.kernel.org/lkml/[email protected]/
Quoted 7 lines
Viresh Kumar (6):
scripts: dtc: Fetchfdtoverlay.cfrom external DTC project
scripts: dtc: Build fdtoverlay tool
scripts: dtc: Remove the unusedfdtdump.cfile
kbuild: Add support to build overlays (%.dtbo)
of: unittest: Createoverlay_common.dtsiandtestcases_common.dtsi
of: unittest: Statically apply overlays using fdtoverlay
I've applied the first 4 patches and did a dtc sync after patch 1.
Rob