[U-Boot] [PATCH v3 0/3] Simplify dts/Makefile and support multiple DTBs generation

1/3 re-writes dts/Makefile more simply. It does not change the behavior except removal of ./u-boot.dts
2/3 moves *.dts from board/$(VENDOR)/dts to arch/$(ARCH)/dts
3/3 adds multipe DTBs generation (Multiple DTBs generation was suggested by Simon.)
This patch uses my Kbuild series as a prerequisite. "Switch over to real Kbuild" series version 9 must be applied beforehand.
Changes in v3: - Fix build error for x86 architecture - Change shorten log CP to COPY
Changes in v2: - Rebase on Kbuild series v9 - Add ';' which was missing in arch/arm/lib/board.c - Add 2/3 and 3/3
Masahiro Yamada (3): dts: re-write dts/Makefile more simply with Kbuild dts: move device tree sources to arch/$(ARCH)/dts/ dts: generate multiple device tree blobs
.gitignore | 1 - Makefile | 16 ++--- arch/arm/dts/.gitignore | 1 + arch/arm/dts/Makefile | 37 ++++++++++ .../arm}/dts/exynos5250-arndale.dts | 0 .../arm}/dts/exynos5250-smdk5250.dts | 0 .../samsung => arch/arm}/dts/exynos5250-snow.dts | 0 .../arm}/dts/exynos5420-smdk5420.dts | 0 .../nvidia => arch/arm}/dts/tegra114-dalmore.dts | 0 .../arm}/dts/tegra20-colibri_t20_iris.dts | 0 {board/nvidia => arch/arm}/dts/tegra20-harmony.dts | 0 .../arm}/dts/tegra20-medcom-wide.dts | 0 {board/compal => arch/arm}/dts/tegra20-paz00.dts | 0 .../arm}/dts/tegra20-plutux.dts | 0 .../nvidia => arch/arm}/dts/tegra20-seaboard.dts | 0 .../arm}/dts/tegra20-tamonten.dtsi | 0 .../arm}/dts/tegra20-tec.dts | 0 .../arm}/dts/tegra20-trimslice.dts | 0 {board/nvidia => arch/arm}/dts/tegra20-ventana.dts | 0 .../nvidia => arch/arm}/dts/tegra20-whistler.dts | 0 {board/nvidia => arch/arm}/dts/tegra30-beaver.dts | 0 {board/nvidia => arch/arm}/dts/tegra30-cardhu.dts | 0 .../arm}/dts/tegra30-tamonten.dtsi | 0 .../arm}/dts/tegra30-tec-ng.dts | 0 {board/xilinx => arch/arm}/dts/zynq-microzed.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc702.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc706.dts | 0 .../xilinx => arch/arm}/dts/zynq-zc770-xm010.dts | 0 .../xilinx => arch/arm}/dts/zynq-zc770-xm012.dts | 0 .../xilinx => arch/arm}/dts/zynq-zc770-xm013.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zed.dts | 0 arch/arm/lib/board.c | 2 +- arch/microblaze/dts/.gitignore | 1 + arch/microblaze/dts/Makefile | 11 +++ .../microblaze}/dts/microblaze-generic.dts | 0 arch/microblaze/lib/board.c | 2 +- arch/x86/dts/.gitignore | 1 + arch/x86/dts/Makefile | 12 ++++ {board/chromebook-x86 => arch/x86}/dts/alex.dts | 0 {board/chromebook-x86 => arch/x86}/dts/link.dts | 0 arch/x86/lib/init_helpers.c | 2 +- common/board_f.c | 2 +- dts/.gitignore | 2 + dts/Makefile | 81 ++++++++-------------- include/common.h | 2 +- scripts/Makefile.lib | 11 ++- 46 files changed, 112 insertions(+), 72 deletions(-) create mode 100644 arch/arm/dts/.gitignore create mode 100644 arch/arm/dts/Makefile rename {board/samsung => arch/arm}/dts/exynos5250-arndale.dts (100%) rename {board/samsung => arch/arm}/dts/exynos5250-smdk5250.dts (100%) rename {board/samsung => arch/arm}/dts/exynos5250-snow.dts (100%) rename {board/samsung => arch/arm}/dts/exynos5420-smdk5420.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra114-dalmore.dts (100%) rename {board/toradex => arch/arm}/dts/tegra20-colibri_t20_iris.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-harmony.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-medcom-wide.dts (100%) rename {board/compal => arch/arm}/dts/tegra20-paz00.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-plutux.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-seaboard.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-tamonten.dtsi (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-tec.dts (100%) rename {board/compulab => arch/arm}/dts/tegra20-trimslice.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-ventana.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-whistler.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra30-beaver.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra30-cardhu.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra30-tamonten.dtsi (100%) rename {board/avionic-design => arch/arm}/dts/tegra30-tec-ng.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-microzed.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc702.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc706.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc770-xm010.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc770-xm012.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc770-xm013.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zed.dts (100%) create mode 100644 arch/microblaze/dts/.gitignore create mode 100644 arch/microblaze/dts/Makefile rename {board/xilinx => arch/microblaze}/dts/microblaze-generic.dts (100%) create mode 100644 arch/x86/dts/.gitignore create mode 100644 arch/x86/dts/Makefile rename {board/chromebook-x86 => arch/x86}/dts/alex.dts (100%) rename {board/chromebook-x86 => arch/x86}/dts/link.dts (100%) create mode 100644 dts/.gitignore

Useful rules in scripts/Makefile.lib allows us to easily generate a device tree blob and wrap it in assembly code.
We do not need to parse a linker script to get output format and arch.
This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com ---
Changes in v3: None Changes in v2: - Rebase on Kbuild series v9 - Add ';' which was missing in arch/arm/lib/board.c
.gitignore | 1 - Makefile | 16 +++++----- arch/arm/lib/board.c | 2 +- arch/microblaze/lib/board.c | 2 +- arch/x86/lib/init_helpers.c | 2 +- common/board_f.c | 2 +- dts/.gitignore | 2 ++ dts/Makefile | 72 +++++++++++++-------------------------------- include/common.h | 2 +- scripts/Makefile.lib | 12 ++++---- 10 files changed, 41 insertions(+), 72 deletions(-) create mode 100644 dts/.gitignore
diff --git a/.gitignore b/.gitignore index 24019b3..5882ff5 100644 --- a/.gitignore +++ b/.gitignore @@ -48,7 +48,6 @@ /u-boot.lds /u-boot.ubl /u-boot.ais -/u-boot.dtb /u-boot.sb
# diff --git a/Makefile b/Makefile index cb9c243..b425bfb 100644 --- a/Makefile +++ b/Makefile @@ -722,7 +722,7 @@ ALL-$(CONFIG_RAMBOOT_PBL) += u-boot.pbl ALL-$(CONFIG_SPL) += spl/u-boot-spl.bin ALL-$(CONFIG_SPL_FRAMEWORK) += u-boot.img ALL-$(CONFIG_TPL) += tpl/u-boot-tpl.bin -ALL-$(CONFIG_OF_SEPARATE) += u-boot.dtb u-boot-dtb.bin +ALL-$(CONFIG_OF_SEPARATE) += u-boot-dtb.bin ifneq ($(CONFIG_SPL_TARGET),) ALL-$(CONFIG_SPL) += $(CONFIG_SPL_TARGET:"%"=%) endif @@ -746,11 +746,11 @@ endif
all: $(ALL-y)
-u-boot.dtb: checkdtc u-boot - $(MAKE) $(build)=dts binary - mv dts/dt.dtb $@ +PHONY += dtbs +dtbs dts/dt.dtb: checkdtc u-boot + $(Q)$(MAKE) $(build)=dts dtbs
-u-boot-dtb.bin: u-boot.bin u-boot.dtb +u-boot-dtb.bin: u-boot.bin dts/dt.dtb cat $^ >$@
u-boot.hex: u-boot @@ -877,8 +877,8 @@ u-boot-nodtb-tegra.bin: spl/u-boot-spl.bin u-boot.bin rm spl/u-boot-spl-pad.bin
ifeq ($(CONFIG_OF_SEPARATE),y) -u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin u-boot.dtb - cat u-boot-nodtb-tegra.bin u-boot.dtb > $@ +u-boot-dtb-tegra.bin: u-boot-nodtb-tegra.bin dts/dt.dtb + cat $^ > $@ endif endif
@@ -1173,7 +1173,7 @@ include/license.h: tools/bin2header COPYING # Directories & files removed with 'make clean' CLEAN_DIRS += $(MODVERDIR) CLEAN_FILES += u-boot.lds include/bmp_logo.h include/bmp_logo_data.h \ - board/*/config.tmp board/*/*/config.tmp dts/*.tmp \ + board/*/config.tmp board/*/*/config.tmp \ include/autoconf.mk* include/spl-autoconf.mk \ include/tpl-autoconf.mk
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index b770e25..38b9c7d 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -280,7 +280,7 @@ void board_init_f(ulong bootflag) gd->mon_len = _bss_end_ofs; #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */ - gd->fdt_blob = _binary_dt_dtb_start; + gd->fdt_blob = __dtb_db_begin; #elif defined CONFIG_OF_SEPARATE /* FDT is at end of image */ gd->fdt_blob = (void *)(_end_ofs + _TEXT_BASE); diff --git a/arch/microblaze/lib/board.c b/arch/microblaze/lib/board.c index 59956a8..fafeeae 100644 --- a/arch/microblaze/lib/board.c +++ b/arch/microblaze/lib/board.c @@ -87,7 +87,7 @@ void board_init_f(ulong not_used)
#ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */ - gd->fdt_blob = _binary_dt_dtb_start; + gd->fdt_blob = __dtb_dt_begin; #elif defined CONFIG_OF_SEPARATE /* FDT is at end of image */ gd->fdt_blob = (void *)__end; diff --git a/arch/x86/lib/init_helpers.c b/arch/x86/lib/init_helpers.c index 582c0ff..b5d937f 100644 --- a/arch/x86/lib/init_helpers.c +++ b/arch/x86/lib/init_helpers.c @@ -92,7 +92,7 @@ int find_fdt(void) { #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */ - gd->fdt_blob = _binary_dt_dtb_start; + gd->fdt_blob = __dtb_dt_begin; #elif defined CONFIG_OF_SEPARATE /* FDT is at end of image */ gd->fdt_blob = (ulong *)&_end; diff --git a/common/board_f.c b/common/board_f.c index aa70c3e..d0ee6f7 100644 --- a/common/board_f.c +++ b/common/board_f.c @@ -360,7 +360,7 @@ static int setup_fdt(void) { #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */ - gd->fdt_blob = _binary_dt_dtb_start; + gd->fdt_blob = __dtb_dt_begin; #elif defined CONFIG_OF_SEPARATE /* FDT is at end of image */ # ifdef CONFIG_SYS_SYM_OFFSETS diff --git a/dts/.gitignore b/dts/.gitignore new file mode 100644 index 0000000..1b37180 --- /dev/null +++ b/dts/.gitignore @@ -0,0 +1,2 @@ +*.dtb +*.dtb.S diff --git a/dts/Makefile b/dts/Makefile index 1e7609a..c47fba7 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -7,64 +7,32 @@ # This Makefile builds the internal U-Boot fdt if CONFIG_OF_CONTROL is # enabled. See doc/README.fdt-control for more details.
-DTS_INCDIRS = $(SRCTREE)/board/$(VENDOR)/$(BOARD)/dts -DTS_INCDIRS += $(SRCTREE)/board/$(VENDOR)/dts -DTS_INCDIRS += $(SRCTREE)/arch/$(ARCH)/dts +DEVICE_TREE ?= $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%) +ifeq ($(DEVICE_TREE),) +DEVICE_TREE := notfound +endif
-DTS_CPPFLAGS := -x assembler-with-cpp -undef -D__DTS__ \ - -nostdinc $(addprefix -I,$(DTS_INCDIRS)) +DTS := $(srctree)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts
-DTC_FLAGS := -R 4 -p 0x1000 \ - $(addprefix -i ,$(DTS_INCDIRS)) +DTC_FLAGS += -i $(srctree)/arch/$(ARCH)/dts -R 4 -p 0x1000
-# Use a constant name for this so we can access it from C code. -# objcopy doesn't seem to allow us to set the symbol name independently of -# the filename. -DT_BIN := $(obj)/dt.dtb +$(obj)/dt.dtb: $(DTS) FORCE + $(call if_changed_dep,dtc)
-DEVICE_TREE ?= $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%) -ifeq ($(DEVICE_TREE),) -$(DT_BIN): FORCE - echo >&2 "Please define CONFIG_DEFAULT_DEVICE_TREE in your board header file" -else -$(DT_BIN): $(TOPDIR)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts - $(CPP) $(DTS_CPPFLAGS) $< -o $(DT_BIN).dts.tmp - $(DTC) $(DTC_FLAGS) -O dtb -o ${DT_BIN} $(DT_BIN).dts.tmp -endif +targets += dt.dtb
-process_lds = \ - $(1) | sed -r -n 's/^OUTPUT_$(2)[ ("]*([^")]*).*/\1/p' +$(DTS): + @echo >&2 + @echo >&2 "Device Tree Source is not specified." + @echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'" + @echo >&2 "or build with 'DEVICE_TREE=<dts-file-name>' argument" + @/bin/false
-# Run the compiler and get the link script from the linker -GET_LDS = $(CC) $(c_flags) $(ld_flags) -Wl,--verbose 2>&1 +.SECONDARY: $(obj)/dt.dtb.S
-$(obj)/dt.o: $(DT_BIN) - # We want the output format and arch. - # We also hope to win a prize for ugliest Makefile / shell interaction - # We look in the LDSCRIPT first. - # Then try the linker which should give us the answer. - # Then check it worked. - [ -n "$(LDSCRIPT)" ] && \ - oformat=`$(call process_lds,cat $(LDSCRIPT),FORMAT)` && \ - oarch=`$(call process_lds,cat $(LDSCRIPT),ARCH)` ;\ - \ - [ -z $${oformat} ] && \ - oformat=`$(call process_lds,$(GET_LDS),FORMAT)` ;\ - [ -z $${oarch} ] && \ - oarch=`$(call process_lds,$(GET_LDS),ARCH)` ;\ - \ - [ -z $${oformat} ] && \ - echo "Cannot read OUTPUT_FORMAT from lds file $(LDSCRIPT)" && \ - exit 1 || true ;\ - [ -z $${oarch} ] && \ - echo "Cannot read OUTPUT_ARCH from lds file $(LDSCRIPT)" && \ - exit 1 || true ;\ - \ - cd $(dir ${DT_BIN}) && \ - $(OBJCOPY) -I binary -O $${oformat} -B $${oarch} \ - $(notdir ${DT_BIN}) $(notdir $@) - rm $(DT_BIN) +obj-$(CONFIG_OF_EMBED) := dt.dtb.o
-obj-$(CONFIG_OF_EMBED) := dt.o +dtbs: $(obj)/dt.dtb + @:
-binary: $(DT_BIN) +clean-files := dt.dtb.S diff --git a/include/common.h b/include/common.h index c15e5a4..b590f3a 100644 --- a/include/common.h +++ b/include/common.h @@ -302,7 +302,7 @@ int checkdram (void); int last_stage_init(void); extern ulong monitor_flash_len; int mac_read_from_eeprom(void); -extern u8 _binary_dt_dtb_start[]; /* embedded device tree blob */ +extern u8 __dtb_dt_begin[]; /* embedded device tree blob */ int set_cpu_clk_info(void); int print_cpuinfo(void); int update_flash_size(int flash_size); diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index d4b5cb5..ee3ceac 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -151,9 +151,10 @@ cpp_flags = -Wp,-MD,$(depfile) $(NOSTDINC_FLAGS) $(UBOOTINCLUDE) \
ld_flags = $(LDFLAGS) $(ldflags-y)
+# Modified for U-Boot dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \ - -I$(srctree)/arch/$(SRCARCH)/boot/dts \ - -I$(srctree)/arch/$(SRCARCH)/boot/dts/include \ + -I$(srctree)/board/$(VENDOR)/dts/ \ + -I$(srctree)/arch/$(ARCH)/dts \ -undef -D__DTS__
# Finds the multi-part object the current object will be linked into @@ -247,25 +248,24 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \
# Generate an assembly file to wrap the output of the device tree compiler quiet_cmd_dt_S_dtb= DTB $@ +# Modified for U-Boot cmd_dt_S_dtb= \ ( \ - echo '#include <asm-generic/vmlinux.lds.h>'; \ echo '.section .dtb.init.rodata,"a"'; \ - echo '.balign STRUCT_ALIGNMENT'; \ echo '.global __dtb_$(*F)_begin'; \ echo '__dtb_$(*F)_begin:'; \ echo '.incbin "$<" '; \ echo '__dtb_$(*F)_end:'; \ echo '.global __dtb_$(*F)_end'; \ - echo '.balign STRUCT_ALIGNMENT'; \ ) > $@
$(obj)/%.dtb.S: $(obj)/%.dtb $(call cmd,dt_S_dtb)
quiet_cmd_dtc = DTC $@ +# Modified for U-Boot cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ - $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \ + dtc -O dtb -o $@ -b 0 \ -i $(dir $<) $(DTC_FLAGS) \ -d $(depfile).dtc.tmp $(dtc-tmp) ; \ cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)

