From e2d1876f028006eadaf672174b8d3072bbec48d1 Mon Sep 17 00:00:00 2001 From: Quentin Schulz Date: Fri, 27 Sep 2024 14:36:52 +0200 Subject: [PATCH] bsp: rkbin: split optee-os, tf-a and ddr init from rkbin into separate recipes Having one common recipe for optee-os, TF-A and DDR init blobs coming from rkbin is nice for maintenance but it doesn't allow for having e.g. TF-A come from another recipe and optee-os and DDR init from this one. Now that upstream TF-A has initial support for RK356x and RK3588, but there's still no open OP-TEE OS or DDR init, it'd be nice to allow users to have upstream TF-A. Signed-off-by: Quentin Schulz --- conf/machine/include/rk3308.inc | 4 +- conf/machine/include/rk3566.inc | 4 +- conf/machine/include/rk3568.inc | 4 +- conf/machine/include/rk3588s.inc | 4 +- recipes-bsp/rkbin/rk3308-rkbin_git.bb | 4 +- recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb | 23 ++++++++++ .../rkbin/rockchip-rkbin-optee-os_git.bb | 27 ++++++++++++ recipes-bsp/rkbin/rockchip-rkbin-tf-a_git.bb | 27 ++++++++++++ recipes-bsp/rkbin/rockchip-rkbin_git.bb | 44 ------------------- recipes-bsp/u-boot/u-boot-rockchip.inc | 2 +- 10 files changed, 90 insertions(+), 53 deletions(-) create mode 100644 recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb create mode 100644 recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb create mode 100644 recipes-bsp/rkbin/rockchip-rkbin-tf-a_git.bb delete mode 100644 recipes-bsp/rkbin/rockchip-rkbin_git.bb diff --git a/conf/machine/include/rk3308.inc b/conf/machine/include/rk3308.inc index 5abdd06..1ecf085 100644 --- a/conf/machine/include/rk3308.inc +++ b/conf/machine/include/rk3308.inc @@ -19,4 +19,6 @@ KERNEL_IMAGETYPE ?= "fitImage" UBOOT_SUFFIX ?= "itb" UBOOT_ENTRYPOINT ?= "0x06000000" -PREFERRED_PROVIDER_rockchip-rkbin = "${@bb.utils.contains('RKBIN_RK3308_LATEST', '1', 'rockchip-rkbin', 'rk3308-rkbin', d)}" +PREFERRED_PROVIDER_rockchip-rkbin-ddr = "${@bb.utils.contains('RKBIN_RK3308_LATEST', '1', 'rockchip-rkbin-ddr', 'rk3308-rkbin', d)}" +PREFERRED_PROVIDER_rockchip-rkbin-tf-a = "${@bb.utils.contains('RKBIN_RK3308_LATEST', '1', 'rockchip-rkbin-tf-a', 'rk3308-rkbin', d)}" +PREFERRED_PROVIDER_rockchip-rkbin-optee-os = "${@bb.utils.contains('RKBIN_RK3308_LATEST', '1', 'rockchip-rkbin-optee-os', 'rk3308-rkbin', d)}" diff --git a/conf/machine/include/rk3566.inc b/conf/machine/include/rk3566.inc index 2522851..bb03cce 100644 --- a/conf/machine/include/rk3566.inc +++ b/conf/machine/include/rk3566.inc @@ -14,8 +14,8 @@ KERNEL_FEATURES:append:rk3566 = " bsp/rockchip/remove-non-rockchip-arch-arm64.sc KERNEL_CLASSES = "kernel-fitimage" KERNEL_IMAGETYPE ?= "fitImage" -PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin" -PREFERRED_PROVIDER_optee-os = "rockchip-rkbin" +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin-tf-a" +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os" UBOOT_SUFFIX ?= "itb" UBOOT_ENTRYPOINT ?= "0x06000000" diff --git a/conf/machine/include/rk3568.inc b/conf/machine/include/rk3568.inc index db188a3..b7e3fe6 100644 --- a/conf/machine/include/rk3568.inc +++ b/conf/machine/include/rk3568.inc @@ -14,8 +14,8 @@ KERNEL_FEATURES:append:rk3568 = " bsp/rockchip/remove-non-rockchip-arch-arm64.sc KERNEL_CLASSES = "kernel-fitimage" KERNEL_IMAGETYPE ?= "fitImage" -PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin" -PREFERRED_PROVIDER_optee-os = "rockchip-rkbin" +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin-tf-a" +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os" UBOOT_SUFFIX ?= "itb" UBOOT_ENTRYPOINT ?= "0x06000000" diff --git a/conf/machine/include/rk3588s.inc b/conf/machine/include/rk3588s.inc index d349108..7ea944c 100644 --- a/conf/machine/include/rk3588s.inc +++ b/conf/machine/include/rk3588s.inc @@ -13,8 +13,8 @@ KERNEL_FEATURES:append:rk3588s = " bsp/rockchip/remove-non-rockchip-arch-arm64.s KERNEL_CLASSES = "kernel-fitimage" KERNEL_IMAGETYPE ?= "fitImage" -PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin" -PREFERRED_PROVIDER_optee-os = "rockchip-rkbin" +PREFERRED_PROVIDER_trusted-firmware-a = "rockchip-rkbin-tf-a" +PREFERRED_PROVIDER_optee-os = "rockchip-rkbin-optee-os" UBOOT_SUFFIX ?= "itb" UBOOT_ENTRYPOINT ?= "0x06000000" diff --git a/recipes-bsp/rkbin/rk3308-rkbin_git.bb b/recipes-bsp/rkbin/rk3308-rkbin_git.bb index f32b57a..eaf2ce1 100644 --- a/recipes-bsp/rkbin/rk3308-rkbin_git.bb +++ b/recipes-bsp/rkbin/rk3308-rkbin_git.bb @@ -6,7 +6,9 @@ SRC_URI = "git://github.com/rockchip-linux/rkbin;protocol=https;branch=master" SRCREV = "e65b97b511f1349156702db40694454c141d8fe2" PROVIDES += "trusted-firmware-a" -PROVIDES += "rockchip-rkbin" +PROVIDES += "rockchip-rkbin-ddr" +PROVIDES += "rockchip-rkbin-tf-a" +PROVIDES += "rockchip-rkbin-optee-os" PROVIDES += "optee-os" inherit bin_package deploy diff --git a/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb new file mode 100644 index 0000000..0ff7132 --- /dev/null +++ b/recipes-bsp/rkbin/rockchip-rkbin-ddr_git.bb @@ -0,0 +1,23 @@ +DESCRIPTION = "Rockchip Firmware for DDR init (TPL in U-Boot terms)" + +require rockchip-rkbin.inc + +do_deploy:rk3308() { + # Prebuilt U-Boot TPL (DDR init) + install -m 644 ${S}/bin/rk33/rk3308_ddr_589MHz_uart?_m0_v*.bin ${DEPLOYDIR}/ddr-rk3308.bin +} + +do_deploy:rk3566() { + # Prebuilt U-Boot TPL (DDR init) + install -m 644 ${S}/bin/rk35/rk3566_ddr_1056MHz_v1.21.bin ${DEPLOYDIR}/ddr-rk3566.bin +} + +do_deploy:rk3568() { + # Prebuilt U-Boot TPL (DDR init) + install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.21.bin ${DEPLOYDIR}/ddr-rk3568.bin +} + +do_deploy:rk3588s() { + # Prebuilt U-Boot TPL (DDR init) + install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin ${DEPLOYDIR}/ddr-rk3588.bin +} diff --git a/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb new file mode 100644 index 0000000..6d25368 --- /dev/null +++ b/recipes-bsp/rkbin/rockchip-rkbin-optee-os_git.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "Rockchip OP-TEE OS (BL32) blob" + +require rockchip-rkbin.inc + +PROVIDES += "optee-os" + +do_deploy:rk3308() { + # Prebuilt OPTEE-OS + install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin ${DEPLOYDIR}/tee-rk3308.bin +} + +# NOTE: the following are not typos +# the rk3566 uses the same bl32 as the rk3568 +do_deploy:rk3566() { + # Prebuilt OPTEE-OS + install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3566.bin +} + +do_deploy:rk3568() { + # Prebuilt OPTEE-OS + install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin +} + +do_deploy:rk3588s() { + # Prebuilt OPTEE-OS + install -m 644 ${S}/bin/rk35/rk3588_bl32_v*.bin ${DEPLOYDIR}/tee-rk3588.bin +} diff --git a/recipes-bsp/rkbin/rockchip-rkbin-tf-a_git.bb b/recipes-bsp/rkbin/rockchip-rkbin-tf-a_git.bb new file mode 100644 index 0000000..0ed28a2 --- /dev/null +++ b/recipes-bsp/rkbin/rockchip-rkbin-tf-a_git.bb @@ -0,0 +1,27 @@ +DESCRIPTION = "Rockchip Trusted-Firmware-A (BL31) blob" + +require rockchip-rkbin.inc + +PROVIDES += "trusted-firmware-a" + +do_deploy:rk3308() { + # Prebuilt TF-A + install -m 644 ${S}/bin/rk33/rk3308_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3308.elf +} + +# NOTE: the following are not typos +# the rk3566 uses the same bl31 as the rk3568 +do_deploy:rk3566() { + # Prebuilt TF-A + install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3566.elf +} + +do_deploy:rk3568() { + # Prebuilt TF-A + install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf +} + +do_deploy:rk3588s() { + # Prebuilt TF-A + install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf +} diff --git a/recipes-bsp/rkbin/rockchip-rkbin_git.bb b/recipes-bsp/rkbin/rockchip-rkbin_git.bb deleted file mode 100644 index a841c2e..0000000 --- a/recipes-bsp/rkbin/rockchip-rkbin_git.bb +++ /dev/null @@ -1,44 +0,0 @@ -DESCRIPTION = "Rockchip Firmware and Tool Binaries" - -require rockchip-rkbin.inc - -PROVIDES += "trusted-firmware-a" -PROVIDES += "optee-os" - -do_deploy:rk3308() { - # Prebuilt TF-A - install -m 644 ${S}/bin/rk33/rk3308_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3308.elf - # Prebuilt OPTEE-OS - install -m 644 ${S}/bin/rk33/rk3308_bl32_v*.bin ${DEPLOYDIR}/tee-rk3308.bin - # Prebuilt U-Boot TPL (DDR init) - install -m 644 ${S}/bin/rk33/rk3308_ddr_589MHz_uart?_m0_v*.bin ${DEPLOYDIR}/ddr-rk3308.bin -} - -# NOTE: the following are not typos -# the rk3566 uses the same bl31/2 as the rk3568 -do_deploy:rk3566() { - # Prebuilt TF-A - install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3566.elf - # Prebuilt OPTEE-OS - install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3566.bin - # Prebuilt U-Boot TPL (DDR init) - install -m 644 ${S}/bin/rk35/rk3566_ddr_1056MHz_v1.21.bin ${DEPLOYDIR}/ddr-rk3566.bin -} - -do_deploy:rk3568() { - # Prebuilt TF-A - install -m 644 ${S}/bin/rk35/rk3568_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3568.elf - # Prebuilt OPTEE-OS - install -m 644 ${S}/bin/rk35/rk3568_bl32_v*.bin ${DEPLOYDIR}/tee-rk3568.bin - # Prebuilt U-Boot TPL (DDR init) - install -m 644 ${S}/bin/rk35/rk3568_ddr_1560MHz_v1.21.bin ${DEPLOYDIR}/ddr-rk3568.bin -} - -do_deploy:rk3588s() { - # Prebuilt TF-A - install -m 644 ${S}/bin/rk35/rk3588_bl31_v*.elf ${DEPLOYDIR}/bl31-rk3588.elf - # Prebuilt OPTEE-OS - install -m 644 ${S}/bin/rk35/rk3588_bl32_v*.bin ${DEPLOYDIR}/tee-rk3588.bin - # Prebuilt U-Boot TPL (DDR init) - install -m 644 ${S}/bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v1.16.bin ${DEPLOYDIR}/ddr-rk3588.bin -} diff --git a/recipes-bsp/u-boot/u-boot-rockchip.inc b/recipes-bsp/u-boot/u-boot-rockchip.inc index d2267cc..2b5bbd7 100644 --- a/recipes-bsp/u-boot/u-boot-rockchip.inc +++ b/recipes-bsp/u-boot/u-boot-rockchip.inc @@ -14,5 +14,5 @@ ROCKCHIP_TPL:closed-tpl:rk3588s = "${DEPLOY_DIR_IMAGE}/ddr-rk3588.bin" EXTRA_OEMAKE:append:closed-tpl = " ROCKCHIP_TPL=${ROCKCHIP_TPL}" INIT_FIRMWARE_DEPENDS ??= "" -INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin:do_deploy" +INIT_FIRMWARE_DEPENDS:closed-tpl = " rockchip-rkbin-ddr:do_deploy" do_compile[depends] .= "${INIT_FIRMWARE_DEPENDS}"