From: Christian Melki <christian.melki@t2data.com>
To: ptxdist@pengutronix.de
Subject: [ptxdist] [RFC] Add DTB overlay handling to ptxdist
Date: Wed, 2 Jun 2021 14:19:10 +0200 [thread overview]
Message-ID: <20210602121910.2527-1-christian.melki@t2data.com> (raw)
The only real difference here is that the symbol handling
must always be present. Hence "-@" for default extra arg.
Make paths variable but default to boot for the old dtb behavior.
There is a lot of duplication going on here, but the main purpose
is to separate dtb from dtbo handling with separate names and functions.
Signed-off-by: Christian Melki <christian.melki@t2data.com>
diff --git a/platforms/dtc.in b/platforms/dtc.in
index 5e8b35291..101d99836 100644
--- a/platforms/dtc.in
+++ b/platforms/dtc.in
@@ -13,10 +13,18 @@ menuconfig DTC
if DTC
config DTC_INSTALL_OFTREE
- bool "install oftree to /boot"
+ bool "install oftrees to target path"
help
- Creates a package to install the 'oftree' file to /boot
- of your target system.
+ Creates a package to install the 'oftree' files
+ to your target system.
+
+config DTC_INSTALL_OFTREE_OVERLAY
+ bool "install oftrees overlays to target path"
+ help
+ Creates a package to install the 'oftree' overlay
+ files to your target system.
+
+comment "device tree paths ---"
config DTC_OFTREE_DTS_PATH
string "path to source dts file"
@@ -25,6 +33,15 @@ config DTC_OFTREE_DTS_PATH
Define path to the dts source file. Multiple directories can be
specified separated by ':'.
+config DTC_OFTREE_DTO_PATH
+ string "path to source dto (overlay) files"
+ default "${PTXDIST_PLATFORMCONFIG_SUBDIR}/dts:${KERNEL_DIR}/arch/${GENERIC_KERNEL_ARCH}/boot/dts"
+ help
+ Define path to the dto source files. Multiple directories can be
+ specified separated by ':'.
+
+comment "device tree sources ---"
+
config DTC_OFTREE_DTS
string "source dts file"
default "<yourboard>.dts"
@@ -34,7 +51,43 @@ config DTC_OFTREE_DTS
is used as a search path for the device tree files specified
here. Multiple dts files can be specified, separated by spaces.
+config DTC_OFTREE_DTO
+ string "source dto file"
+ default "<yourboard>.dto"
+ help
+ Select the dts/dto files to use for the device tree binary overlay
+ blob generation. For relative file names DTC_OFTREE_DTO_PATH
+ is used as a search path for the device tree overlay files specified
+ here. Multiple dts overlay files can be specified, separated by spaces.
+
+if DTC_INSTALL_OFTREE
+
+comment "device tree binary install path ---"
+
+config DTC_INSTALL_OFTREE_PATH
+ string "oftree installation path"
+ default "/boot"
+ help
+ oftree target installation path
+
+endif
+
+if DTC_INSTALL_OFTREE_OVERLAY
+
+comment "device tree overlay install path ---"
+
+config DTC_INSTALL_OFTREE_OVERLAY_PATH
+ string "oftree overlay installation path"
+ default "/lib/firmware"
+ help
+ oftree overlay target installation path
+
+endif
+
config DTC_EXTRA_ARGS
string "extra options passed to dtc"
+ default "-@"
+ help
+ Defaults to -@ for compiling dtb/dtbo for resolving symbols.
endif
diff --git a/rules/dtc.make b/rules/dtc.make
index 7c281e8f0..45543d3d4 100644
--- a/rules/dtc.make
+++ b/rules/dtc.make
@@ -26,11 +26,18 @@ $(call ptx/error, PTXCONF_KERNEL_ARCH_STRING is no longer defined.)
$(call ptx/error, Use GENERIC_KERNEL_ARCH instead)
endif
+ifneq ($(subst PTXCONF_KERNEL_ARCH_STRING,,$(value PTXCONF_DTC_OFTREE_DTO_PATH)),$(value PTXCONF_DTC_OFTREE_DTO_PATH))
+$(call ptx/error, invalid value for PTXCONF_DTC_OFTREE_DTO_PATH:)
+$(call ptx/error, PTXCONF_KERNEL_ARCH_STRING is no longer defined.)
+$(call ptx/error, Use GENERIC_KERNEL_ARCH instead)
+endif
+o
# ----------------------------------------------------------------------------
# Target-Install
# ----------------------------------------------------------------------------
ptx/dtb = $(notdir $(basename $(strip $(1)))).dtb
+ptx/dtbo = $(notdir $(basename $(strip $(1)))).dtbo
dts/env = \
$(call ptx/env) \
@@ -40,17 +47,31 @@ dts/env = \
dts_kernel_dir="$(KERNEL_DIR)" \
dts_kernel_arch="$(GENERIC_KERNEL_ARCH)"
+dto/env = \
+ $(call ptx/env) \
+ dts_path=$(PTXCONF_DTC_OFTREE_DTO_PATH) \
+ dts_dtb="$(strip $(1))" \
+ dts_dts="$(strip $(2))" \
+ dts_kernel_dir="$(KERNEL_DIR)" \
+ dts_kernel_arch="$(GENERIC_KERNEL_ARCH)"
+
%.dtb: $(STATEDIR)/dtc.install
@$(call targetinfo)
@$(call dts/env, $@, $(DTB_DTS)) ptxd_make_dts_dtb
@$(call finish)
+%.dtbo: $(STATEDIR)/dtc.install
+ @$(call targetinfo)
+ @$(call dto/env, $@, $(DTBO_DTO)) ptxd_make_dts_dtb
+ @$(call finish)
+
DTC_DTB = $(foreach dts, $(call remove_quotes,$(PTXCONF_DTC_OFTREE_DTS)), $(IMAGEDIR)/$(call ptx/dtb, $(dts)))
+DTC_DTBO = $(foreach dto, $(call remove_quotes,$(PTXCONF_DTC_OFTREE_DTO)), $(IMAGEDIR)/$(call ptx/dtbo, $(dto)))
# make sure "ptxdist targetinstall kernel" generates a new device trees
-$(STATEDIR)/kernel.targetinstall.post: $(DTC_DTB)
+$(STATEDIR)/kernel.targetinstall.post: $(DTC_DTB) $(DTC_DTBO)
-$(STATEDIR)/dtc.targetinstall: $(DTC_DTB)
+$(STATEDIR)/dtc.targetinstall: $(DTC_DTB) $(DTC_DTBO)
@$(call targetinfo)
ifdef PTXCONF_DTC_INSTALL_OFTREE
@@ -61,10 +82,16 @@ ifdef PTXCONF_DTC_INSTALL_OFTREE
@$(call install_fixup, dtc, DESCRIPTION, "oftree description for machine $(PTXCONF_PLATFORM)")
@$(call install_copy, dtc, 0, 0, 0755, /boot);
+ @$(call install_copy, dtc, 0, 0, 0755, "$(PTXCONF_DTC_INSTALL_OFTREE_PATH)");
@$(foreach dtb, $(DTC_DTB), \
$(call install_copy, dtc, 0, 0, 0644, \
- "$(dtb)", "/boot/$(notdir $(dtb))")$(ptx/nl))
-
+ "$(dtb)", "$(PTXCONF_DTC_INSTALL_OFTREE_PATH)/$(notdir $(dtb))")$(ptx/nl))
+ifdef PTXCONF_DTC_INSTALL_OFTREE_OVERLAY
+ @$(call install_copy, dtc, 0, 0, 0755, "$(PTXCONF_DTC_INSTALL_OFTREE_OVERLAY_PATH)");
+ @$(foreach dtbo, $(DTC_DTBO), \
+ $(call install_copy, dtc, 0, 0, 0644, \
+ "$(dtbo)", "$(PTXCONF_DTC_INSTALL_OFTREE_OVERLAY_PATH)/$(notdir $(dtbo))")$(ptx/nl))
+endif
@$(call install_finish, dtc)
endif
@$(call touch)
diff --git a/rules/post/dts.make b/rules/post/dts.make
index ffa8bf2fc..4bb1856ff 100644
--- a/rules/post/dts.make
+++ b/rules/post/dts.make
@@ -8,8 +8,12 @@
#
# defined in post/ to make sure PTXCONF_DTC_OFTREE_DTS is fully defined
+# defined in post/ to make sure PTXCONF_DTC_OFTREE_DTO is fully defined
#
$(foreach dts, $(call remove_quotes,$(PTXCONF_DTC_OFTREE_DTS)), \
$(eval $(IMAGEDIR)/$(call ptx/dtb, $(dts)): DTB_DTS=$(dts)))
+$(foreach dto, $(call remove_quotes,$(PTXCONF_DTC_OFTREE_DTO)), \
+ $(eval $(IMAGEDIR)/$(call ptx/dtbo, $(dto)): DTBO_DTO=$(dto)))
+
# vim: syntax=make
--
2.31.1
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
next reply other threads:[~2021-06-02 12:20 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-02 12:19 Christian Melki [this message]
2021-06-03 7:21 ` Michael Tretter
2021-06-03 10:43 ` Christian Melki
2021-08-04 7:10 ` Michael Olbrich
2021-08-06 11:42 ` Christian Melki
2021-08-09 13:20 ` Michael Tretter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210602121910.2527-1-christian.melki@t2data.com \
--to=christian.melki@t2data.com \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox