* [ptxdist] [PATCH v2 0/3] Add support for Rockchip firmware blobs @ 2021-12-06 7:54 Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 1/3] platforms: add section for non-free " Michael Riesch ` (2 more replies) 0 siblings, 3 replies; 6+ messages in thread From: Michael Riesch @ 2021-12-06 7:54 UTC (permalink / raw) To: ptxdist; +Cc: m.tretter, Michael Riesch Hi all, This v2 addresses the comments by Christian Melki and Roland Hieber, as well as several cosmetic fixes. Also, I removed the RFC status of the third patch. Surely the implementation can be improved, but the design is complete and ready to review from my point of view. Looking forward to your comments! Best regards, Michael Michael Riesch (3): platforms: add section for non-free firmware blobs add package for rockchip firmware binaries barebox: add integration of firmware blobs platforms/Kconfig | 10 ++++ platforms/barebox.in | 31 +++++++++++ platforms/firmware-rockchip.in | 41 ++++++++++++++ rules/barebox.make | 6 +++ rules/firmware-rockchip.make | 74 ++++++++++++++++++++++++++ rules/post/ptxd_make_world_inject.make | 19 +++++++ scripts/lib/ptxd_make_world_inject.sh | 43 +++++++++++++++ 7 files changed, 224 insertions(+) create mode 100644 platforms/firmware-rockchip.in create mode 100644 rules/firmware-rockchip.make create mode 100644 rules/post/ptxd_make_world_inject.make create mode 100644 scripts/lib/ptxd_make_world_inject.sh -- 2.30.2 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de ^ permalink raw reply [flat|nested] 6+ messages in thread
* [ptxdist] [PATCH v2 1/3] platforms: add section for non-free firmware blobs 2021-12-06 7:54 [ptxdist] [PATCH v2 0/3] Add support for Rockchip firmware blobs Michael Riesch @ 2021-12-06 7:54 ` Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 2/3] add package for rockchip firmware binaries Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs Michael Riesch 2 siblings, 0 replies; 6+ messages in thread From: Michael Riesch @ 2021-12-06 7:54 UTC (permalink / raw) To: ptxdist; +Cc: m.tretter, Michael Riesch Add a dedicated section for non-free firmware binary blobs, such as SDRAM initialization binaries. Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net> --- platforms/Kconfig | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/platforms/Kconfig b/platforms/Kconfig index 0bfe34cdc..047ac2b13 100644 --- a/platforms/Kconfig +++ b/platforms/Kconfig @@ -40,3 +40,13 @@ source "generated/hosttools_noprompt.in" source "generated/hosttools_platform.in" source "generated/platform_project_specific.in" + +menuconfig NON_FREE_FIRMWARE + bool + prompt "non-free firmware blobs " + help + Enable integration of non-free firmware blobs. + +if NON_FREE_FIRMWARE +source "generated/non_free_firmware.in" +endif -- 2.30.2 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de ^ permalink raw reply [flat|nested] 6+ messages in thread
* [ptxdist] [PATCH v2 2/3] add package for rockchip firmware binaries 2021-12-06 7:54 [ptxdist] [PATCH v2 0/3] Add support for Rockchip firmware blobs Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 1/3] platforms: add section for non-free " Michael Riesch @ 2021-12-06 7:54 ` Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs Michael Riesch 2 siblings, 0 replies; 6+ messages in thread From: Michael Riesch @ 2021-12-06 7:54 UTC (permalink / raw) To: ptxdist; +Cc: m.tretter, Michael Riesch Rockchip provides the SDRAM initialization as well as BL31/BL32 firmware for their SoCs in binary form. Add a package that downloads those binaries for further use in e.g., barebox. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> [revised and extended Kconfig] Signed-off-by: Michael Riesch <michael.riesch@wolfvision.net> --- platforms/firmware-rockchip.in | 41 +++++++++++++++++++ rules/firmware-rockchip.make | 74 ++++++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+) create mode 100644 platforms/firmware-rockchip.in create mode 100644 rules/firmware-rockchip.make diff --git a/platforms/firmware-rockchip.in b/platforms/firmware-rockchip.in new file mode 100644 index 000000000..aa702416d --- /dev/null +++ b/platforms/firmware-rockchip.in @@ -0,0 +1,41 @@ +## SECTION=non_free_firmware + +menuconfig FIRMWARE_ROCKCHIP + bool + prompt "Rockchip firmware binaries " + help + Rockchip prebuilt SDRAM initialization and TF-A binaries. + +if FIRMWARE_ROCKCHIP + +config FIRMWARE_ROCKCHIP_RK3566_SDRAM + bool + prompt "RK3566 SDRAM init" + help + Rockchip RK3566 SDRAM initialization binary. + Compatible with e.g., the Pine64 Quartz64 Model A board. + +config FIRMWARE_ROCKCHIP_RK3568_SDRAM + bool + prompt "RK3568 SDRAM init" + help + Rockchip RK3568 SDRAM initialization binary. + Compatible with e.g., the Rockchip RK3568 EVB1 board. + +config FIRMWARE_ROCKCHIP_RK356x_BL31 + bool + prompt "RK356x BL31 binary" + help + Rockchip RK3566/RK3568 BL31 binary. + Compatible with e.g., the Pine64 Quartz64 Model A board + and the Rockchip RK3568 EVB1 board. + +config FIRMWARE_ROCKCHIP_RK356x_BL32 + bool + prompt "RK356x BL32 binary" + help + Rockchip RK3566/RK3568 BL32 binary. + Compatible with e.g., the Pine64 Quartz64 Model A board + and the Rockchip RK3568 EVB1 board. + +endif diff --git a/rules/firmware-rockchip.make b/rules/firmware-rockchip.make new file mode 100644 index 000000000..dd50c865a --- /dev/null +++ b/rules/firmware-rockchip.make @@ -0,0 +1,74 @@ +# -*-makefile-*- +# +# Copyright (C) 2021 by Michael Tretter <m.tretter@pengutronix.de> +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +# +# We provide this package +# +PACKAGES-$(PTXCONF_FIRMWARE_ROCKCHIP) += firmware-rockchip + +FIRMWARE_ROCKCHIP_VERSION := 2021-06-01-g7d631e0d +FIRMWARE_ROCKCHIP_MD5 := 4ca62f76ca75019dc708c4cb7cc31b0a +FIRMWARE_ROCKCHIP := firmware-rockchip-$(FIRMWARE_ROCKCHIP_VERSION) +FIRMWARE_ROCKCHIP_SUFFIX := zip +FIRMWARE_ROCKCHIP_URL := https://github.com/rockchip-linux/rkbin/archive/$(FIRMWARE_ROCKCHIP_VERSION).$(FIRMWARE_ROCKCHIP_SUFFIX) +FIRMWARE_ROCKCHIP_SOURCE := $(SRCDIR)/$(FIRMWARE_ROCKCHIP).$(FIRMWARE_ROCKCHIP_SUFFIX) +FIRMWARE_ROCKCHIP_DIR := $(BUILDDIR)/$(FIRMWARE_ROCKCHIP) +FIRMWARE_ROCKCHIP_LICENSE := proprietary + +# ---------------------------------------------------------------------------- +# Prepare +# ---------------------------------------------------------------------------- + +FIRMWARE_ROCKCHIP_CONF_TOOL := NO + +# ---------------------------------------------------------------------------- +# Compile +# ---------------------------------------------------------------------------- + +$(STATEDIR)/firmware-rockchip.compile: + @$(call targetinfo) + @$(call touch) + +# ---------------------------------------------------------------------------- +# Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/firmware-rockchip.install: + @$(call targetinfo) + +ifdef PTXCONF_FIRMWARE_ROCKCHIP_RK3566_SDRAM + install -v -D -m644 $(FIRMWARE_ROCKCHIP_DIR)/bin/rk35/rk3566_ddr_1056MHz_v1.08.bin \ + $(FIRMWARE_ROCKCHIP_PKGDIR)/usr/lib/firmware/rk3566_ddr_1056MHz_v1.08.bin +endif + +ifdef PTXCONF_FIRMWARE_ROCKCHIP_RK3568_SDRAM + install -v -D -m644 $(FIRMWARE_ROCKCHIP_DIR)/bin/rk35/rk3568_ddr_1560MHz_v1.08.bin \ + $(FIRMWARE_ROCKCHIP_PKGDIR)/usr/lib/firmware/rk3568_ddr_1560MHz_v1.08.bin +endif + +ifdef PTXCONF_FIRMWARE_ROCKCHIP_RK356x_BL31 + install -v -D -m644 $(FIRMWARE_ROCKCHIP_DIR)/bin/rk35/rk3568_bl31_v1.24.elf \ + $(FIRMWARE_ROCKCHIP_PKGDIR)/usr/lib/firmware/rk3568_bl31_v1.24.elf +endif + +ifdef PTXCONF_FIRMWARE_ROCKCHIP_RK356x_BL32 + install -v -D -m644 $(FIRMWARE_ROCKCHIP_DIR)/bin/rk35/rk3568_bl32_v1.05.bin \ + $(FIRMWARE_ROCKCHIP_PKGDIR)/usr/lib/firmware/rk3568_bl32_v1.05.bin +endif + + @$(call touch) + +# ---------------------------------------------------------------------------- +# Target-Install +# ---------------------------------------------------------------------------- + +$(STATEDIR)/firmware-rockchip.targetinstall: + @$(call targetinfo) + @$(call touch) + +# vim: syntax=make -- 2.30.2 _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de ^ permalink raw reply [flat|nested] 6+ messages in thread
* [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs 2021-12-06 7:54 [ptxdist] [PATCH v2 0/3] Add support for Rockchip firmware blobs Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 1/3] platforms: add section for non-free " Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 2/3] add package for rockchip firmware binaries Michael Riesch @ 2021-12-06 7:54 ` Michael Riesch 2021-12-08 7:59 ` Michael Olbrich 2 siblings, 1 reply; 6+ messages in thread From: Michael Riesch @ 2021-12-06 7:54 UTC (permalink / raw) To: ptxdist; +Cc: m.tretter, Michael Riesch 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 | 31 +++++++++++++++++++ rules/barebox.make | 6 ++++ rules/post/ptxd_make_world_inject.make | 19 ++++++++++++ scripts/lib/ptxd_make_world_inject.sh | 43 ++++++++++++++++++++++++++ 4 files changed, 99 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..150fcc77b 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,29 @@ 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 ':'. + +config BAREBOX_FIRMWARE_FILES + string "firmware blob file(s)" + default "<vendorblob>.bin" + help + Select the firmware blob to be integrated into the barebox + source before compilation. Multiple dts files can be + specified, separated by spaces. + +endif + config BAREBOX_EXTRA_ENV prompt "extend the builtin barebox environment" bool @@ -146,4 +170,11 @@ 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 + 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..bc06b9503 --- /dev/null +++ b/scripts/lib/ptxd_make_world_inject.sh @@ -0,0 +1,43 @@ +#!/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 $source into $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 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs 2021-12-06 7:54 ` [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs Michael Riesch @ 2021-12-08 7:59 ` Michael Olbrich 2021-12-09 5:22 ` Michael Riesch 0 siblings, 1 reply; 6+ messages in thread From: Michael Olbrich @ 2021-12-08 7:59 UTC (permalink / raw) To: Michael Riesch; +Cc: ptxdist, m.tretter On Mon, Dec 06, 2021 at 08:54:31AM +0100, Michael Riesch wrote: > 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 | 31 +++++++++++++++++++ > rules/barebox.make | 6 ++++ > rules/post/ptxd_make_world_inject.make | 19 ++++++++++++ > scripts/lib/ptxd_make_world_inject.sh | 43 ++++++++++++++++++++++++++ > 4 files changed, 99 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..150fcc77b 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,29 @@ 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 ':'. It works the same way as KERNEL_DTS_PATH, so just copy the rest of the description. > + > +config BAREBOX_FIRMWARE_FILES > + string "firmware blob file(s)" > + default "<vendorblob>.bin" > + help > + Select the firmware blob to be integrated into the barebox > + source before compilation. Multiple dts files can be > + specified, separated by spaces. 'dts'? Copy paste error? >From what I read below, each file can be <source>:<target> so that should be documented here. > + > +endif > + > config BAREBOX_EXTRA_ENV > prompt "extend the builtin barebox environment" > bool > @@ -146,4 +170,11 @@ 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 > + help > + Select this if barebox needs the non-free Rockchip firmware > + blobs. This should depend on ARCH_ARM64, or something like that. > + > 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..bc06b9503 > --- /dev/null > +++ b/scripts/lib/ptxd_make_world_inject.sh > @@ -0,0 +1,43 @@ > +#!/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 Use ${} for all variables and don't forget the quotes. > + > + 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 $source into $target..." same here. Use ptxd_print_path to shorten the output. > + cp $source $target Michael > +} > +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 > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs 2021-12-08 7:59 ` Michael Olbrich @ 2021-12-09 5:22 ` Michael Riesch 0 siblings, 0 replies; 6+ messages in thread From: Michael Riesch @ 2021-12-09 5:22 UTC (permalink / raw) To: ptxdist, m.olbrich; +Cc: m.tretter Hello Michael, On 12/8/21 8:59 AM, Michael Olbrich wrote: > On Mon, Dec 06, 2021 at 08:54:31AM +0100, Michael Riesch wrote: >> 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 | 31 +++++++++++++++++++ >> rules/barebox.make | 6 ++++ >> rules/post/ptxd_make_world_inject.make | 19 ++++++++++++ >> scripts/lib/ptxd_make_world_inject.sh | 43 ++++++++++++++++++++++++++ >> 4 files changed, 99 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..150fcc77b 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,29 @@ 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 ':'. > > It works the same way as KERNEL_DTS_PATH, so just copy the rest of the > description. > >> + >> +config BAREBOX_FIRMWARE_FILES >> + string "firmware blob file(s)" >> + default "<vendorblob>.bin" >> + help >> + Select the firmware blob to be integrated into the barebox >> + source before compilation. Multiple dts files can be >> + specified, separated by spaces. > > 'dts'? Copy paste error? > > From what I read below, each file can be <source>:<target> so that should > be documented here. > >> + >> +endif >> + >> config BAREBOX_EXTRA_ENV >> prompt "extend the builtin barebox environment" >> bool >> @@ -146,4 +170,11 @@ 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 >> + help >> + Select this if barebox needs the non-free Rockchip firmware >> + blobs. > > This should depend on ARCH_ARM64, or something like that. > >> + >> 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..bc06b9503 >> --- /dev/null >> +++ b/scripts/lib/ptxd_make_world_inject.sh >> @@ -0,0 +1,43 @@ >> +#!/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 > > Use ${} for all variables and don't forget the quotes. > >> + >> + 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 $source into $target..." > > same here. > > Use ptxd_print_path to shorten the output. > >> + cp $source $target > > Michael Thanks for your review. v3 coming up! Best regards, Michael > >> +} >> +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 >> > _______________________________________________ ptxdist mailing list ptxdist@pengutronix.de To unsubscribe, send a mail with subject "unsubscribe" to ptxdist-request@pengutronix.de ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-12-09 5:23 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-12-06 7:54 [ptxdist] [PATCH v2 0/3] Add support for Rockchip firmware blobs Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 1/3] platforms: add section for non-free " Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 2/3] add package for rockchip firmware binaries Michael Riesch 2021-12-06 7:54 ` [ptxdist] [PATCH v2 3/3] barebox: add integration of firmware blobs Michael Riesch 2021-12-08 7:59 ` Michael Olbrich 2021-12-09 5:22 ` Michael Riesch
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox