]> code.ossystems Code Review - meta-freescale.git/commitdiff
firmware-imx: upgrade to version 8.8
authorAndrey Zhizhikin <andrey.z@gmail.com>
Mon, 31 Aug 2020 08:27:12 +0000 (08:27 +0000)
committerOtavio Salvador <otavio@ossystems.com.br>
Tue, 29 Sep 2020 21:06:06 +0000 (18:06 -0300)
Update all recipe PN to match the one from upstream.

Latest delivery from NXP has VPU firmware for imx27 in the package, so
enable it to be included in the image.

It also also lacks the VPU firmware for imx8qxp, so disable the package
for now until it is provided from NXP.

firmware-imx has been re-worked to provide a more unified mechanism for
installing firmware files into ${D} and package split is expalined in
the comments section.

NOTE: This update uses new EULA v11 from NXP.

Signed-off-by: Andrey Zhizhikin <andrey.z@gmail.com>
(cherry picked from commit b3eff3e4cea333e35401e031293731ab32bc0929)

conf/machine/include/imx-base.inc
recipes-bsp/firmware-imx/firmware-imx-8.8.inc [moved from recipes-bsp/firmware-imx/firmware-imx-8.5.inc with 51% similarity]
recipes-bsp/firmware-imx/firmware-imx-8_8.8.bb [moved from recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb with 95% similarity]
recipes-bsp/firmware-imx/firmware-imx-8m_8.8.bb [moved from recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb with 95% similarity]
recipes-bsp/firmware-imx/firmware-imx_8.5.bb [deleted file]
recipes-bsp/firmware-imx/firmware-imx_8.8.bb [new file with mode: 0644]

index b64596b4aae97e03605b56fdc394a90809827384..80392f38e6839f262d84a10e57f9ff9e081de2ba 100644 (file)
@@ -217,6 +217,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS_append = " \
 # Firmware
 MACHINE_FIRMWARE ?= ""
 MACHINE_FIRMWARE_append_mx25 = " firmware-imx-sdma-imx25"
+MACHINE_FIRMWARE_append_mx27 = " firmware-imx-vpu-imx27"
 MACHINE_FIRMWARE_append_mx7d = " linux-firmware-imx-sdma-imx7d firmware-imx-epdc"
 MACHINE_FIRMWARE_append_mx6 = " linux-firmware-imx-sdma-imx6q"
 MACHINE_FIRMWARE_append_mx6q = " firmware-imx-vpu-imx6q"
@@ -226,11 +227,10 @@ MACHINE_FIRMWARE_append_mx6sll = " firmware-imx-epdc"
 MACHINE_FIRMWARE_append_mx6ull = " firmware-imx-epdc"
 MACHINE_FIRMWARE_append_mx53 = " firmware-imx-vpu-imx53 firmware-imx-sdma-imx53"
 MACHINE_FIRMWARE_append_mx51 = " firmware-imx-vpu-imx51 firmware-imx-sdma-imx51"
-MACHINE_FIRMWARE_append_mx8qxp = " firmware-imx-vpu-imx8qxp"
 MACHINE_FIRMWARE_append_use-mainline-bsp = " linux-firmware-imx-sdma-imx6q linux-firmware-imx-sdma-imx7d firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d"
 
 # FIXME: Needs addition of firmware-imx of official BSPs
-#MACHINE_FIRMWARE_append_mx27 = " firmware-imx-vpu-imx27"
+#MACHINE_FIRMWARE_append_mx8qxp = " firmware-imx-vpu-imx8qxp"
 
 MACHINE_EXTRA_RRECOMMENDS += "${MACHINE_FIRMWARE}"
 
similarity index 51%
rename from recipes-bsp/firmware-imx/firmware-imx-8.5.inc
rename to recipes-bsp/firmware-imx/firmware-imx-8.8.inc
index ae6b1d78f1f920709922206b6f0c1cba97eb7a6d..a2ba7f585e43d1727a7f6bf4435ebe77d1baaaa4 100644 (file)
@@ -1,17 +1,16 @@
 # Copyright (C) 2012-2016 Freescale Semiconductor
-# Copyright 2017-2019 NXP
+# Copyright (C) 2017-2020 NXP
 # Copyright (C) 2018 O.S. Systems Software LTDA.
 SECTION = "base"
 LICENSE = "Proprietary"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6c12031a11b81db21cdfe0be88cac4b3"
