summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2020-02-17 19:37:29 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2020-03-18 19:31:44 +0100
commit264c9e55a59849b1370e4638020cb364662357b0 (patch)
tree98e9fde2ae9fb07393a832b2defa7eb70d33e24e
parent99c22a9fc70456d18b2a6b86e643a8aa83b0f9af (diff)
firmware: update to 4.14.98 2.3.1
The seco firmware is now split out of firmware-imx. The seco firmware has now a i.MX8X B0 and C0 silicon version. Related-to: ELB-2351 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> (cherry picked from commit 78802e3ecd139a5031c06821526f249e060894c1)
-rw-r--r--conf/machine/apalis-imx8x.conf1
-rw-r--r--conf/machine/colibri-imx8x.conf1
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8.4.1.inc17
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8_8.4.1.bb23
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8m_8.4.1.bb24
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx_8.4.1.bb72
-rw-r--r--recipes-bsp/imx-mkimage/imx-boot_%.bbappend74
-rw-r--r--recipes-bsp/imx-mkimage/imx-mkimage_git.bbappend16
-rw-r--r--recipes-bsp/imx-seco/imx-seco_2.5.6.bb35
9 files changed, 263 insertions, 0 deletions
diff --git a/conf/machine/apalis-imx8x.conf b/conf/machine/apalis-imx8x.conf
index e8a8ade..fc3e415 100644
--- a/conf/machine/apalis-imx8x.conf
+++ b/conf/machine/apalis-imx8x.conf
@@ -5,6 +5,7 @@
MACHINE_NAME = "Apalis-iMX8X"
+# for C0 silicon add mx8qxpc0 to the right of mx8qxp
MACHINEOVERRIDES =. "mx8:mx8x:mx8qxp:"
require conf/machine/include/imx-base.inc
diff --git a/conf/machine/colibri-imx8x.conf b/conf/machine/colibri-imx8x.conf
index fa1992c..1f7216a 100644
--- a/conf/machine/colibri-imx8x.conf
+++ b/conf/machine/colibri-imx8x.conf
@@ -5,6 +5,7 @@
MACHINE_NAME = "Colibri-iMX8X"
+# for C0 silicon add mx8qxpc0 to the right of mx8qxp
MACHINEOVERRIDES =. "mx8:mx8x:mx8qxp:"
MACHINEOVERRIDES_append_upstream = ":use-mainline-bsp"
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8.4.1.inc b/recipes-bsp/firmware-imx/firmware-imx-8.4.1.inc
new file mode 100644
index 0000000..a2fa611
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-imx-8.4.1.inc
@@ -0,0 +1,17 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright (C) 2018 O.S. Systems Software LTDA.
+SECTION = "base"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fd4b227530cd88a82af6a5982cfb724d"
+
+SRC_URI = " \
+ ${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
+"
+
+SRC_URI[md5sum] = "70bdefdd7fb58f782237acf4c648f5cd"
+SRC_URI[sha256sum] = "f04b2deb4f126e6b6cd4460462292acd72183b9f799e3b873fb390ff0f18eb55"
+
+S = "${WORKDIR}/firmware-imx-${PV}"
+
+inherit fsl-eula-unpack
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8_8.4.1.bb b/recipes-bsp/firmware-imx/firmware-imx-8_8.4.1.bb
new file mode 100644
index 0000000..64fa288
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-imx-8_8.4.1.bb
@@ -0,0 +1,23 @@
+# Copyright 2018 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.4.1.bb b/recipes-bsp/firmware-imx/firmware-imx-8m_8.4.1.bb
new file mode 100644
index 0000000..a605d22
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-imx-8m_8.4.1.bb
@@ -0,0 +1,24 @@
+# Copyright 2018 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)"
diff --git a/recipes-bsp/firmware-imx/firmware-imx_8.4.1.bb b/recipes-bsp/firmware-imx/firmware-imx_8.4.1.bb
new file mode 100644
index 0000000..4d4b479
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-imx_8.4.1.bb
@@ -0,0 +1,72 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright 2017-2018 NXP
+# Copyright (C) 2018 O.S. Systems Software LTDA.
+SUMMARY = "Freescale i.MX firmware"
+DESCRIPTION = "Freescale i.MX firmware such as for the VPU"
+
+require firmware-imx-${PV}.inc
+
+PE = "1"
+
+inherit allarch
+
+do_install() {
+ install -d ${D}${base_libdir}/firmware/imx
+ install -d ${D}${sysconfdir}/firmware
+
+ cd firmware
+ for d in *; do
+ case $d in
+ ddr|hdmi|seco)
+ # These folders are for i.MX 8 and are included in the boot image via imx-boot
+ bbnote Excluding folder $d
+ ;;
+ *)
+ cp -rfv $d ${D}${base_libdir}/firmware
+ ;;
+ esac
+ done
+ cd -
+
+ #the sdma firmware is expected in ${D}${base_libdir}/firmware/imx/sdma
+ mv ${D}${base_libdir}/firmware/sdma ${D}${base_libdir}/firmware/imx/sdma
+
+ mv ${D}${base_libdir}/firmware/epdc/ ${D}${base_libdir}/firmware/imx/epdc/
+ mv ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw
+
+ mv ${D}${base_libdir}/firmware/easrc/ ${D}${base_libdir}/firmware/imx/easrc/
+
+ find ${D}${base_libdir}/firmware -type f -exec chmod 644 '{}' ';'
+ find ${D}${base_libdir}/firmware -type f -exec chown root:root '{}' ';'
+
+ # Remove files not going to be installed
+ find ${D}${base_libdir}/firmware/ -name '*.mk' -exec rm '{}' ';'
+}
+
+python populate_packages_prepend() {
+ vpudir = bb.data.expand('${base_libdir}/firmware/vpu', d)
+ do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
+ output_pattern='firmware-imx-vpu-%s',
+ description='Freescale IMX Firmware %s',
+ extra_depends='',
+ prepend=True)
+
+ sdmadir = bb.data.expand('${base_libdir}/firmware/imx/sdma', d)
+ do_split_packages(d, sdmadir, '^sdma-([^-]*).*\.bin',
+ output_pattern='firmware-imx-sdma-%s',
+ description='Freescale IMX Firmware %s',
+ extra_depends='',
+ prepend=True)
+}
+
+ALLOW_EMPTY_${PN} = "1"
+
+PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-*"
+
+PACKAGES =+ "${PN}-easrc ${PN}-epdc ${PN}-scfw"
+
+FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/"
+FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/"
+FILES_${PN}-easrc = "${base_libdir}/firmware/imx/easrc/"
+
+COMPATIBLE_MACHINE = "(imx)"
diff --git a/recipes-bsp/imx-mkimage/imx-boot_%.bbappend b/recipes-bsp/imx-mkimage/imx-boot_%.bbappend
new file mode 100644
index 0000000..2a840cb
--- /dev/null
+++ b/recipes-bsp/imx-mkimage/imx-boot_%.bbappend
@@ -0,0 +1,74 @@
+ATF_MACHINE_NAME_mx8qxp = "bl31-imx8qx.bin"
+ATF_MACHINE_NAME_mx8mn = "bl31-imx8mn.bin"
+
+SECO_CHIP ?= "qmb0"
+SECO_CHIP_mx8qxp = "qxb0"
+SECO_CHIP_imx8qxpc0mek = "qxc0"
+SECO_CHIP_imx8qxpc0lpddr4arm2 = "qxc0"
+SECO_CHIP_mx8qxpc0 = "qxc0"
+
+SECO_FIRMWARE = "mx8${SECO_CHIP}-ahab-container.img"
+
+SOC_TARGET_mx8mn = "iMX8MN"
+
+SRCBRANCH = "imx_4.14.98_2.3.0"
+SRCREV = "d7f9440dd5c050cc22cb362d53d4048e689a0c01"
+
+REV_CHIP ?= "B0"
+REV_CHIP_imx8qxpc0mek = "C0"
+REV_CHIP_imx8qxpc0lpddr4arm2 = "C0"
+REV_CHIP_mx8qxpc0 = "C0"
+
+IMX_EXTRA_FIRMWARE = "firmware-imx-8 imx-sc-firmware imx-seco"
+IMX_EXTRA_FIRMWARE_mx8m = "firmware-imx-8m"
+IMX_EXTRA_FIRMWARE_mx8x = "firmware-imx-8x imx-sc-firmware imx-seco"
+
+compile_mx8m() {
+ bbnote 8MQ/8MM boot binary build
+ for ddr_firmware in ${DDR_FIRMWARE_NAME}; do
+ bbnote "Copy ddr_firmware: ${ddr_firmware} from ${DEPLOY_DIR_IMAGE} -> ${BOOT_STAGING} "
+ cp ${DEPLOY_DIR_IMAGE}/${ddr_firmware} ${BOOT_STAGING}
+ done
+ cp ${DEPLOY_DIR_IMAGE}/signed_*_imx8m.bin ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/u-boot-spl.bin-${MACHINE}-${UBOOT_CONFIG} ${BOOT_STAGING}/u-boot-spl.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${UBOOT_DTB_NAME} ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/u-boot-nodtb.bin-${MACHINE}-${UBOOT_CONFIG} ${BOOT_STAGING}/u-boot-nodtb.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/mkimage_uboot ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
+ cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
+}
+compile_mx8() {
+ bbnote 8QM boot binary build
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
+ cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
+ cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE} ${BOOT_STAGING}
+}
+compile_mx8x() {
+ bbnote 8QX boot binary build
+ cp ${DEPLOY_DIR_IMAGE}/${SECO_FIRMWARE} ${BOOT_STAGING}
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${SC_FIRMWARE_NAME} ${BOOT_STAGING}/scfw_tcm.bin
+ cp ${DEPLOY_DIR_IMAGE}/${BOOT_TOOLS}/${ATF_MACHINE_NAME} ${BOOT_STAGING}/bl31.bin
+ cp ${DEPLOY_DIR_IMAGE}/${UBOOT_NAME} ${BOOT_STAGING}/u-boot.bin
+}
+do_compile() {
+ compile_${SOC_FAMILY}
+ # mkimage for i.MX8
+ for target in ${IMXBOOT_TARGETS}; do
+ bbnote "building ${SOC_TARGET} - ${target}"
+ make SOC=${SOC_TARGET} REV=${REV_CHIP} dtbs=${UBOOT_DTB_NAME} ${target}
+ if [ -e "${BOOT_STAGING}/flash.bin" ]; then
+ cp ${BOOT_STAGING}/flash.bin ${S}/${BOOT_CONFIG_MACHINE}-${target}
+ fi
+ done
+}
+deploy_mx8() {
+ install -d ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE} ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+}
+deploy_mx8x() {
+ install -d ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0644 ${BOOT_STAGING}/${SECO_FIRMWARE} ${DEPLOYDIR}/${BOOT_TOOLS}
+ install -m 0755 ${S}/${TOOLS_NAME} ${DEPLOYDIR}/${BOOT_TOOLS}
+}
diff --git a/recipes-bsp/imx-mkimage/imx-mkimage_git.bbappend b/recipes-bsp/imx-mkimage/imx-mkimage_git.bbappend
new file mode 100644
index 0000000..da59113
--- /dev/null
+++ b/recipes-bsp/imx-mkimage/imx-mkimage_git.bbappend
@@ -0,0 +1,16 @@
+SRCBRANCH = "imx_4.14.98_2.3.0"
+SRCREV = "d7f9440dd5c050cc22cb362d53d4048e689a0c01"
+
+REV_CHIP ?= "B0"
+REV_CHIP_imx8qxpc0mek = "C0"
+REV_CHIP_imx8qxpc0lpddr4arm2 = "C0"
+REV_CHIP_mx8qxpc0 = "C0"
+
+do_compile () {
+ cd ${S}
+ oe_runmake clean
+ oe_runmake bin
+ oe_runmake -C iMX8M -f soc.mak mkimage_imx8
+ oe_runmake -C iMX8QM REV=${REV_CHIP} -f soc.mak imx8qm_dcd.cfg.tmp
+ oe_runmake -C iMX8QX REV=${REV_CHIP} -f soc.mak imx8qx_dcd.cfg.tmp
+}
diff --git a/recipes-bsp/imx-seco/imx-seco_2.5.6.bb b/recipes-bsp/imx-seco/imx-seco_2.5.6.bb
new file mode 100644
index 0000000..ca053df
--- /dev/null
+++ b/recipes-bsp/imx-seco/imx-seco_2.5.6.bb
@@ -0,0 +1,35 @@
+# Copyright 2019 NXP
+
+SUMMARY = "NXP i.MX SECO firmware"
+DESCRIPTION = "NXP IMX SECO firmware"
+SECTION = "base"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://COPYING;md5=fd4b227530cd88a82af6a5982cfb724d"
+
+inherit fsl-eula-unpack deploy
+
+SRC_URI = "${FSL_MIRROR}/${BPN}-${PV}.bin;fsl-eula=true "
+
+SRC_URI[md5sum] = "b0e0e358f02b7030b57f9eca6a22cf3d"
+SRC_URI[sha256sum] = "e18ce97a7ae0878c708393c6e65aaad86508d642ef4fd1b3ad9930287cc96294"
+
+do_compile[noexec] = "1"
+
+do_install[noexec] = "1"
+
+SECO_CHIP ?= "qmb0"
+SECO_CHIP_mx8qxp = "qxb0"
+SECO_CHIP_imx8qxpc0mek = "qxc0"
+SECO_CHIP_imx8qxpc0lpddr4arm2 = "qxc0"
+SECO_CHIP_mx8qxpc0 = "qxc0"
+
+SECO_FIRMWARE_NAME = "mx8${SECO_CHIP}-ahab-container.img"
+
+addtask deploy after do_install
+do_deploy () {
+ # Deploy i.MX8 SECO firmware files
+ install -m 0644 ${S}/firmware/seco/${SECO_FIRMWARE_NAME} ${DEPLOYDIR}
+}
+
+
+COMPATIBLE_MACHINE = "(mx8qm|mx8qxp)"