Hi,
On 4 February 2014 19:28, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
Useful rules in scripts/Makefile.lib allows us to easily generate a device tree blob and wrap it in assembly code.
We do not need to parse a linker script to get output format and arch.
This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Sorry I left comments on v2.
Regards, Simon

On Wed, Feb 05, 2014 at 11:28:25AM +0900, Masahiro Yamada wrote:
Useful rules in scripts/Makefile.lib allows us to easily generate a device tree blob and wrap it in assembly code.
We do not need to parse a linker script to get output format and arch.
This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!

Hello Tom, Simon,
On Wed, 19 Feb 2014 16:11:11 -0500 Tom Rini trini@ti.com wrote:
On Wed, Feb 05, 2014 at 11:28:25AM +0900, Masahiro Yamada wrote:
Useful rules in scripts/Makefile.lib allows us to easily generate a device tree blob and wrap it in assembly code.
We do not need to parse a linker script to get output format and arch.
This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!
-- Tom
Ditto. Possibly it was missed because Simon and I were discussing in version 2 thread.
Besides, dts/dt.dtb is a prerequisite of dts/dt.dtb.S when CONFIG_OF_EMBED is enabled.
I believe keeping dts/dt.dtb is reasonable enough.
Better to keep both?
Yes I think so.
OK. I will revive ./u-boot.dtb and post a new version.
And I will send it as a single patch dropping 2/3 and 3/3. Do you think it's better?
Many kbuild-related patches are being stuck on patchwork and my local branch is getting messed up. I don't want to delay this patch any more.
I was planning to post a new version. But before that, version 3 was applied.
So, what should I do? Shall I post a follow-up patch to revive a device tree at the top directory (./u-boot.dtb) ?
Best Regards Masahiro Yamada