+LIC_FILES_CHKSUM = "file://COPYING;md5=228c72f2a91452b8a03c4cab30f30ef9"
 
-SRCBRANCH ?= "master"
 SRC_URI = " \
     ${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
 "
 
-SRC_URI[md5sum] = "a6b926d087e1e642580da8a6d982abe6"
-SRC_URI[sha256sum] = "45b0a7392e7a4b2e6c7e1cb988dd660ff3f8cd465afdf796ff840a00db08389d"
+SRC_URI[md5sum] = "eabb27d28bba375a9f14d6306c07af5f"
+SRC_URI[sha256sum] = "5ca1f8b6e6b191594d17ac7b51c38cdbc2ff808d15568ab4b0bbeb5dc6c621f6"
 
 S = "${WORKDIR}/firmware-imx-${PV}"
 
similarity index 95%
rename from recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb
rename to recipes-bsp/firmware-imx/firmware-imx-8_8.8.bb
index 64fa2885b80ee3621545a0a66dd5c0c971098b7b..650c1cfded6193cb79efbd3e4fe0364dd8766c3d 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 NXP
+# Copyright (C) 2018-2020 NXP
 SUMMARY = "Freescale i.MX firmware for 8 family"
 DESCRIPTION = "Freescale i.MX firmware for 8 family"
 
similarity index 95%
rename from recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb
rename to recipes-bsp/firmware-imx/firmware-imx-8m_8.8.bb
index a605d2262027f565145a2b1dd4a1e93c29f8cf9d..44e9ff4a569c8dc4a38dead10f0ffdf9dcffcf1c 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright 2018 NXP
+# 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"
 
