From: Michael Riesch <michael.riesch@wolfvision.net>
To: ptxdist@pengutronix.de
Cc: m.tretter@pengutronix.de, Michael Riesch <michael.riesch@wolfvision.net>
Subject: [ptxdist] [PATCH v3 3/3] barebox: add integration of firmware blobs
Date: Thu, 9 Dec 2021 07:10:49 +0100 [thread overview]
Message-ID: <20211209061049.2975739-4-michael.riesch@wolfvision.net> (raw)
In-Reply-To: <20211209061049.2975739-1-michael.riesch@wolfvision.net>
In some cases barebox requires firmware blobs, which may be
provided in binary form by the vendor or compiled in a
preceding step. Add the possibility to specify files which
are injected in the barebox source directory during
preparation.
Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net>
---
platforms/barebox.in | 35 +++++++++++++++++++++
rules/barebox.make | 6 ++++
rules/post/ptxd_make_world_inject.make | 19 ++++++++++++
scripts/lib/ptxd_make_world_inject.sh | 42 ++++++++++++++++++++++++++
4 files changed, 102 insertions(+)
create mode 100644 rules/post/ptxd_make_world_inject.make
create mode 100644 scripts/lib/ptxd_make_world_inject.sh
diff --git a/platforms/barebox.in b/platforms/barebox.in
index d35d16501..63e9929e5 100644
--- a/platforms/barebox.in
+++ b/platforms/barebox.in
@@ -15,6 +15,7 @@ menuconfig BAREBOX
select HOST_IMX_CST if BAREBOX_NEEDS_HOST_IMX_CST
select HOST_LZOP if BAREBOX_NEEDS_HOST_LZOP
select CODE_SIGNING if BAREBOX_NEEDS_KEYS
+ select FIRMWARE_ROCKCHIP if BAREBOX_NEEDS_FIRMWARE_ROCKCHIP
prompt "barebox "
bool
help
@@ -55,6 +56,32 @@ config BAREBOX_CONFIG
This entry specifies the .config file used to compile
barebox.
+menuconfig BAREBOX_FIRMWARE
+ bool
+ prompt "integrate firmware blobs "
+
+if BAREBOX_FIRMWARE
+
+config BAREBOX_FIRMWARE_PATH
+ string "path(s) to firmware blobs"
+ default "${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware"
+ help
+ Define path to the firmware blob(s). Multiple directories can
+ be specified separated by ':'. A relative path will be expanded relative
+ to the workspace and all other layers. Only one of the specified paths
+ can be a relative path.
+
+config BAREBOX_FIRMWARE_FILES
+ string "firmware blob file(s)"
+ default "<vendorblob>.bin:firmware"
+ help
+ Select the firmware blob(s) to be integrated into the barebox
+ source before compilation. Each entry consists of <file>:<target>,
+ where <target> is an optional path relative to the barebox source
+ directory. Multiple entries can be specified, separated by spaces.
+
+endif
+
config BAREBOX_EXTRA_ENV
prompt "extend the builtin barebox environment"
bool
@@ -146,4 +173,12 @@ config BAREBOX_NEEDS_HOST_LZOP
lzop is used in order to compile lzop for your development
host.
+config BAREBOX_NEEDS_FIRMWARE_ROCKCHIP
+ prompt "barebox needs firmware-rockchip"
+ bool
+ depends on ARCH_ARM64
+ help
+ Select this if barebox needs the non-free Rockchip firmware
+ blobs.
+
endif
diff --git a/rules/barebox.make b/rules/barebox.make
index bea9f3adc..a81fc86b3 100644
--- a/rules/barebox.make
+++ b/rules/barebox.make
@@ -26,6 +26,8 @@ BAREBOX_BUILD_DIR := $(BAREBOX_DIR)-build
BAREBOX_LICENSE := GPL-2.0-only
BAREBOX_DEVPKG := NO
BAREBOX_BUILD_OOT := KEEP
+BAREBOX_INJECT_PATH :=$(call remove_quotes,$(PTXCONF_BAREBOX_FIRMWARE_PATH))
+BAREBOX_INJECT_FILES :=$(call remove_quotes,$(PTXCONF_BAREBOX_FIRMWARE_FILES))
BAREBOX_CONFIG := $(call ptx/in-platformconfigdir, \
$(call remove_quotes, $(PTXCONF_BAREBOX_CONFIG)))
@@ -94,6 +96,10 @@ ifdef PTXCONF_BAREBOX_EXTRA_ENV
@rm -rf $(BAREBOX_BUILD_DIR)/defaultenv/barebox_default_env
endif
+ifdef PTXCONF_BAREBOX_FIRMWARE
+ @$(call world/inject, BAREBOX)
+endif
+
@$(call touch)
# ----------------------------------------------------------------------------
diff --git a/rules/post/ptxd_make_world_inject.make b/rules/post/ptxd_make_world_inject.make
new file mode 100644
index 000000000..b7d28e92f
--- /dev/null
+++ b/rules/post/ptxd_make_world_inject.make
@@ -0,0 +1,19 @@
+# -*-makefile-*-
+#
+# Copyright (C) 2021 by Michael Riesch <michael.riesch@wolfvision.net>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+world/inject/env = \
+ $(call world/env, $(1)) \
+ pkg_inject_path="$($(1)_INJECT_PATH)" \
+ pkg_inject_files="$($(1)_INJECT_FILES)" \
+ pkg_source="$($(1)_DIR)"
+
+world/inject = \
+ $(call world/inject/env,$(strip $(1))) \
+ ptxd_make_world_inject
+
+# vim: syntax=make
diff --git a/scripts/lib/ptxd_make_world_inject.sh b/scripts/lib/ptxd_make_world_inject.sh
new file mode 100644
index 000000000..c2e45ad42
--- /dev/null
+++ b/scripts/lib/ptxd_make_world_inject.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# Copyright (C) 2021 by Michael Riesch <michael.riesch@wolfvision.net>
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+ptxd_make_inject() {
+ local source target
+
+ source="$(echo ${inject_file} | cut -d ":" -f 1)"
+ target="${pkg_source}/$(echo ${inject_file} | cut -d ":" -f 2)"
+ if [ -z "${target}" ]; then
+ target="${source}"
+ fi
+
+ if [[ "${source}" =~ ^/.* ]]; then
+ ptxd_bailout "'${source}' must not be an absolute path!" \
+ "Use <PKG>_INJECT_PATH to specify the search path."
+ fi
+
+ if ! ptxd_in_path pkg_inject_path "${source}"; then
+ ptxd_bailout "Blob '${source}' not found in '${pkg_inject_path}'."
+ fi
+ source="${ptxd_reply}"
+
+ echo -e "\nInject file $(ptxd_print_path ${source}) into" \
+ "$(ptxd_print_path ${target})..."
+ cp ${source} ${target}
+}
+export -f ptxd_make_inject
+
+
+ptxd_make_world_inject() {
+ ptxd_make_world_init || break
+
+ for inject_file in ${pkg_inject_files}; do
+ ptxd_make_inject || break
+ done
+}
+export -f ptxd_make_world_inject
--
2.30.2
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de
next prev parent reply other threads:[~2021-12-09 6:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-09 6:10 [ptxdist] [PATCH v3 0/3] Add support for Rockchip " Michael Riesch
2021-12-09 6:10 ` [ptxdist] [PATCH v3 1/3] platforms: add section for non-free " Michael Riesch
2021-12-09 6:10 ` [ptxdist] [PATCH v3 2/3] add package for rockchip firmware binaries Michael Riesch
2021-12-09 6:10 ` Michael Riesch [this message]
2021-12-10 15:03 ` [ptxdist] [PATCH v3 3/3] barebox: add integration of firmware blobs Michael Olbrich
2021-12-11 7:03 ` Michael Riesch
2021-12-17 7:35 ` Michael Olbrich
2021-12-20 11:02 ` Michael Riesch
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=20211209061049.2975739-4-michael.riesch@wolfvision.net \
--to=michael.riesch@wolfvision.net \
--cc=m.tretter@pengutronix.de \
--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