aboutsummaryrefslogtreecommitdiffstats
path: root/recipes-bsp/firmware-imx
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/firmware-imx')
-rw-r--r--recipes-bsp/firmware-imx/firmware-ele-imx_0.1.1.bb40
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8.23.inc (renamed from recipes-bsp/firmware-imx/firmware-imx-8.13.inc)8
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8_8.13.bb23
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8m_8.13.bb24
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx_8.23.bb (renamed from recipes-bsp/firmware-imx/firmware-imx_8.13.bb)41
-rw-r--r--recipes-bsp/firmware-imx/firmware-nxp-wifi_1.0.bb143
-rw-r--r--recipes-bsp/firmware-imx/firmware-sof-imx_2.3.0.bb (renamed from recipes-bsp/firmware-imx/firmware-sof-imx_1.9.0-1.bb)6
-rw-r--r--recipes-bsp/firmware-imx/imx-boot-firmware-files_8.23.bb61
8 files changed, 270 insertions, 76 deletions
diff --git a/recipes-bsp/firmware-imx/firmware-ele-imx_0.1.1.bb b/recipes-bsp/firmware-imx/firmware-ele-imx_0.1.1.bb
new file mode 100644
index 00000000..70252c01
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-ele-imx_0.1.1.bb
@@ -0,0 +1,40 @@
+# Copyright 2021-2023 NXP
+SUMMARY = "NXP i.MX ELE firmware"
+DESCRIPTION = "EdgeLock Enclave firmware for i.MX series SoCs"
+SECTION = "base"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=44a8052c384584ba09077e85a3d1654f"
+
+inherit fsl-eula-unpack use-imx-security-controller-firmware deploy
+
+SRC_URI = "${FSL_MIRROR}/${BP}.bin;fsl-eula=true"
+SRC_URI[md5sum] = "f4df2005ec4555e9f177acbf62a7a969"
+SRC_URI[sha256sum] = "3f69d6cf6ea448c5c2f87b6acdad1c5c2318616d246cc5047a523f2543fee408"
+
+do_compile[noexec] = "1"
+
+do_install() {
+ install -d ${D}${nonarch_base_libdir}/firmware/imx/ele
+ install -m 0644 ${S}/${SECO_FIRMWARE_NAME} ${D}${nonarch_base_libdir}/firmware/imx/ele
+ if [ -e ${S}/${SECOEXT_FIRMWARE_NAME} ]; then
+ install -m 0644 ${S}/${SECOEXT_FIRMWARE_NAME} ${D}${nonarch_base_libdir}/firmware/imx/ele
+ fi
+}
+
+do_deploy () {
+ # Deploy the related firmware to be package by imx-boot
+ install -m 0644 ${S}/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}
+}
+addtask deploy after do_install before do_build
+
+PACKAGES += "${PN}-ext"
+
+ALLOW_EMPTY:${PN}-ext = "1"
+
+FILES:${PN} += "${nonarch_base_libdir}/firmware/imx/ele/${SECO_FIRMWARE_NAME}"
+FILES:${PN}-ext += "${nonarch_base_libdir}/firmware/imx/ele/${SECOEXT_FIRMWARE_NAME}"
+
+RREPLACES:${PN} = "firmware-sentinel"
+RPROVIDES:${PN} = "firmware-sentinel"
+
+COMPATIBLE_MACHINE = "(mx8ulp-nxp-bsp|mx9-nxp-bsp)"
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8.13.inc b/recipes-bsp/firmware-imx/firmware-imx-8.23.inc
index ff739c4c..bd471f77 100644
--- a/recipes-bsp/firmware-imx/firmware-imx-8.13.inc
+++ b/recipes-bsp/firmware-imx/firmware-imx-8.23.inc
@@ -1,16 +1,16 @@
# Copyright (C) 2012-2016 Freescale Semiconductor
-# Copyright (C) 2017-2021 NXP
+# Copyright 2017-2022 NXP
# Copyright (C) 2018 O.S. Systems Software LTDA.
SECTION = "base"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=e565271ec9a80ce47abbddc4bffe56fa"
+LIC_FILES_CHKSUM = "file://COPYING;md5=44a8052c384584ba09077e85a3d1654f"
SRC_URI = " \
${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
"
-SRC_URI[md5sum] = "97eb12ba899bc29a5375993889708bfb"
-SRC_URI[sha256sum] = "8b7aa9b41a0389e5f40bdf91cb1224f79ea4c2e7fc36292f27ad4bef7044d7f0"
+SRC_URI[md5sum] = "eb03efb3a8fb98d99ed1df88537e72f4"
+SRC_URI[sha256sum] = "fe07633295dac3dd99f0ba4e07a7cde95bb24a29ca82b9a9b3f6026d29ae916a"
S = "${WORKDIR}/firmware-imx-${PV}"
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8_8.13.bb b/recipes-bsp/firmware-imx/firmware-imx-8_8.13.bb
deleted file mode 100644
index 6ea16d5b..00000000
--- a/recipes-bsp/firmware-imx/firmware-imx-8_8.13.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright (C) 2018-2020 NXP
-SUMMARY = "Freescale i.MX firmware for 8 family"
-DESCRIPTION = "Freescale i.MX firmware for 8 family"
-
-require firmware-imx-${PV}.inc
-
-inherit deploy
-
-do_install[noexec] = "1"
-
-do_deploy() {
- # Cadence HDMI
- install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${DEPLOYDIR}
- install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${DEPLOYDIR}
- install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${DEPLOYDIR}
-}
-addtask deploy after do_install before do_build
-
-PACKAGE_ARCH = "${MACHINE_SOCARCH}"
-
-COMPATIBLE_MACHINE = "(mx8)"
-COMPATIBLE_MACHINE:mx8m = "(^$)"
-COMPATIBLE_MACHINE:mx8x = "(^$)"
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8m_8.13.bb b/recipes-bsp/firmware-imx/firmware-imx-8m_8.13.bb
deleted file mode 100644
index a48356ed..00000000
--- a/recipes-bsp/firmware-imx/firmware-imx-8m_8.13.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2018-2020 NXP
-SUMMARY = "Freescale i.MX firmware for 8M and 8M Mini family"
-DESCRIPTION = "Freescale i.MX firmware for 8M and 8M Mini family"
-
-require firmware-imx-${PV}.inc
-
-inherit deploy
-
-do_install[noexec] = "1"
-
-do_deploy() {
- # Synopsys DDR
- for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
- install -m 0644 ${S}/firmware/ddr/synopsys/${ddr_firmware} ${DEPLOYDIR}
- done
- # Cadence DP and HDMI
- install -m 0644 ${S}/firmware/hdmi/cadence/signed_dp_imx8m.bin ${DEPLOYDIR}
- install -m 0644 ${S}/firmware/hdmi/cadence/signed_hdmi_imx8m.bin ${DEPLOYDIR}
-}
-addtask deploy after do_install before do_build
-
-PACKAGE_ARCH = "${MACHINE_SOCARCH}"
-
-COMPATIBLE_MACHINE = "(mx8m|imx-boot-container)"
diff --git a/recipes-bsp/firmware-imx/firmware-imx_8.13.bb b/recipes-bsp/firmware-imx/firmware-imx_8.23.bb
index 68539a61..a9e36b5e 100644
--- a/recipes-bsp/firmware-imx/firmware-imx_8.13.bb
+++ b/recipes-bsp/firmware-imx/firmware-imx_8.23.bb
@@ -1,5 +1,5 @@
# Copyright (C) 2012-2016 Freescale Semiconductor
-# Copyright (C) 2017-2020 NXP
+# Copyright 2017-2021 NXP
# Copyright (C) 2018 O.S. Systems Software LTDA.
SUMMARY = "Freescale i.MX firmware"
DESCRIPTION = "Freescale i.MX firmware such as for the VPU"
@@ -43,10 +43,9 @@ do_install() {
# NOTE:
# Only install pre-defined list of firmware files, since the source archive contains
# also HDMI binary files for imx8m derivatives, which are taken care of by another recipe
- install -d ${D}${nonarch_base_libdir}/firmware/imx/hdmi
- install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
- install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
- install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
+ install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${D}${nonarch_base_libdir}/firmware
+ install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${D}${nonarch_base_libdir}/firmware
+ install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${D}${nonarch_base_libdir}/firmware
# VPU Firmware section
# NOTE:
@@ -66,6 +65,29 @@ do_install() {
# which contains only files that matches the pattern.
#
python populate_packages:prepend() {
+ # CODA driver tries to locate VPU firmwares directly in ${nonarch_base_libdir}/firmware, to
+ # avoid fallback loading which is usually 40-60 seconds later after system boots up, let's
+ # create symbolic links in ${nonarch_base_libdir}/firmware for VPU firmwares.
+ def coda_vpu_links(file, pkg, pattern, format, basename):
+ # Only CODA VPU firmwares need this procedure
+ if 'imx8' in basename:
+ return
+
+ dir = os.path.dirname(file)
+ dir = os.path.abspath(os.path.join(dir, os.pardir))
+ cwd = os.getcwd()
+
+ os.chdir(dir)
+
+ name = os.path.basename(file)
+ os.symlink(os.path.join("vpu", name), name)
+
+ oldfiles = d.getVar('FILES:' + pkg)
+ newfile = os.path.join(d.getVar('nonarch_base_libdir'), "firmware", name)
+ d.setVar('FILES:' + pkg, oldfiles + " " + newfile)
+
+ os.chdir(cwd)
+
easrcdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/easrc', d)
do_split_packages(d, easrcdir, '^easrc-([^_]*).*\.bin',
output_pattern='firmware-imx-easrc-%s',
@@ -77,6 +99,7 @@ python populate_packages:prepend() {
do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
output_pattern='firmware-imx-vpu-%s',
description='Freescale IMX VPU Firmware [%s]',
+ hook=coda_vpu_links,
extra_depends='',
prepend=True)
@@ -124,6 +147,10 @@ PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-* ${PN}-easrc-* ${PN}-xcvr-* ${PN}-xu
PACKAGES = "${PN} ${PN}-epdc ${PN}-hdmi"
FILES:${PN}-epdc = "${nonarch_base_libdir}/firmware/imx/epdc/"
-FILES:${PN}-hdmi = "${nonarch_base_libdir}/firmware/imx/hdmi/"
+FILES:${PN}-hdmi = " \
+ ${nonarch_base_libdir}/firmware/hdmitxfw.bin \
+ ${nonarch_base_libdir}/firmware/hdmirxfw.bin \
+ ${nonarch_base_libdir}/firmware/dpfw.bin \
+"
-COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)"
+COMPATIBLE_MACHINE = "(imx-generic-bsp)"
diff --git a/recipes-bsp/firmware-imx/firmware-nxp-wifi_1.0.bb b/recipes-bsp/firmware-imx/firmware-nxp-wifi_1.0.bb
index 5a7e6a1d..d28b2382 100644
--- a/recipes-bsp/firmware-imx/firmware-nxp-wifi_1.0.bb
+++ b/recipes-bsp/firmware-imx/firmware-nxp-wifi_1.0.bb
@@ -1,17 +1,17 @@
-# Copyright 2020-2021 NXP
+# Copyright 2020-2023 NXP
SUMMARY = "Wi-Fi firmware redistributed by NXP"
-DESCRIPTION = "Additional Wi-Fi firmware redistributed by NXP, \
-which is not covered by linux-firmware package. Once package becomes \
-available as a part of linux-firmware - it can be dropped from this \
-recipe in favor of upstream."
+DESCRIPTION = "Additional Wi-Fi firmware redistributed by NXP. Some \
+is available in linux-firmware, but what is here is the latest and \
+should be preferred."
SECTION = "kernel"
LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://cyw-wifi-bt/EULA.txt;md5=80c0478f4339af024519b3723023fe28"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=44a8052c384584ba09077e85a3d1654f"
-SRC_URI = "git://github.com/NXP/imx-firmware.git;protocol=https;branch=master"
-SRCREV = "484d38224fa2c26b8859a7bf20b7c4d49100f5bc"
+SRC_URI = "git://github.com/nxp-imx/imx-firmware.git;protocol=https;branch=${SRCBRANCH}"
+SRCBRANCH = "lf-6.6.3_1.0.0"
+SRCREV = "2afa15e77f0b58eade42b4f59c9215339efcca66"
S = "${WORKDIR}/git"
@@ -25,17 +25,41 @@ do_compile() {
}
do_install() {
- install -d ${D}${sysconfdir}/firmware
- install -d ${D}${nonarch_base_libdir}/firmware/brcm
- # Install various flavors of Broadcom firmware provided by Murata:
- # - bcm4359-pcie
- install -m 0644 cyw-wifi-bt/*_CYW*/brcmfmac4359-pcie* ${D}${nonarch_base_libdir}/firmware/brcm
- install -m 0644 cyw-wifi-bt/*_CYW*/BCM4349B1*.hcd ${D}${sysconfdir}/firmware
+ install -d ${D}${nonarch_base_libdir}/firmware/nxp
+ install -d ${D}${nonarch_base_libdir}/firmware/brcm/
+
+ # Install bcm4359-pcie
+ for f in cyw-wifi-bt/*_CYW*/brcmfmac4359-pcie*; do
+ install -D -m 0644 $f ${D}${nonarch_base_libdir}/firmware/brcm/$(basename $f)
+ done
+
+ for f in cyw-wifi-bt/*_CYW*/BCM4349B1*.hcd; do
+ install -D -m 0644 $f ${D}${sysconfdir}/firmware/$(basename $f)
+ done
+
+ for f in nxp/FwImage_IW612_SD/*; do
+ install -D -m 0644 $f ${D}${nonarch_base_libdir}/firmware/nxp/IW612_SD_RFTest/$(basename $f)
+ done
+
+ oe_runmake install INSTALLDIR=${D}${nonarch_base_libdir}/firmware/nxp
+
+
}
PACKAGES =+ " \
${PN}-bcm4359-pcie \
+ ${PN}-nxp-common \
+ ${PN}-nxp8801-sdio \
+ ${PN}-nxp8987-sdio \
+ ${PN}-nxp8997-common \
+ ${PN}-nxp8997-pcie \
+ ${PN}-nxp8997-sdio \
+ ${PN}-nxp9098-pcie \
+ ${PN}-nxp9098-common \
+ ${PN}-nxp9098-sdio \
+ ${PN}-nxpiw416-sdio \
+ ${PN}-nxpiw612-sdio \
"
FILES:${PN}-bcm4359-pcie = " \
@@ -43,4 +67,93 @@ FILES:${PN}-bcm4359-pcie = " \
${sysconfdir}/firmware/BCM4349B1_*.hcd \
"
-RPROVIDES:${PN}-bcm4359-pcie = "linux-firmware-bcm4359-pcie"
+FILES:${PN}-nxp-common = " \
+ ${nonarch_base_libdir}/firmware/nxp/wifi_mod_para.conf \
+ ${nonarch_base_libdir}/firmware/nxp/helper_uart_3000000.bin \
+"
+
+FILES:${PN}-nxp8801-sdio = " \
+ ${nonarch_base_libdir}/firmware/nxp/*8801* \
+"
+RDEPENDS:${PN}-nxp8801-sdio += "${PN}-nxp-common"
+
+FILES:${PN}-nxp8987-sdio = " \
+ ${nonarch_base_libdir}/firmware/nxp/*8987* \
+"
+RDEPENDS:${PN}-nxp8987-sdio += "${PN}-nxp-common"
+RPROVIDES:${PN}-nxp8987-sdio = "linux-firmware-nxp8987-sdio"
+RREPLACES:${PN}-nxp8987-sdio = "linux-firmware-nxp8987-sdio"
+RCONFLICTS:${PN}-nxp8987-sdio = "linux-firmware-nxp8987-sdio"
+
+FILES:${PN}-nxp8997-common = " \
+ ${nonarch_base_libdir}/firmware/nxp/ed_mac_ctrl_V3_8997.conf \
+ ${nonarch_base_libdir}/firmware/nxp/txpwrlimit_cfg_8997.conf \
+ ${nonarch_base_libdir}/firmware/nxp/uartuart8997_bt_v4.bin \
+"
+RDEPENDS:${PN}-nxp8997-common += "${PN}-nxp-common"
+RPROVIDES:${PN}-nxp8997-common = "linux-firmware-nxp8997-common"
+RREPLACES:${PN}-nxp8997-common = "linux-firmware-nxp8997-common"
+RCONFLICTS:${PN}-nxp8997-common = "linux-firmware-nxp8997-common"
+
+FILES:${PN}-nxp8997-pcie = " \
+ ${nonarch_base_libdir}/firmware/nxp/pci*8997* \
+"
+RDEPENDS:${PN}-nxp8997-pcie += "${PN}-nxp8997-common"
+RPROVIDES:${PN}-nxp8997-pcie = "linux-firmware-nxp8997-pcie"
+RREPLACES:${PN}-nxp8997-pcie = "linux-firmware-nxp8997-pcie"
+RCONFLICTS:${PN}-nxp8997-pcie = "linux-firmware-nxp8997-pcie"
+
+FILES:${PN}-nxp8997-sdio = " \
+ ${nonarch_base_libdir}/firmware/nxp/sdio*8997* \
+"
+RDEPENDS:${PN}-nxp8997-sdio += "${PN}-nxp8997-common"
+RPROVIDES:${PN}-nxp8997-sdio = "linux-firmware-nxp8997-sdio"
+RREPLACES:${PN}-nxp8997-sdio = "linux-firmware-nxp8997-sdio"
+RCONFLICTS:${PN}-nxp8997-sdio = "linux-firmware-nxp8997-sdio"
+
+FILES:${PN}-nxp9098-common = " \
+ ${nonarch_base_libdir}/firmware/nxp/ed_mac_ctrl_V3_909x.conf \
+ ${nonarch_base_libdir}/firmware/nxp/txpwrlimit_cfg_9098.conf \
+ ${nonarch_base_libdir}/firmware/nxp/uartuart9098_bt_v1.bin \
+"
+RDEPENDS:${PN}-nxp9098-common += "${PN}-nxp-common"
+RPROVIDES:${PN}-nxp9098-common = "linux-firmware-nxp9098-common"
+RREPLACES:${PN}-nxp9098-common = "linux-firmware-nxp9098-common"
+RCONFLICTS:${PN}-nxp9098-common = "linux-firmware-nxp9098-common"
+
+FILES:${PN}-nxp9098-pcie = " \
+ ${nonarch_base_libdir}/firmware/nxp/pcie*9098* \
+"
+RDEPENDS:${PN}-nxp9098-pcie += "${PN}-nxp9098-common"
+RPROVIDES:${PN}-nxp9098-pcie = "linux-firmware-nxp9098-pcie"
+RREPLACES:${PN}-nxp9098-pcie = "linux-firmware-nxp9098-pcie"
+RCONFLICTS:${PN}-nxp9098-pcie = "linux-firmware-nxp9098-pcie"
+
+FILES:${PN}-nxp9098-sdio = " \
+ ${nonarch_base_libdir}/firmware/nxp/sdio*9098* \
+"
+RDEPENDS:${PN}-nxp9098-sdio += "${PN}-nxp9098-common"
+RPROVIDES:${PN}-nxp9098-sdio = "linux-firmware-nxp9098-sdio"
+RREPLACES:${PN}-nxp9098-sdio = "linux-firmware-nxp9098-sdio"
+RCONFLICTS:${PN}-nxp9098-sdio = "linux-firmware-nxp9098-sdio"
+
+FILES:${PN}-nxpiw416-sdio = " \
+ ${nonarch_base_libdir}/firmware/nxp/*iw416* \
+"
+RDEPENDS:${PN}-nxpiw416-sdio += "${PN}-nxp-common"
+RPROVIDES:${PN}-nxpiw416-sdio = "linux-firmware-nxpiw416-sdio"
+RREPLACES:${PN}-nxpiw416-sdio = "linux-firmware-nxpiw416-sdio"
+RCONFLICTS:${PN}-nxpiw416-sdio = "linux-firmware-nxpiw416-sdio"
+
+FILES:${PN}-nxpiw612-sdio = " \
+ ${nonarch_base_libdir}/firmware/nxp/sduart_nw61x_v1.bin.se \
+ ${nonarch_base_libdir}/firmware/nxp/sd_w61x_v1.bin.se \
+ ${nonarch_base_libdir}/firmware/nxp/uartspi_n61x_v1.bin.se \
+ ${nonarch_base_libdir}/firmware/nxp/IW612_SD_RFTest/ \
+"
+RDEPENDS:${PN}-nxpiw612-sdio += "${PN}-nxp-common"
+RPROVIDES:${PN}-nxpiw612-sdio = "linux-firmware-nxpiw612-sdio"
+RREPLACES:${PN}-nxpiw612-sdio = "linux-firmware-nxpiw612-sdio"
+RCONFLICTS:${PN}-nxpiw612-sdio = "linux-firmware-nxpiw612-sdio"
+
+COMPATIBLE_MACHINE = "(imx-generic-bsp)"
diff --git a/recipes-bsp/firmware-imx/firmware-sof-imx_1.9.0-1.bb b/recipes-bsp/firmware-imx/firmware-sof-imx_2.3.0.bb
index d0a497b8..9778bd1c 100644
--- a/recipes-bsp/firmware-imx/firmware-sof-imx_1.9.0-1.bb
+++ b/recipes-bsp/firmware-imx/firmware-sof-imx_2.3.0.bb
@@ -1,4 +1,4 @@
-# Copyright (C) 2020 Mihai Lindner <mihai.lindner@nxp.com>
+# Copyright (C) 2020-2022 NXP
# Released under the MIT license (see COPYING.MIT for the terms)
DESCRIPTION = "Sound Open Firmware"
@@ -8,8 +8,8 @@ LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://LICENCE;md5=0f00d99239d922ffd13cabef83b33444"
SRC_URI = "${FSL_MIRROR}/sof-imx-${PV}.tar.gz"
-SRC_URI[md5sum] = "7560d41c3be0a97c744874b531649326"
-SRC_URI[sha256sum] = "106cfb3da27867520d86649cde98256217829c97f41984e10161c1e2707e2c4e"
+SRC_URI[md5sum] = "f7d277717b3f0dd17e8d341c1091d6b6"
+SRC_URI[sha256sum] = "eb86c90aec92b3b376e7afca6aa5db4767b5d8868553595907ba37665329f16b"
S = "${WORKDIR}/sof-imx-${PV}"
diff --git a/recipes-bsp/firmware-imx/imx-boot-firmware-files_8.23.bb b/recipes-bsp/firmware-imx/imx-boot-firmware-files_8.23.bb
new file mode 100644
index 00000000..24619859
--- /dev/null
+++ b/recipes-bsp/firmware-imx/imx-boot-firmware-files_8.23.bb
@@ -0,0 +1,61 @@
+# Copyright (C) 2018-2023 NXP
+SUMMARY = "Freescale i.MX Firmware files used for boot"
+
+require firmware-imx-${PV}.inc
+
+inherit deploy nopackages
+
+do_install[noexec] = "1"
+
+DEPLOY_FOR = ""
+DEPLOY_FOR:mx8-generic-bsp = "mx8"
+DEPLOY_FOR:mx8m-generic-bsp = "mx8m"
+DEPLOY_FOR:mx9-generic-bsp = "mx9"
+
+deploy_for_mx8() {
+ # Cadence HDMI
+ install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${DEPLOYDIR}
+ install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${DEPLOYDIR}
+ install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${DEPLOYDIR}
+}
+
+deploy_for_mx8m() {
+ # Synopsys DDR
+ for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
+ install -m 0644 ${S}/firmware/ddr/synopsys/${ddr_firmware} ${DEPLOYDIR}
+ done
+
+ # Cadence DP and HDMI
+ install -m 0644 ${S}/firmware/hdmi/cadence/signed_dp_imx8m.bin ${DEPLOYDIR}
+ install -m 0644 ${S}/firmware/hdmi/cadence/signed_hdmi_imx8m.bin ${DEPLOYDIR}
+}
+
+
+deploy_for_mx9() {
+ # Synopsys DDR
+ for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
+ install -m 0644 ${S}/firmware/ddr/synopsys/${ddr_firmware} ${DEPLOYDIR}
+ done
+}
+
+python () {
+ # Manually add the required functions as dependencies otherwise they won't be included in the
+ # final run script.
+ deploy_for = d.getVar('DEPLOY_FOR', True).split()
+ for soc in deploy_for:
+ d.appendVarFlag('do_deploy', 'vardeps', ' deploy_for_%s' % soc)
+}
+
+do_deploy () {
+ for soc in ${DEPLOY_FOR}; do
+ bbnote "Running deploy for $soc"
+ deploy_for_$soc
+ done
+}
+
+addtask deploy after do_install before do_build
+
+PACKAGE_ARCH = "${MACHINE_SOCARCH}"
+
+COMPATIBLE_MACHINE = "(mx8-generic-bsp|mx9-generic-bsp)"
+COMPATIBLE_MACHINE:mx8x-generic-bsp = "(^$)"