mirror of
https://github.com/Fishwaldo/build.git
synced 2025-07-06 21:19:01 +00:00
[ rockchip-dev ] Add DT overlay framework
This commit is contained in:
parent
c779ae2faa
commit
3a185c8b82
4 changed files with 169 additions and 3 deletions
|
@ -4,6 +4,7 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
setenv ramdisk_addr_r "0x21000000"
|
setenv ramdisk_addr_r "0x21000000"
|
||||||
|
setenv load_addr "0x39000000"
|
||||||
setenv overlay_error "false"
|
setenv overlay_error "false"
|
||||||
# default values
|
# default values
|
||||||
setenv rootdev "/dev/mmcblk0p1"
|
setenv rootdev "/dev/mmcblk0p1"
|
||||||
|
@ -12,9 +13,11 @@ setenv console "both"
|
||||||
setenv rootfstype "ext4"
|
setenv rootfstype "ext4"
|
||||||
setenv docker_optimizations "on"
|
setenv docker_optimizations "on"
|
||||||
|
|
||||||
if test -e ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}armbianEnv.txt; then
|
echo "Boot script loaded from ${devtype} ${devnum}"
|
||||||
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}armbianEnv.txt
|
|
||||||
env import -t ${ramdisk_addr_r} ${filesize}
|
if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
|
||||||
|
load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt
|
||||||
|
env import -t ${load_addr} ${filesize}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
|
if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
|
||||||
|
@ -35,7 +38,36 @@ if test "${board}" = "miqi_rk3288"; then setenv fdtfile "rk3288-miqi.dtb"; fi
|
||||||
|
|
||||||
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
|
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
|
||||||
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage
|
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage
|
||||||
|
|
||||||
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
|
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
|
||||||
|
fdt addr ${fdt_addr_r}
|
||||||
|
fdt resize 65536
|
||||||
|
for overlay_file in ${overlays}; do
|
||||||
|
if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
|
||||||
|
echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
|
||||||
|
fdt apply ${load_addr} || setenv overlay_error "true"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
for overlay_file in ${user_overlays}; do
|
||||||
|
if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
|
||||||
|
echo "Applying user provided DT overlay ${overlay_file}.dtbo"
|
||||||
|
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} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
|
||||||
|
else
|
||||||
|
if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-fixup.scr; then
|
||||||
|
echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
|
||||||
|
source ${load_addr}
|
||||||
|
fi
|
||||||
|
if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
|
||||||
|
load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
|
||||||
|
echo "Applying user provided fixup script (fixup.scr)"
|
||||||
|
source ${load_addr}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
|
bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
BOOTSCRIPT="boot-rockchip.cmd:boot.cmd"
|
BOOTSCRIPT="boot-rockchip.cmd:boot.cmd"
|
||||||
BOOTENV_FILE='rockchip-default.txt'
|
BOOTENV_FILE='rockchip-default.txt'
|
||||||
|
|
||||||
|
OVERLAY_PREFIX='rockchip'
|
||||||
|
|
||||||
UBOOT_TARGET_MAP=";;$SRC/packages/blobs/rockchip/rk3288_boot.bin u-boot-rockchip-with-spl.bin"
|
UBOOT_TARGET_MAP=";;$SRC/packages/blobs/rockchip/rk3288_boot.bin u-boot-rockchip-with-spl.bin"
|
||||||
|
|
||||||
UBOOT_USE_GCC='> 6.3'
|
UBOOT_USE_GCC='> 6.3'
|
||||||
|
|
|
@ -0,0 +1,119 @@
|
||||||
|
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
|
||||||
|
index 65f4e2a4..9eb2043c 100644
|
||||||
|
--- a/arch/arm/Makefile
|
||||||
|
+++ b/arch/arm/Makefile
|
||||||
|
@@ -339,6 +339,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 3c79f859..4e5c1d59 100644
|
||||||
|
--- a/arch/arm/boot/.gitignore
|
||||||
|
+++ b/arch/arm/boot/.gitignore
|
||||||
|
@@ -3,3 +3,5 @@ zImage
|
||||||
|
xipImage
|
||||||
|
bootpImage
|
||||||
|
uImage
|
||||||
|
+*.dtb*
|
||||||
|
+*.scr
|
||||||
|
\ No newline at end of file
|
||||||
|
diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
|
||||||
|
index f839ecd9..9788f16d 100644
|
||||||
|
--- a/arch/arm64/Makefile
|
||||||
|
+++ b/arch/arm64/Makefile
|
||||||
|
@@ -121,6 +121,12 @@ zinstall install:
|
||||||
|
%.dtb: scripts
|
||||||
|
$(Q)$(MAKE) $(build)=$(boot)/dts $(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/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst
|
||||||
|
index 34614a48..8a8313d6 100644
|
||||||
|
--- a/scripts/Makefile.dtbinst
|
||||||
|
+++ b/scripts/Makefile.dtbinst
|
||||||
|
@@ -20,6 +20,9 @@ include scripts/Kbuild.include
|
||||||
|
include $(src)/Makefile
|
||||||
|
|
||||||
|
dtbinst-files := $(sort $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS), $(dtb-)))
|
||||||
|
+dtboinst-files := $(dtbo-y)
|
||||||
|
+script-files := $(scr-y)
|
||||||
|
+readme-files := $(dtbotxt-y)
|
||||||
|
dtbinst-dirs := $(subdir-y) $(subdir-m)
|
||||||
|
|
||||||
|
# Helper targets for Installing DTBs into the boot directory
|
||||||
|
@@ -32,10 +35,19 @@ install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj))
|
||||||
|
$(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 58c05e5d..2b95dda9 100644
|
||||||
|
--- a/scripts/Makefile.lib
|
||||||
|
+++ b/scripts/Makefile.lib
|
||||||
|
@@ -278,6 +278,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
|
||||||
|
+
|
||||||
|
# Disable noisy checks by default
|
||||||
|
ifeq ($(KBUILD_ENABLE_EXTRA_GCC_CHECKS),)
|
||||||
|
DTC_FLAGS += -Wno-unit_address_vs_reg \
|
||||||
|
@@ -324,6 +327,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)
|
||||||
|
|
||||||
|
# Bzip2
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
|
||||||
|
index 8a23c76d..bb1e3cb7 100644
|
||||||
|
--- a/arch/arm/Kconfig
|
||||||
|
+++ b/arch/arm/Kconfig
|
||||||
|
@@ -1321,6 +1321,8 @@ config ARCH_ROCKCHIP
|
||||||
|
select DM_SPI_FLASH
|
||||||
|
select DM_USB if USB
|
||||||
|
select ENABLE_ARM_SOC_BOOT0_HOOK
|
||||||
|
+ select OF_LIBFDT
|
||||||
|
+ select OF_LIBFDT_OVERLAY
|
||||||
|
select OF_CONTROL
|
||||||
|
select SPI
|
||||||
|
select SPL_DM if SPL
|
Loading…
Add table
Add a link
Reference in a new issue