On Thu, Feb 20, 2014 at 06:30:44PM +0900, Masahiro Yamada wrote:
Hello Tom, Simon,
On Wed, 19 Feb 2014 16:11:11 -0500 Tom Rini trini@ti.com wrote:
On Wed, Feb 05, 2014 at 11:28:25AM +0900, Masahiro Yamada wrote:
Useful rules in scripts/Makefile.lib allows us to easily generate a device tree blob and wrap it in assembly code.
We do not need to parse a linker script to get output format and arch.
This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!
-- Tom
Ditto. Possibly it was missed because Simon and I were discussing in version 2 thread.
Besides, dts/dt.dtb is a prerequisite of dts/dt.dtb.S when CONFIG_OF_EMBED is enabled.
I believe keeping dts/dt.dtb is reasonable enough.
Better to keep both?
Yes I think so.
OK. I will revive ./u-boot.dtb and post a new version.
And I will send it as a single patch dropping 2/3 and 3/3. Do you think it's better?
Many kbuild-related patches are being stuck on patchwork and my local branch is getting messed up. I don't want to delay this patch any more.
I was planning to post a new version. But before that, version 3 was applied.
So, what should I do? Shall I post a follow-up patch to revive a device tree at the top directory (./u-boot.dtb) ?
heh, so this is what happens when I try and get ahead of the curve :) Just do a follow up to bring things into line with what you and Simon had agreed on.

