diff --git a/arch/arm/Makefile b/arch/arm/Makefile index 554985b52..c4629fc51 100644 --- a/arch/arm/Makefile +++ b/arch/arm/Makefile @@ -338,6 +338,12 @@ $(INSTALL_TARGETS): %.dtb: | scripts $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ +%.dtbo: | scripts + $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ + +%.scr: | scripts + $(Q)$(MAKE) $(build)=$(boot)/dts ARCH=$(ARCH) $(boot)/dts/$@ + PHONY += dtbs dtbs_install dtbs: prepare scripts diff --git a/arch/arm/boot/.gitignore b/arch/arm/boot/.gitignore index ad7a0253e..e064e5f27 100644 --- a/arch/arm/boot/.gitignore +++ b/arch/arm/boot/.gitignore @@ -3,5 +3,6 @@ zImage xipImage bootpImage uImage -*.dtb -zImage-dtb \ No newline at end of file +*.dtb* +*.scr +zImage-dtb diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index 4d9f7b328..743b62522 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -850,7 +850,10 @@ DTB_LIST := $(dtb-y) endif targets += dtbs dtbs_install -targets += $(DTB_LIST) +targets += $(dtb-y) -always := $(DTB_LIST) +always := $(dtb-y) +subdir-y := overlay clean-files := *.dtb + +dts-dirs += overlay diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst index 1c15717e0..bcc0fc524 100644 --- a/scripts/Makefile.dtbinst +++ b/scripts/Makefile.dtbinst @@ -29,6 +29,9 @@ ifeq ("$(dtbinst-root)", "$(obj)") endif dtbinst-files := $(dtb-y) +dtboinst-files := $(dtbo-y) +script-files := $(scr-y) +readme-files := $(dtbotxt-y) dtbinst-dirs := $(dts-dirs) # Helper targets for Installing DTBs into the boot directory @@ -37,15 +40,25 @@ quiet_cmd_dtb_install = INSTALL $< install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj)) -$(dtbinst-files) $(dtbinst-dirs): | __dtbs_install_prep +$(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs): | __dtbs_install_prep $(dtbinst-files): %.dtb: $(obj)/%.dtb $(call cmd,dtb_install,$(install-dir)) + +$(dtboinst-files): %.dtbo: $(obj)/%.dtbo + $(call cmd,dtb_install,$(install-dir)) + +$(script-files): %.scr: $(obj)/%.scr + $(call cmd,dtb_install,$(install-dir)) + +$(readme-files): %: $(src)/% + $(call cmd,dtb_install,$(install-dir)) + $(dtbinst-dirs): $(Q)$(MAKE) $(dtbinst)=$(obj)/$@ -PHONY += $(dtbinst-files) $(dtbinst-dirs) -__dtbs_install: $(dtbinst-files) $(dtbinst-dirs) +PHONY += $(dtbinst-files) $(dtboinst-files) $(script-files) $(readme-files) $(dtbinst-dirs) +__dtbs_install: $(dtbinst-files) $(dtboinst-files) $(script-files) $(readme-files) $(dtbinst-dirs) .PHONY: $(PHONY) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 3fb2aaa00..7956778c3 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -270,6 +270,9 @@ cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@) || \ # --------------------------------------------------------------------------- DTC ?= $(objtree)/scripts/dtc/dtc +# Overlay support +DTC_FLAGS += -@ -Wno-unit_address_format -Wno-simple_bus_reg + # Generation of symbols for Android ifeq ($(CONFIG_ANDROID),y) DTC_FLAGS += -@ @@ -319,6 +322,23 @@ cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \ $(obj)/%.dtb: $(src)/%.dts FORCE $(call if_changed_dep,dtc) +quiet_cmd_dtco = DTCO $@ +cmd_dtco = mkdir -p $(dir ${dtc-tmp}) ; \ + $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ + $(DTC) -O dtb -o $@ -b 0 \ + -i $(dir $<) $(DTC_FLAGS) \ + -d $(depfile).dtc.tmp $(dtc-tmp) ; \ + cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile) + +$(obj)/%.dtbo: $(src)/%.dts FORCE + $(call if_changed_dep,dtco) + +quiet_cmd_scr = MKIMAGE $@ +cmd_scr = mkimage -C none -A $(ARCH) -T script -d $< $@ + +$(obj)/%.scr: $(src)/%.scr-cmd FORCE + $(call if_changed,scr) + dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) # cat