diff --git a/recipes-bsp/firmware-imx/firmware-imx_8.5.bb b/recipes-bsp/firmware-imx/firmware-imx_8.5.bb
deleted file mode 100644 (file)
index ff62305..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (C) 2012-2016 Freescale Semiconductor
-# Copyright 2017-2019 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"
-
-SRC_URI += " \
-    git://github.com/NXP/imx-firmware.git;protocol=https;branch=${SRCBRANCH};destsuffix=${S}/git \
-"
-SRCREV = "8ce9046f5058fdd2c5271f86ccfc61bc5a248ae3"
-
-inherit allarch
-
-do_install() {
-    install -d ${D}${base_libdir}/firmware/imx
-
-    cd firmware
-    for d in *; do
-        case $d in
-        easrc)
-            # excluding as only applies Nano SoC
-            ;;
-        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 -
-
-    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
-
-    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
-    rm ${D}${base_libdir}/firmware/sdma/sdma-imx6q.bin
-    rm ${D}${base_libdir}/firmware/sdma/sdma-imx7d.bin
-    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/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}-epdc ${PN}-scfw ${PN}-sdma"
-
-FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/"
-FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/"
-FILES_${PN}-sdma = " ${base_libdir}/firmware/imx/sdma"
-
-COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)"
diff --git a/recipes-bsp/firmware-imx/firmware-imx_8.8.bb b/recipes-bsp/firmware-imx/firmware-imx_8.8.bb
new file mode 100644 (file)
index 0000000..aff22ba
--- /dev/null
@@ -0,0 +1,132 @@
+# Copyright (C) 2012-2016 Freescale Semiconductor
+# Copyright (C) 2017-2020 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}${nonarch_base_libdir}/firmware/imx
+
+    # SDMA Firmware section
+    install -d ${D}${nonarch_base_libdir}/firmware/imx/sdma
+    install -m 0644 ${S}/firmware/sdma/* ${D}${nonarch_base_libdir}/firmware/imx/sdma
+
+    # EASRC Firmware section
+    install -d ${D}${nonarch_base_libdir}/firmware/imx/easrc
+    install -m 0644 ${S}/firmware/easrc/* ${D}${nonarch_base_libdir}/firmware/imx/easrc/
+
+    # XCVR Firmware section
+    install -d ${D}${nonarch_base_libdir}/firmware/imx/xcvr
+    install -m 0644 ${S}/firmware/xcvr/* ${D}${nonarch_base_libdir}/firmware/imx/xcvr/
+
+    # XUVI Firmware section
+    install -d ${D}${nonarch_base_libdir}/firmware/imx/xuvi
+    install -m 0644 ${S}/firmware/xuvi/* ${D}${nonarch_base_libdir}/firmware/imx/xuvi/
+
+    # EPDC Firmware section
+    # NOTE:
+    # epdc_ED060XH2C1.fw file has .nonrestricted suffix in the source archive, hence it should
+    # be installed with a different name
+    install -d ${D}${nonarch_base_libdir}/firmware/imx/epdc
+    install -m 0644 ${S}/firmware/epdc/*.fw ${D}${nonarch_base_libdir}/firmware/imx/epdc/
+    install -m 0644 ${S}/firmware/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${nonarch_base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw
+
+    # HDMI Firmware section
+    # 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
+
+    # VPU Firmware section
+    # NOTE:
+    # Do the same thing as above for HDMI - only install a pre-defined list of firmware files,
+    # as some of other files are provided by packages from other recipes.
+    install -d ${D}${nonarch_base_libdir}/firmware/imx/vpu
+    install -m 0644 ${S}/firmware/vpu/vpu_fw_imx27_TO1.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
+    install -m 0644 ${S}/firmware/vpu/vpu_fw_imx27_TO2.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
+    install -m 0644 ${S}/firmware/vpu/vpu_fw_imx51.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
+    install -m 0644 ${S}/firmware/vpu/vpu_fw_imx53.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
+    install -m 0644 ${S}/firmware/vpu/vpu_fw_imx6d.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
+    install -m 0644 ${S}/firmware/vpu/vpu_fw_imx6q.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
+}
+
+#
+# This prepend is here to produce separate packages containing firmware,
+# which could be included separately based on the machine definition.
+#
+# It operates similar to the FILES mechanism by travesing through
+# ${D} + folder supplied as a first parameter, matches the regexp supplied
+# as second one, and for every file match - it creates a separate package,
+# which contains only files that matches the pattern.
+#
+python populate_packages_prepend() {
+    easrcdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/easrc', d)
+    do_split_packages(d, easrcdir, '^easrc-([^_]*).*\.bin',
+                      output_pattern='firmware-imx-easrc-%s',
+                      description='Freescale IMX EASRC Firmware [%s]',
+                      extra_depends='',
+                      prepend=True)
+
+    vpudir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/vpu', d)
+    do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
+                      output_pattern='firmware-imx-vpu-%s',
+                      description='Freescale IMX VPU Firmware [%s]',
+                      extra_depends='',
+                      prepend=True)
+
+    sdmadir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/sdma', d)
+    do_split_packages(d, sdmadir, '^sdma-([^-]*).*\.bin',
+                      output_pattern='firmware-imx-sdma-%s',
+                      description='Freescale IMX SDMA Firmware [%s]',
+                      extra_depends='',
+                      prepend=True)
+
+    xcvrdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/xcvr', d)
+    do_split_packages(d, xcvrdir, '^xcvr-([^_]*).*\.bin',
+                      output_pattern='firmware-imx-xcvr-%s',
+                      description='Freescale IMX XCVR Firmware [%s]',
+                      extra_depends='',
+                      prepend=True)
+
+    xuvidir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/xuvi', d)
+    do_split_packages(d, xuvidir, '^vpu_fw_([^_]*).*\.bin',
+                      output_pattern='firmware-imx-xuvi-%s',
+                      description='Freescale IMX XUVI Firmware [%s]',
+                      extra_depends='',
+                      prepend=True)
+}
+
+# Declare a contract that we would provide packages produced by prepend above
+PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-* ${PN}-easrc-* ${PN}-xcvr-* ${PN}-xuvi-*"
+
+#
+# Deal with the rest of Firmware packages here
+#
+# Provide EPDC and HDMI Firmware in common packages as they tend to be special in
+# terms of the content.
+#
+# NOTE: PACKAGES are defined explicitly here in order to remove the auto-generated
+# complimentary packages (-dev and -dbg).
+# This is done in order to be able to keep the main package empty and fail when
+# somebody tries to install it in the image.
+# If -dev package is present in that setup, and dev-pkgs is enabled in
+# IMAGE_FEATURES - this leads to a failure during do_rootfs() while all -dev
+# packages would be installed, and -dev package would fail because the main one
+# is empty.
+# Therefore, we opt-out from producing -dev package here, since also for firmware
+# files it makes no sense.
+PACKAGES = "${PN} ${PN}-epdc ${PN}-hdmi"
+
+FILES_${PN}-epdc = "${nonarch_base_libdir}/firmware/imx/epdc/"
+FILES_${PN}-hdmi = "${nonarch_base_libdir}/firmware/imx/hdmi/"
+
+COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)"