On 02/04/2014 06:28 PM, Masahiro Yamada wrote:
Useful rules in scripts/Makefile.lib allows us to easily generate a device tree blob and wrap it in assembly code.
We do not need to parse a linker script to get output format and arch.
This commit deletes ./u-boot.dtb since it is a copy of dts/dt.dtb.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Changes in v3: None Changes in v2:
- Rebase on Kbuild series v9
- Add ';' which was missing in arch/arm/lib/board.c
<snip>
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index b770e25..38b9c7d 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -280,7 +280,7 @@ void board_init_f(ulong bootflag) gd->mon_len = _bss_end_ofs; #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */
- gd->fdt_blob = _binary_dt_dtb_start;
- gd->fdt_blob = __dtb_db_begin;
Is this a typo? I believe it should be __dtb_dt_begin. Did anyone see the compiling error?
York

Hi York,
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index b770e25..38b9c7d 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -280,7 +280,7 @@ void board_init_f(ulong bootflag) gd->mon_len = _bss_end_ofs; #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */
- gd->fdt_blob = _binary_dt_dtb_start;
- gd->fdt_blob = __dtb_db_begin;
Is this a typo? I believe it should be __dtb_dt_begin. Did anyone see the compiling error?
Yes, it's a typo. I had already posted a patch. http://patchwork.ozlabs.org/patch/342815/
Even such a simple one has been waiting for more than one month in Patchwork queue. :-(
For now, CONFIG_OF_EMBED is defined for MicroBlaze. I guess nobody saw the compile error.
Best Regards Masahiro Yamada]

