diff --git a/config/bootscripts/boot-sunxi.cmd b/config/bootscripts/boot-sunxi.cmd index 2c1031c27..f032fd93a 100644 --- a/config/bootscripts/boot-sunxi.cmd +++ b/config/bootscripts/boot-sunxi.cmd @@ -3,8 +3,9 @@ # Please edit /boot/armbianEnv.txt to set supported parameters # -# default values setenv load_addr "0x44000000" +setenv overlay_error "false" +# default values setenv rootdev "/dev/mmcblk0p1" setenv verbosity "1" setenv console "both" @@ -44,9 +45,13 @@ if load ${devtype} 0 0x00000000 /boot/.next || load ${devtype} 0 0x00000000 .nex for overlay_file in ${overlays}; do if load ${devtype} 0 ${load_addr} boot/dtb/overlay/${overlay_file}.dtbo || load ${devtype} 0 ${load_addr} dtb/overlay/${overlay_file}.dtbo; then echo "Applying DT overlay ${overlay_file}.dtbo" - fdt apply ${load_addr} + fdt apply ${load_addr} || setenv overlay_error "true" fi done + if test "${overlay_error}" = "true"; then + echo "Error applying DT overlays, restoring original DT" + load ${devtype} 0 ${fdt_addr_r} /boot/dtb/${fdtfile} || load ${devtype} 0 ${fdt_addr_r} /dtb/${fdtfile} + fi bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r} else load ${devtype} 0 ${fdt_addr_r} /boot/script.bin || load ${devtype} 0 ${fdt_addr_r} script.bin diff --git a/patch/kernel/sun8i-dev/add-h3-overlays.patch b/patch/kernel/sun8i-dev/add-h3-overlays.patch index bbe2d46e3..51849296a 100644 --- a/patch/kernel/sun8i-dev/add-h3-overlays.patch +++ b/patch/kernel/sun8i-dev/add-h3-overlays.patch @@ -1,69 +1,24 @@ -diff --git a/arch/arm/Makefile b/arch/arm/Makefile -index ab30cc63..cc176797 100644 ---- a/arch/arm/Makefile -+++ b/arch/arm/Makefile -@@ -339,6 +339,9 @@ $(INSTALL_TARGETS): - %.dtb: | scripts - $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ - -+%.dtbo: | scripts -+ $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ -+ - PHONY += dtbs dtbs_install - - dtbs: prepare scripts -diff --git a/arch/arm/boot/.gitignore b/arch/arm/boot/.gitignore -index 3c79f859..eaaeb17e 100644 ---- a/arch/arm/boot/.gitignore -+++ b/arch/arm/boot/.gitignore -@@ -3,4 +3,4 @@ zImage - xipImage - bootpImage - uImage --*.dtb -+*.dtb* -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index 01d178a2..48e5a5f5 100644 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -984,10 +984,16 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ - dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb - dtb-$(CONFIG_ARCH_ASPEED) += aspeed-bmc-opp-palmetto.dtb \ - aspeed-ast2500-evb.dtb -+ -+targets += dtbs dtbs_install -+targets += $(dtb-y) - endif - - dtstree := $(srctree)/$(src) - dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts)) - - always := $(dtb-y) -+subdir-y := overlay - clean-files := *.dtb -+ -+dts-dirs += overlay diff --git a/arch/arm/boot/dts/overlay/Makefile b/arch/arm/boot/dts/overlay/Makefile new file mode 100644 -index 00000000..5153998d +index 00000000..3047c5a6 --- /dev/null +++ b/arch/arm/boot/dts/overlay/Makefile @@ -0,0 +1,23 @@ +ifeq ($(CONFIG_OF_CONFIGFS),y) + +dtbo-$(CONFIG_MACH_SUN8I) += \ -+ analog-codec.dtbo \ -+ crypto.dtbo \ -+ i2c0.dtbo \ -+ spi0-spidev.dtbo \ -+ spi1-spidev.dtbo \ -+ uart1.dtbo \ -+ uart2.dtbo \ -+ uart3.dtbo \ -+ usbhost0.dtbo \ -+ usbhost2.dtbo \ -+ usbhost3.dtbo \ -+ w1.dtbo ++ sun8i-h3-analog-codec.dtbo \ ++ sun8i-h3-crypto.dtbo \ ++ sun8i-h3-i2c0.dtbo \ ++ sun8i-h3-spi0-spidev.dtbo \ ++ sun8i-h3-spi1-spidev.dtbo \ ++ sun8i-h3-uart1.dtbo \ ++ sun8i-h3-uart2.dtbo \ ++ sun8i-h3-uart3.dtbo \ ++ sun8i-h3-usbhost0.dtbo \ ++ sun8i-h3-usbhost2.dtbo \ ++ sun8i-h3-usbhost3.dtbo \ ++ sun8i-h3-w1.dtbo + +targets += dtbs dtbs_install +targets += $(dtbo-y) @@ -72,11 +27,11 @@ index 00000000..5153998d + +always := $(dtbo-y) +clean-files := *.dtbo -diff --git a/arch/arm/boot/dts/overlay/analog-codec.dts b/arch/arm/boot/dts/overlay/analog-codec.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-analog-codec.dts b/arch/arm/boot/dts/overlay/sun8i-h3-analog-codec.dts new file mode 100644 -index 00000000..c788c3f0 +index 00000000..ddcd8e84 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/analog-codec.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-analog-codec.dts @@ -0,0 +1,16 @@ +/dts-v1/ /plugin/; + @@ -94,11 +49,11 @@ index 00000000..c788c3f0 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/crypto.dts b/arch/arm/boot/dts/overlay/crypto.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-crypto.dts b/arch/arm/boot/dts/overlay/sun8i-h3-crypto.dts new file mode 100644 index 00000000..6b9ea6b8 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/crypto.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-crypto.dts @@ -0,0 +1,12 @@ +/dts-v1/ /plugin/; + @@ -112,12 +67,12 @@ index 00000000..6b9ea6b8 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/i2c0.dts b/arch/arm/boot/dts/overlay/i2c0.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-i2c0.dts b/arch/arm/boot/dts/overlay/sun8i-h3-i2c0.dts new file mode 100644 -index 00000000..f7436137 +index 00000000..f6d287ec --- /dev/null -+++ b/arch/arm/boot/dts/overlay/i2c0.dts -@@ -0,0 +1,19 @@ ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-i2c0.dts +@@ -0,0 +1,18 @@ +/dts-v1/ /plugin/; + +/ { @@ -126,8 +81,7 @@ index 00000000..f7436137 + fragment@0 { + target-path = "/aliases"; + __overlay__ { -+ /* Path to the i2c0 controller node */ -+ i2c0 = "/soc@01c00000/i2c@01c2ac00"; ++ i2c0 = "/soc/i2c@01c2ac00"; + }; + }; + fragment@1 { @@ -137,12 +91,12 @@ index 00000000..f7436137 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/spi0-spidev.dts b/arch/arm/boot/dts/overlay/spi0-spidev.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-spi0-spidev.dts b/arch/arm/boot/dts/overlay/sun8i-h3-spi0-spidev.dts new file mode 100644 -index 00000000..2216a4da +index 00000000..dd8ec87a --- /dev/null -+++ b/arch/arm/boot/dts/overlay/spi0-spidev.dts -@@ -0,0 +1,26 @@ ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-spi0-spidev.dts +@@ -0,0 +1,25 @@ +/dts-v1/ /plugin/; + +/ { @@ -151,16 +105,15 @@ index 00000000..2216a4da + fragment@0 { + target-path = "/aliases"; + __overlay__ { -+ /* Path to the SPI controller nodes */ -+ spi0 = "/soc@01c00000/spi@01c68000"; ++ spi0 = "/soc/spi@01c68000"; + }; + }; + fragment@1 { + target = <&spi0>; + __overlay__ { ++ status = "okay"; + #address-cells = <1>; + #size-cells = <0>; -+ status = "okay"; + spidev@0 { + compatible = "spidev"; + reg = <0>; @@ -169,12 +122,12 @@ index 00000000..2216a4da + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/spi1-spidev.dts b/arch/arm/boot/dts/overlay/spi1-spidev.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-spi1-spidev.dts b/arch/arm/boot/dts/overlay/sun8i-h3-spi1-spidev.dts new file mode 100644 -index 00000000..671aaffd +index 00000000..65ace688 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/spi1-spidev.dts -@@ -0,0 +1,26 @@ ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-spi1-spidev.dts +@@ -0,0 +1,25 @@ +/dts-v1/ /plugin/; + +/ { @@ -183,16 +136,15 @@ index 00000000..671aaffd + fragment@0 { + target-path = "/aliases"; + __overlay__ { -+ /* Path to the SPI controller nodes */ -+ spi1 = "/soc@01c00000/spi@01c69000"; ++ spi1 = "/soc/spi@01c69000"; + }; + }; + fragment@1 { + target = <&spi1>; + __overlay__ { ++ status = "okay"; + #address-cells = <1>; + #size-cells = <0>; -+ status = "okay"; + spidev@0 { + compatible = "spidev"; + reg = <0>; @@ -201,11 +153,11 @@ index 00000000..671aaffd + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/uart1.dts b/arch/arm/boot/dts/overlay/uart1.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-uart1.dts b/arch/arm/boot/dts/overlay/sun8i-h3-uart1.dts new file mode 100644 -index 00000000..cd39f21a +index 00000000..00084c0c --- /dev/null -+++ b/arch/arm/boot/dts/overlay/uart1.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-uart1.dts @@ -0,0 +1,20 @@ +/dts-v1/ /plugin/; + @@ -215,7 +167,7 @@ index 00000000..cd39f21a + fragment@0 { + target-path = "/aliases"; + __overlay__ { -+ uart1 = "/soc@01c00000/serial@01c28400"; ++ serial1 = "/soc/serial@01c28400"; + }; + }; + fragment@1 { @@ -227,11 +179,11 @@ index 00000000..cd39f21a + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/uart2.dts b/arch/arm/boot/dts/overlay/uart2.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-uart2.dts b/arch/arm/boot/dts/overlay/sun8i-h3-uart2.dts new file mode 100644 -index 00000000..9a7b3d8e +index 00000000..eb9aa917 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/uart2.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-uart2.dts @@ -0,0 +1,20 @@ +/dts-v1/ /plugin/; + @@ -241,7 +193,7 @@ index 00000000..9a7b3d8e + fragment@0 { + target-path = "/aliases"; + __overlay__ { -+ uart2 = "/soc@01c00000/serial@01c28800"; ++ serial2 = "/soc/serial@01c28800"; + }; + }; + fragment@1 { @@ -253,11 +205,11 @@ index 00000000..9a7b3d8e + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/uart3.dts b/arch/arm/boot/dts/overlay/uart3.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-uart3.dts b/arch/arm/boot/dts/overlay/sun8i-h3-uart3.dts new file mode 100644 -index 00000000..b780e7f6 +index 00000000..f93fd205 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/uart3.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-uart3.dts @@ -0,0 +1,20 @@ +/dts-v1/ /plugin/; + @@ -267,7 +219,7 @@ index 00000000..b780e7f6 + fragment@0 { + target-path = "/aliases"; + __overlay__ { -+ uart3 = "/soc@01c00000/serial@01c28c00"; ++ serial3 = "/soc/serial@01c28c00"; + }; + }; + fragment@1 { @@ -279,11 +231,11 @@ index 00000000..b780e7f6 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/usbhost0.dts b/arch/arm/boot/dts/overlay/usbhost0.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-usbhost0.dts b/arch/arm/boot/dts/overlay/sun8i-h3-usbhost0.dts new file mode 100644 index 00000000..6b1b85f0 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/usbhost0.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-usbhost0.dts @@ -0,0 +1,18 @@ +/dts-v1/ /plugin/; + @@ -303,11 +255,11 @@ index 00000000..6b1b85f0 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/usbhost2.dts b/arch/arm/boot/dts/overlay/usbhost2.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-usbhost2.dts b/arch/arm/boot/dts/overlay/sun8i-h3-usbhost2.dts new file mode 100644 index 00000000..385811a7 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/usbhost2.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-usbhost2.dts @@ -0,0 +1,18 @@ +/dts-v1/ /plugin/; + @@ -327,11 +279,11 @@ index 00000000..385811a7 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/usbhost3.dts b/arch/arm/boot/dts/overlay/usbhost3.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-usbhost3.dts b/arch/arm/boot/dts/overlay/sun8i-h3-usbhost3.dts new file mode 100644 index 00000000..dd1f7601 --- /dev/null -+++ b/arch/arm/boot/dts/overlay/usbhost3.dts ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-usbhost3.dts @@ -0,0 +1,18 @@ +/dts-v1/ /plugin/; + @@ -351,12 +303,12 @@ index 00000000..dd1f7601 + }; + }; +}; -diff --git a/arch/arm/boot/dts/overlay/w1.dts b/arch/arm/boot/dts/overlay/w1.dts +diff --git a/arch/arm/boot/dts/overlay/sun8i-h3-w1.dts b/arch/arm/boot/dts/overlay/sun8i-h3-w1.dts new file mode 100644 -index 00000000..faf3650e +index 00000000..afd60dde --- /dev/null -+++ b/arch/arm/boot/dts/overlay/w1.dts -@@ -0,0 +1,35 @@ ++++ b/arch/arm/boot/dts/overlay/sun8i-h3-w1.dts +@@ -0,0 +1,34 @@ +/dts-v1/ /plugin/; + +/ { @@ -365,7 +317,6 @@ index 00000000..faf3650e + fragment@0 { + target-path = "/"; + __overlay__ { -+ + w1: onewire@0 { + compatible = "w1-gpio"; + pinctrl-names = "default"; @@ -392,59 +343,3 @@ index 00000000..faf3650e + <&w1_pins>,"allwinner,pins:0"; + }; +}; -diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst -index a1be75d0..ad8dc1c9 100644 ---- a/scripts/Makefile.dtbinst -+++ b/scripts/Makefile.dtbinst -@@ -27,6 +27,7 @@ ifeq ("$(dtbinst-root)", "$(obj)") - endif - - dtbinst-files := $(dtb-y) -+dtboinst-files := $(dtbo-y) - dtbinst-dirs := $(dts-dirs) - - # Helper targets for Installing DTBs into the boot directory -@@ -35,15 +36,18 @@ 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)) -+ - $(dtbinst-dirs): - $(Q)$(MAKE) $(dtbinst)=$(obj)/$@ - --PHONY += $(dtbinst-files) $(dtbinst-dirs) --__dtbs_install: $(dtbinst-files) $(dtbinst-dirs) -+PHONY += $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs) -+__dtbs_install: $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs) - - .PHONY: $(PHONY) -diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib -index 0a07f901..5ccd3490 100644 ---- a/scripts/Makefile.lib -+++ b/scripts/Makefile.lib -@@ -312,6 +312,17 @@ 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) -+ - dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) - - # Bzip2 diff --git a/patch/kernel/sun8i-dev/add-opi-zero-dts-with-wireless.patch b/patch/kernel/sun8i-dev/add-opi-zero-dts-with-wireless.patch index dfd91590a..0687827ee 100644 --- a/patch/kernel/sun8i-dev/add-opi-zero-dts-with-wireless.patch +++ b/patch/kernel/sun8i-dev/add-opi-zero-dts-with-wireless.patch @@ -15,7 +15,7 @@ new file mode 100644 index 00000000..98a44240 --- /dev/null +++ b/arch/arm/boot/dts/sun8i-h2plus-orangepi-zero.dts -@@ -0,0 +1,97 @@ +@@ -0,0 +1,106 @@ + +#include "sun8i-h3-orangepi-one.dts" + @@ -27,6 +27,13 @@ index 00000000..98a44240 + ethernet1 = &xr819wifi; + }; + ++ leds { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&leds_r_opc>; ++ ++ /delete-node/ status_led; ++ }; ++ + vdd_wifi: vdd_wifi@0 { + compatible = "regulator-fixed"; + regulator-name = "wifi"; @@ -69,6 +76,8 @@ index 00000000..98a44240 +}; + +&pio { ++ /delete-node/ leds_opc; ++ + wifi_wake: wifi_wake@0 { + allwinner,pins = "PG10"; + allwinner,function = "irq"; diff --git a/patch/kernel/sun8i-dev/add-overlay-compilation-support.patch b/patch/kernel/sun8i-dev/add-overlay-compilation-support.patch new file mode 100644 index 000000000..403a1e2c9 --- /dev/null +++ b/patch/kernel/sun8i-dev/add-overlay-compilation-support.patch @@ -0,0 +1,101 @@ +diff --git a/arch/arm/Makefile b/arch/arm/Makefile +index ab30cc63..cc176797 100644 +--- a/arch/arm/Makefile ++++ b/arch/arm/Makefile +@@ -339,6 +339,9 @@ $(INSTALL_TARGETS): + %.dtb: | scripts + $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ + ++%.dtbo: | scripts ++ $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ ++ + PHONY += dtbs dtbs_install + + dtbs: prepare scripts +diff --git a/arch/arm/boot/.gitignore b/arch/arm/boot/.gitignore +index 3c79f859..eaaeb17e 100644 +--- a/arch/arm/boot/.gitignore ++++ b/arch/arm/boot/.gitignore +@@ -3,4 +3,4 @@ zImage + xipImage + bootpImage + uImage +-*.dtb ++*.dtb* +diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile +index 01d178a2..48e5a5f5 100644 +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -984,10 +984,16 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \ + dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb + dtb-$(CONFIG_ARCH_ASPEED) += aspeed-bmc-opp-palmetto.dtb \ + aspeed-ast2500-evb.dtb ++ ++targets += dtbs dtbs_install ++targets += $(dtb-y) + endif + + dtstree := $(srctree)/$(src) + dtb-$(CONFIG_OF_ALL_DTBS) := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts)) + + always := $(dtb-y) ++subdir-y := overlay + clean-files := *.dtb ++ ++dts-dirs += overlay +diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst +index a1be75d0..ad8dc1c9 100644 +--- a/scripts/Makefile.dtbinst ++++ b/scripts/Makefile.dtbinst +@@ -27,6 +27,7 @@ ifeq ("$(dtbinst-root)", "$(obj)") + endif + + dtbinst-files := $(dtb-y) ++dtboinst-files := $(dtbo-y) + dtbinst-dirs := $(dts-dirs) + + # Helper targets for Installing DTBs into the boot directory +@@ -35,15 +36,18 @@ 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)) ++ + $(dtbinst-dirs): + $(Q)$(MAKE) $(dtbinst)=$(obj)/$@ + +-PHONY += $(dtbinst-files) $(dtbinst-dirs) +-__dtbs_install: $(dtbinst-files) $(dtbinst-dirs) ++PHONY += $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs) ++__dtbs_install: $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs) + + .PHONY: $(PHONY) +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib +index 0a07f901..5ccd3490 100644 +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -312,6 +312,17 @@ 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) ++ + dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) + + # Bzip2