Rename, split and improve H3 DT overlays

Fix OPi Zero DT
Improve DT loading reliability
This commit is contained in:
zador-blood-stained 2017-02-11 20:32:53 +03:00
parent 33732029a6
commit bacf567104
4 changed files with 175 additions and 165 deletions

View file

@ -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

View file

@ -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

View file

@ -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";

View file

@ -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