Hi,
On 27 May 2014 18:54, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
Hi York,
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index b770e25..38b9c7d 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -280,7 +280,7 @@ void board_init_f(ulong bootflag) gd->mon_len = _bss_end_ofs; #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */
- gd->fdt_blob = _binary_dt_dtb_start;
- gd->fdt_blob = __dtb_db_begin;
Is this a typo? I believe it should be __dtb_dt_begin. Did anyone see the compiling error?
Yes, it's a typo. I had already posted a patch. http://patchwork.ozlabs.org/patch/342815/
Even such a simple one has been waiting for more than one month in Patchwork queue. :-(
For now, CONFIG_OF_EMBED is defined for MicroBlaze. I guess nobody saw the compile error.
I suspect all boards that use CONFIG_OF_CONTROL also use generic board now. I expect that this file will be deleted at the end of the year.
Regards, Simon

On 06/01/2014 06:34 PM, Simon Glass wrote:
Hi,
On 27 May 2014 18:54, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
Hi York,
diff --git a/arch/arm/lib/board.c b/arch/arm/lib/board.c index b770e25..38b9c7d 100644 --- a/arch/arm/lib/board.c +++ b/arch/arm/lib/board.c @@ -280,7 +280,7 @@ void board_init_f(ulong bootflag) gd->mon_len = _bss_end_ofs; #ifdef CONFIG_OF_EMBED /* Get a pointer to the FDT */
- gd->fdt_blob = _binary_dt_dtb_start;
- gd->fdt_blob = __dtb_db_begin;
Is this a typo? I believe it should be __dtb_dt_begin. Did anyone see the compiling error?
Yes, it's a typo. I had already posted a patch. http://patchwork.ozlabs.org/patch/342815/
Even such a simple one has been waiting for more than one month in Patchwork queue. :-(
For now, CONFIG_OF_EMBED is defined for MicroBlaze. I guess nobody saw the compile error.
I suspect all boards that use CONFIG_OF_CONTROL also use generic board now. I expect that this file will be deleted at the end of the year.
No. Microblaze has no generic board support yet. For zynq I have sent patches out but they will be merged in the next merge window.
Thanks, Michal

Unlike Linux Kernel, U-Boot historically had *.dts files under board/$(VENDOR)/dts/ and *.dtsi files under arch/$(ARCH)/dts/.
I think arch/$(ARCH)/dts dicretory is a better location to store both *.dts and *.dtsi files.
For example, before this commit, board/xilinx/dts directory had both Microblaze dts (microblaze-generic.dts) and ARM dts (zynq-*.dts), which are totally unrelated.
This commit moves *.dts to arch/$(ARCH)/dts/ directories, allowing us to describe nicely mutiple DTBs generation in the next commit.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com ---
Changes in v3: None Changes in v2: - Newly added
{board/samsung => arch/arm}/dts/exynos5250-arndale.dts | 0 {board/samsung => arch/arm}/dts/exynos5250-smdk5250.dts | 0 {board/samsung => arch/arm}/dts/exynos5250-snow.dts | 0 {board/samsung => arch/arm}/dts/exynos5420-smdk5420.dts | 0 {board/nvidia => arch/arm}/dts/tegra114-dalmore.dts | 0 {board/toradex => arch/arm}/dts/tegra20-colibri_t20_iris.dts | 0 {board/nvidia => arch/arm}/dts/tegra20-harmony.dts | 0 {board/avionic-design => arch/arm}/dts/tegra20-medcom-wide.dts | 0 {board/compal => arch/arm}/dts/tegra20-paz00.dts | 0 {board/avionic-design => arch/arm}/dts/tegra20-plutux.dts | 0 {board/nvidia => arch/arm}/dts/tegra20-seaboard.dts | 0 {board/avionic-design => arch/arm}/dts/tegra20-tamonten.dtsi | 0 {board/avionic-design => arch/arm}/dts/tegra20-tec.dts | 0 {board/compulab => arch/arm}/dts/tegra20-trimslice.dts | 0 {board/nvidia => arch/arm}/dts/tegra20-ventana.dts | 0 {board/nvidia => arch/arm}/dts/tegra20-whistler.dts | 0 {board/nvidia => arch/arm}/dts/tegra30-beaver.dts | 0 {board/nvidia => arch/arm}/dts/tegra30-cardhu.dts | 0 {board/avionic-design => arch/arm}/dts/tegra30-tamonten.dtsi | 0 {board/avionic-design => arch/arm}/dts/tegra30-tec-ng.dts | 0 {board/xilinx => arch/arm}/dts/zynq-microzed.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc702.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc706.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc770-xm010.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc770-xm012.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zc770-xm013.dts | 0 {board/xilinx => arch/arm}/dts/zynq-zed.dts | 0 {board/xilinx => arch/microblaze}/dts/microblaze-generic.dts | 0 {board/chromebook-x86 => arch/x86}/dts/alex.dts | 0 {board/chromebook-x86 => arch/x86}/dts/link.dts | 0 dts/Makefile | 4 ++-- scripts/Makefile.lib | 1 - 32 files changed, 2 insertions(+), 3 deletions(-) rename {board/samsung => arch/arm}/dts/exynos5250-arndale.dts (100%) rename {board/samsung => arch/arm}/dts/exynos5250-smdk5250.dts (100%) rename {board/samsung => arch/arm}/dts/exynos5250-snow.dts (100%) rename {board/samsung => arch/arm}/dts/exynos5420-smdk5420.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra114-dalmore.dts (100%) rename {board/toradex => arch/arm}/dts/tegra20-colibri_t20_iris.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-harmony.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-medcom-wide.dts (100%) rename {board/compal => arch/arm}/dts/tegra20-paz00.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-plutux.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-seaboard.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-tamonten.dtsi (100%) rename {board/avionic-design => arch/arm}/dts/tegra20-tec.dts (100%) rename {board/compulab => arch/arm}/dts/tegra20-trimslice.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-ventana.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra20-whistler.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra30-beaver.dts (100%) rename {board/nvidia => arch/arm}/dts/tegra30-cardhu.dts (100%) rename {board/avionic-design => arch/arm}/dts/tegra30-tamonten.dtsi (100%) rename {board/avionic-design => arch/arm}/dts/tegra30-tec-ng.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-microzed.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc702.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc706.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc770-xm010.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc770-xm012.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zc770-xm013.dts (100%) rename {board/xilinx => arch/arm}/dts/zynq-zed.dts (100%) rename {board/xilinx => arch/microblaze}/dts/microblaze-generic.dts (100%) rename {board/chromebook-x86 => arch/x86}/dts/alex.dts (100%) rename {board/chromebook-x86 => arch/x86}/dts/link.dts (100%)
diff --git a/board/samsung/dts/exynos5250-arndale.dts b/arch/arm/dts/exynos5250-arndale.dts similarity index 100% rename from board/samsung/dts/exynos5250-arndale.dts rename to arch/arm/dts/exynos5250-arndale.dts diff --git a/board/samsung/dts/exynos5250-smdk5250.dts b/arch/arm/dts/exynos5250-smdk5250.dts similarity index 100% rename from board/samsung/dts/exynos5250-smdk5250.dts rename to arch/arm/dts/exynos5250-smdk5250.dts diff --git a/board/samsung/dts/exynos5250-snow.dts b/arch/arm/dts/exynos5250-snow.dts similarity index 100% rename from board/samsung/dts/exynos5250-snow.dts rename to arch/arm/dts/exynos5250-snow.dts diff --git a/board/samsung/dts/exynos5420-smdk5420.dts b/arch/arm/dts/exynos5420-smdk5420.dts similarity index 100% rename from board/samsung/dts/exynos5420-smdk5420.dts rename to arch/arm/dts/exynos5420-smdk5420.dts diff --git a/board/nvidia/dts/tegra114-dalmore.dts b/arch/arm/dts/tegra114-dalmore.dts similarity index 100% rename from board/nvidia/dts/tegra114-dalmore.dts rename to arch/arm/dts/tegra114-dalmore.dts diff --git a/board/toradex/dts/tegra20-colibri_t20_iris.dts b/arch/arm/dts/tegra20-colibri_t20_iris.dts similarity index 100% rename from board/toradex/dts/tegra20-colibri_t20_iris.dts rename to arch/arm/dts/tegra20-colibri_t20_iris.dts diff --git a/board/nvidia/dts/tegra20-harmony.dts b/arch/arm/dts/tegra20-harmony.dts similarity index 100% rename from board/nvidia/dts/tegra20-harmony.dts rename to arch/arm/dts/tegra20-harmony.dts diff --git a/board/avionic-design/dts/tegra20-medcom-wide.dts b/arch/arm/dts/tegra20-medcom-wide.dts similarity index 100% rename from board/avionic-design/dts/tegra20-medcom-wide.dts rename to arch/arm/dts/tegra20-medcom-wide.dts diff --git a/board/compal/dts/tegra20-paz00.dts b/arch/arm/dts/tegra20-paz00.dts similarity index 100% rename from board/compal/dts/tegra20-paz00.dts rename to arch/arm/dts/tegra20-paz00.dts diff --git a/board/avionic-design/dts/tegra20-plutux.dts b/arch/arm/dts/tegra20-plutux.dts similarity index 100% rename from board/avionic-design/dts/tegra20-plutux.dts rename to arch/arm/dts/tegra20-plutux.dts diff --git a/board/nvidia/dts/tegra20-seaboard.dts b/arch/arm/dts/tegra20-seaboard.dts similarity index 100% rename from board/nvidia/dts/tegra20-seaboard.dts rename to arch/arm/dts/tegra20-seaboard.dts diff --git a/board/avionic-design/dts/tegra20-tamonten.dtsi b/arch/arm/dts/tegra20-tamonten.dtsi similarity index 100% rename from board/avionic-design/dts/tegra20-tamonten.dtsi rename to arch/arm/dts/tegra20-tamonten.dtsi diff --git a/board/avionic-design/dts/tegra20-tec.dts b/arch/arm/dts/tegra20-tec.dts similarity index 100% rename from board/avionic-design/dts/tegra20-tec.dts rename to arch/arm/dts/tegra20-tec.dts diff --git a/board/compulab/dts/tegra20-trimslice.dts b/arch/arm/dts/tegra20-trimslice.dts similarity index 100% rename from board/compulab/dts/tegra20-trimslice.dts rename to arch/arm/dts/tegra20-trimslice.dts diff --git a/board/nvidia/dts/tegra20-ventana.dts b/arch/arm/dts/tegra20-ventana.dts similarity index 100% rename from board/nvidia/dts/tegra20-ventana.dts rename to arch/arm/dts/tegra20-ventana.dts diff --git a/board/nvidia/dts/tegra20-whistler.dts b/arch/arm/dts/tegra20-whistler.dts similarity index 100% rename from board/nvidia/dts/tegra20-whistler.dts rename to arch/arm/dts/tegra20-whistler.dts diff --git a/board/nvidia/dts/tegra30-beaver.dts b/arch/arm/dts/tegra30-beaver.dts similarity index 100% rename from board/nvidia/dts/tegra30-beaver.dts rename to arch/arm/dts/tegra30-beaver.dts diff --git a/board/nvidia/dts/tegra30-cardhu.dts b/arch/arm/dts/tegra30-cardhu.dts similarity index 100% rename from board/nvidia/dts/tegra30-cardhu.dts rename to arch/arm/dts/tegra30-cardhu.dts diff --git a/board/avionic-design/dts/tegra30-tamonten.dtsi b/arch/arm/dts/tegra30-tamonten.dtsi similarity index 100% rename from board/avionic-design/dts/tegra30-tamonten.dtsi rename to arch/arm/dts/tegra30-tamonten.dtsi diff --git a/board/avionic-design/dts/tegra30-tec-ng.dts b/arch/arm/dts/tegra30-tec-ng.dts similarity index 100% rename from board/avionic-design/dts/tegra30-tec-ng.dts rename to arch/arm/dts/tegra30-tec-ng.dts diff --git a/board/xilinx/dts/zynq-microzed.dts b/arch/arm/dts/zynq-microzed.dts similarity index 100% rename from board/xilinx/dts/zynq-microzed.dts rename to arch/arm/dts/zynq-microzed.dts diff --git a/board/xilinx/dts/zynq-zc702.dts b/arch/arm/dts/zynq-zc702.dts similarity index 100% rename from board/xilinx/dts/zynq-zc702.dts rename to arch/arm/dts/zynq-zc702.dts diff --git a/board/xilinx/dts/zynq-zc706.dts b/arch/arm/dts/zynq-zc706.dts similarity index 100% rename from board/xilinx/dts/zynq-zc706.dts rename to arch/arm/dts/zynq-zc706.dts diff --git a/board/xilinx/dts/zynq-zc770-xm010.dts b/arch/arm/dts/zynq-zc770-xm010.dts similarity index 100% rename from board/xilinx/dts/zynq-zc770-xm010.dts rename to arch/arm/dts/zynq-zc770-xm010.dts diff --git a/board/xilinx/dts/zynq-zc770-xm012.dts b/arch/arm/dts/zynq-zc770-xm012.dts similarity index 100% rename from board/xilinx/dts/zynq-zc770-xm012.dts rename to arch/arm/dts/zynq-zc770-xm012.dts diff --git a/board/xilinx/dts/zynq-zc770-xm013.dts b/arch/arm/dts/zynq-zc770-xm013.dts similarity index 100% rename from board/xilinx/dts/zynq-zc770-xm013.dts rename to arch/arm/dts/zynq-zc770-xm013.dts diff --git a/board/xilinx/dts/zynq-zed.dts b/arch/arm/dts/zynq-zed.dts similarity index 100% rename from board/xilinx/dts/zynq-zed.dts rename to arch/arm/dts/zynq-zed.dts diff --git a/board/xilinx/dts/microblaze-generic.dts b/arch/microblaze/dts/microblaze-generic.dts similarity index 100% rename from board/xilinx/dts/microblaze-generic.dts rename to arch/microblaze/dts/microblaze-generic.dts diff --git a/board/chromebook-x86/dts/alex.dts b/arch/x86/dts/alex.dts similarity index 100% rename from board/chromebook-x86/dts/alex.dts rename to arch/x86/dts/alex.dts diff --git a/board/chromebook-x86/dts/link.dts b/arch/x86/dts/link.dts similarity index 100% rename from board/chromebook-x86/dts/link.dts rename to arch/x86/dts/link.dts diff --git a/dts/Makefile b/dts/Makefile index c47fba7..5d2abd9 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -12,9 +12,9 @@ ifeq ($(DEVICE_TREE),) DEVICE_TREE := notfound endif
-DTS := $(srctree)/board/$(VENDOR)/dts/$(DEVICE_TREE).dts +DTS := $(srctree)/arch/$(ARCH)/dts/$(DEVICE_TREE).dts
-DTC_FLAGS += -i $(srctree)/arch/$(ARCH)/dts -R 4 -p 0x1000 +DTC_FLAGS += -R 4 -p 0x1000
$(obj)/dt.dtb: $(DTS) FORCE $(call if_changed_dep,dtc) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index ee3ceac..02b17b1 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -153,7 +153,6 @@ ld_flags = $(LDFLAGS) $(ldflags-y)
# Modified for U-Boot dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \ - -I$(srctree)/board/$(VENDOR)/dts/ \ -I$(srctree)/arch/$(ARCH)/dts \ -undef -D__DTS__

On Wed, Feb 05, 2014 at 11:28:26AM +0900, Masahiro Yamada wrote:
Unlike Linux Kernel, U-Boot historically had *.dts files under board/$(VENDOR)/dts/ and *.dtsi files under arch/$(ARCH)/dts/.
I think arch/$(ARCH)/dts dicretory is a better location to store both *.dts and *.dtsi files.
For example, before this commit, board/xilinx/dts directory had both Microblaze dts (microblaze-generic.dts) and ARM dts (zynq-*.dts), which are totally unrelated.
This commit moves *.dts to arch/$(ARCH)/dts/ directories, allowing us to describe nicely mutiple DTBs generation in the next commit.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!

Hello Tom, Simon
Unlike Linux Kernel, U-Boot historically had *.dts files under board/$(VENDOR)/dts/ and *.dtsi files under arch/$(ARCH)/dts/.
I think arch/$(ARCH)/dts dicretory is a better location to store both *.dts and *.dtsi files.
For example, before this commit, board/xilinx/dts directory had both Microblaze dts (microblaze-generic.dts) and ARM dts (zynq-*.dts), which are totally unrelated.
This commit moves *.dts to arch/$(ARCH)/dts/ directories, allowing us to describe nicely mutiple DTBs generation in the next commit.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!
-- Tom
This series was applied sooner than I had expected. Simon and I were still discussing this series.
So I am afraid Simon is really not happy about it because he was opposed to moving *.dts files from vendor directories to arch directories.
Tom also mentioned as follows:
This, I think is backwards. Xilinx has (and Freescale and others are or will be joining them) a lot of things shared between them as IP blocks get reused from non-ARM to ARM CPUs. So there's a level of DT sharing for these blocks between the CPUs.
I'd like to know Tom's option about the device tree structure. Let me confirm if my patch is doing right thing.
Best Regards Masahiro Yamada

On Thu, Feb 20, 2014 at 06:22:20PM +0900, Masahiro Yamada wrote:
Hello Tom, Simon
Unlike Linux Kernel, U-Boot historically had *.dts files under board/$(VENDOR)/dts/ and *.dtsi files under arch/$(ARCH)/dts/.
I think arch/$(ARCH)/dts dicretory is a better location to store both *.dts and *.dtsi files.
For example, before this commit, board/xilinx/dts directory had both Microblaze dts (microblaze-generic.dts) and ARM dts (zynq-*.dts), which are totally unrelated.
This commit moves *.dts to arch/$(ARCH)/dts/ directories, allowing us to describe nicely mutiple DTBs generation in the next commit.
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!
-- Tom
This series was applied sooner than I had expected. Simon and I were still discussing this series.
So I am afraid Simon is really not happy about it because he was opposed to moving *.dts files from vendor directories to arch directories.
Tom also mentioned as follows:
This, I think is backwards. Xilinx has (and Freescale and others are or will be joining them) a lot of things shared between them as IP blocks get reused from non-ARM to ARM CPUs. So there's a level of DT sharing for these blocks between the CPUs.
I'd like to know Tom's option about the device tree structure. Let me confirm if my patch is doing right thing.
So, for clarity, yes, I this this is the right way to go and we should focus our "we can do better" efforts on the discussion that is / will be happening with the kernel folks about how things should be handled once all these blobs move out of the kernel as that'll be something we want to leverage too.

It is convenient to have all device trees on the same SoC compiled. It allows for later easy repackaging without the need to re-run the make file.
- Build device trees with the same SoC under arch/$(ARCH)/dts
- Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or DEVICE_TREE=... to dts/dt.dtb
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com ---
Changes in v3: - Fix build error for x86 architecture - Change shorten log CP to COPY
Changes in v2: - Newly added
arch/arm/dts/.gitignore | 1 + arch/arm/dts/Makefile | 37 +++++++++++++++++++++++++++++++++++++ arch/microblaze/dts/.gitignore | 1 + arch/microblaze/dts/Makefile | 11 +++++++++++ arch/x86/dts/.gitignore | 1 + arch/x86/dts/Makefile | 12 ++++++++++++ dts/Makefile | 31 ++++++++++++++++++++----------- 7 files changed, 83 insertions(+), 11 deletions(-) create mode 100644 arch/arm/dts/.gitignore create mode 100644 arch/arm/dts/Makefile create mode 100644 arch/microblaze/dts/.gitignore create mode 100644 arch/microblaze/dts/Makefile create mode 100644 arch/x86/dts/.gitignore create mode 100644 arch/x86/dts/Makefile
diff --git a/arch/arm/dts/.gitignore b/arch/arm/dts/.gitignore new file mode 100644 index 0000000..b60ed20 --- /dev/null +++ b/arch/arm/dts/.gitignore @@ -0,0 +1 @@ +*.dtb diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile new file mode 100644 index 0000000..2658911 --- /dev/null +++ b/arch/arm/dts/Makefile @@ -0,0 +1,37 @@ +dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \ + exynos5250-snow.dtb \ + exynos5250-smdk5250.dtb \ + exynos5420-smdk5420.dtb + +dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \ + tegra20-medcom-wide.dtb \ + tegra20-paz00.dtb \ + tegra20-plutux.dtb \ + tegra20-seaboard.dtb \ + tegra20-tec.dtb \ + tegra20-trimslice.dtb \ + tegra20-ventana.dtb \ + tegra20-whistler.dtb \ + tegra20-colibri_t20_iris.dtb \ + tegra30-beaver.dtb \ + tegra30-cardhu.dtb \ + tegra30-tec-ng.dtb \ + tegra114-dalmore.dtb + +dtb-$(CONFIG_ZYNQ) += zynq-zc702.dtb \ + zynq-zc706.dtb \ + zynq-zed.dtb \ + zynq-microzed.dtb \ + zynq-zc770-xm010.dtb \ + zynq-zc770-xm012.dtb \ + zynq-zc770-xm013.dtb + +targets += $(dtb-y) + +DTC_FLAGS += -R 4 -p 0x1000 + +PHONY += dtbs +dtbs: $(addprefix $(obj)/, $(dtb-y)) + @: + +clean-files := *.dtb diff --git a/arch/microblaze/dts/.gitignore b/arch/microblaze/dts/.gitignore new file mode 100644 index 0000000..b60ed20 --- /dev/null +++ b/arch/microblaze/dts/.gitignore @@ -0,0 +1 @@ +*.dtb diff --git a/arch/microblaze/dts/Makefile b/arch/microblaze/dts/Makefile new file mode 100644 index 0000000..6d4a11f --- /dev/null +++ b/arch/microblaze/dts/Makefile @@ -0,0 +1,11 @@ +dtb-y += microblaze-generic.dtb + +targets += $(dtb-y) + +DTC_FLAGS += -R 4 -p 0x1000 + +PHONY += dtbs +dtbs: $(addprefix $(obj)/, $(dtb-y)) + @: + +clean-files := *.dtb diff --git a/arch/x86/dts/.gitignore b/arch/x86/dts/.gitignore new file mode 100644 index 0000000..b60ed20 --- /dev/null +++ b/arch/x86/dts/.gitignore @@ -0,0 +1 @@ +*.dtb diff --git a/arch/x86/dts/Makefile b/arch/x86/dts/Makefile new file mode 100644 index 0000000..48265ef --- /dev/null +++ b/arch/x86/dts/Makefile @@ -0,0 +1,12 @@ +dtb-y += link.dtb \ + alex.dtb + +targets += $(dtb-y) + +DTC_FLAGS += -R 4 -p 0x1000 + +PHONY += dtbs +dtbs: $(addprefix $(obj)/, $(dtb-y)) + @: + +clean-files := *.dtb diff --git a/dts/Makefile b/dts/Makefile index 5d2abd9..9907463 100644 --- a/dts/Makefile +++ b/dts/Makefile @@ -9,24 +9,30 @@
DEVICE_TREE ?= $(CONFIG_DEFAULT_DEVICE_TREE:"%"=%) ifeq ($(DEVICE_TREE),) -DEVICE_TREE := notfound +DEVICE_TREE := unset endif
-DTS := $(srctree)/arch/$(ARCH)/dts/$(DEVICE_TREE).dts +DTB := arch/$(ARCH)/dts/$(DEVICE_TREE).dtb
-DTC_FLAGS += -R 4 -p 0x1000 +quiet_cmd_copy = COPY $@ + cmd_copy = cp $< $@
-$(obj)/dt.dtb: $(DTS) FORCE - $(call if_changed_dep,dtc) +$(obj)/dt.dtb: $(DTB) FORCE + $(call if_changed,copy)
targets += dt.dtb
-$(DTS): - @echo >&2 - @echo >&2 "Device Tree Source is not specified." - @echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'" - @echo >&2 "or build with 'DEVICE_TREE=<dts-file-name>' argument" - @/bin/false +$(DTB): arch-dtbs + $(Q)test -e $@ || ( \ + echo >&2; \ + echo >&2 "Device Tree Source is not correctly specified."; \ + echo >&2 "Please define 'CONFIG_DEFAULT_DEVICE_TREE'"; \ + echo >&2 "or build with 'DEVICE_TREE=<device_tree>' argument"; \ + echo >&2; \ + /bin/false) + +arch-dtbs: + $(Q)$(MAKE) $(build)=arch/$(ARCH)/dts dtbs
.SECONDARY: $(obj)/dt.dtb.S
@@ -36,3 +42,6 @@ dtbs: $(obj)/dt.dtb @:
clean-files := dt.dtb.S + +# Let clean descend into dts directories +subdir- += ../arch/*/dts

Hi,
On 4 February 2014 19:28, Masahiro Yamada yamada.m@jp.panasonic.com wrote:
It is convenient to have all device trees on the same SoC compiled. It allows for later easy repackaging without the need to re-run the make file.
Build device trees with the same SoC under arch/$(ARCH)/dts
Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or DEVICE_TREE=... to dts/dt.dtb
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Please see my comments on v2.
Regards, Simon

On Wed, Feb 05, 2014 at 11:28:27AM +0900, Masahiro Yamada wrote:
It is convenient to have all device trees on the same SoC compiled. It allows for later easy repackaging without the need to re-run the make file.
Build device trees with the same SoC under arch/$(ARCH)/dts
Copy the one specified by CONFIG_DEFAULT_DEVICE_TREE or DEVICE_TREE=... to dts/dt.dtb
Signed-off-by: Masahiro Yamada yamada.m@jp.panasonic.com
Applied to u-boot/master, thanks!
participants (5)
-
Masahiro Yamada
-
Michal Simek
-
Simon Glass
-
Tom Rini
-
York Sun