summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Zhizhikin <andrey.z@gmail.com>2020-08-31 08:27:12 +0000
committerOtavio Salvador <otavio@ossystems.com.br>2020-09-28 11:08:08 -0300
commit6086a8c21dfdb144bc096ffe1cecb126289ee61e (patch)
tree75d938c2b3af0acf9cd3990156f43a0bf85aef98
parentb4f947df25d1040d9243ef64e94bfb0bd12f8417 (diff)
downloadmeta-freescale-6086a8c21dfdb144bc096ffe1cecb126289ee61e.tar.gz
firmware-imx: upgrade to version 8.8
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)
-rw-r--r--conf/machine/include/imx-base.inc4
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8.8.inc (renamed from recipes-bsp/firmware-imx/firmware-imx-8.5.inc)9
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8_8.8.bb (renamed from recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb)2
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx-8m_8.8.bb (renamed from recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb)2
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx_8.5.bb76
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx_8.8.bb132
6 files changed, 140 insertions, 85 deletions
diff --git a/conf/machine/include/imx-base.inc b/conf/machine/include/imx-base.inc
index b64596b4..80392f38 100644
--- a/conf/machine/include/imx-base.inc
+++ b/conf/machine/include/imx-base.inc
@@ -217,6 +217,7 @@ SIGGEN_EXCLUDE_SAFE_RECIPE_DEPS_append = " \
217# Firmware 217# Firmware
218MACHINE_FIRMWARE ?= "" 218MACHINE_FIRMWARE ?= ""
219MACHINE_FIRMWARE_append_mx25 = " firmware-imx-sdma-imx25" 219MACHINE_FIRMWARE_append_mx25 = " firmware-imx-sdma-imx25"
220MACHINE_FIRMWARE_append_mx27 = " firmware-imx-vpu-imx27"
220MACHINE_FIRMWARE_append_mx7d = " linux-firmware-imx-sdma-imx7d firmware-imx-epdc" 221MACHINE_FIRMWARE_append_mx7d = " linux-firmware-imx-sdma-imx7d firmware-imx-epdc"
221MACHINE_FIRMWARE_append_mx6 = " linux-firmware-imx-sdma-imx6q" 222MACHINE_FIRMWARE_append_mx6 = " linux-firmware-imx-sdma-imx6q"
222MACHINE_FIRMWARE_append_mx6q = " firmware-imx-vpu-imx6q" 223MACHINE_FIRMWARE_append_mx6q = " firmware-imx-vpu-imx6q"
@@ -226,11 +227,10 @@ MACHINE_FIRMWARE_append_mx6sll = " firmware-imx-epdc"
226MACHINE_FIRMWARE_append_mx6ull = " firmware-imx-epdc" 227MACHINE_FIRMWARE_append_mx6ull = " firmware-imx-epdc"
227MACHINE_FIRMWARE_append_mx53 = " firmware-imx-vpu-imx53 firmware-imx-sdma-imx53" 228MACHINE_FIRMWARE_append_mx53 = " firmware-imx-vpu-imx53 firmware-imx-sdma-imx53"
228MACHINE_FIRMWARE_append_mx51 = " firmware-imx-vpu-imx51 firmware-imx-sdma-imx51" 229MACHINE_FIRMWARE_append_mx51 = " firmware-imx-vpu-imx51 firmware-imx-sdma-imx51"
229MACHINE_FIRMWARE_append_mx8qxp = " firmware-imx-vpu-imx8qxp"
230MACHINE_FIRMWARE_append_use-mainline-bsp = " linux-firmware-imx-sdma-imx6q linux-firmware-imx-sdma-imx7d firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d" 230MACHINE_FIRMWARE_append_use-mainline-bsp = " linux-firmware-imx-sdma-imx6q linux-firmware-imx-sdma-imx7d firmware-imx-vpu-imx6q firmware-imx-vpu-imx6d"
231 231
232# FIXME: Needs addition of firmware-imx of official BSPs 232# FIXME: Needs addition of firmware-imx of official BSPs
233#MACHINE_FIRMWARE_append_mx27 = " firmware-imx-vpu-imx27" 233#MACHINE_FIRMWARE_append_mx8qxp = " firmware-imx-vpu-imx8qxp"
234 234
235MACHINE_EXTRA_RRECOMMENDS += "${MACHINE_FIRMWARE}" 235MACHINE_EXTRA_RRECOMMENDS += "${MACHINE_FIRMWARE}"
236 236
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8.5.inc b/recipes-bsp/firmware-imx/firmware-imx-8.8.inc
index ae6b1d78..a2ba7f58 100644
--- a/recipes-bsp/firmware-imx/firmware-imx-8.5.inc
+++ b/recipes-bsp/firmware-imx/firmware-imx-8.8.inc
@@ -1,17 +1,16 @@
1# Copyright (C) 2012-2016 Freescale Semiconductor 1# Copyright (C) 2012-2016 Freescale Semiconductor
2# Copyright 2017-2019 NXP 2# Copyright (C) 2017-2020 NXP
3# Copyright (C) 2018 O.S. Systems Software LTDA. 3# Copyright (C) 2018 O.S. Systems Software LTDA.
4SECTION = "base" 4SECTION = "base"
5LICENSE = "Proprietary" 5LICENSE = "Proprietary"
6LIC_FILES_CHKSUM = "file://COPYING;md5=6c12031a11b81db21cdfe0be88cac4b3" 6LIC_FILES_CHKSUM = "file://COPYING;md5=228c72f2a91452b8a03c4cab30f30ef9"
7 7
8SRCBRANCH ?= "master"
9SRC_URI = " \ 8SRC_URI = " \
10 ${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \ 9 ${FSL_MIRROR}/firmware-imx-${PV}.bin;fsl-eula=true \
11" 10"
12 11
13SRC_URI[md5sum] = "a6b926d087e1e642580da8a6d982abe6" 12SRC_URI[md5sum] = "eabb27d28bba375a9f14d6306c07af5f"
14SRC_URI[sha256sum] = "45b0a7392e7a4b2e6c7e1cb988dd660ff3f8cd465afdf796ff840a00db08389d" 13SRC_URI[sha256sum] = "5ca1f8b6e6b191594d17ac7b51c38cdbc2ff808d15568ab4b0bbeb5dc6c621f6"
15 14
16S = "${WORKDIR}/firmware-imx-${PV}" 15S = "${WORKDIR}/firmware-imx-${PV}"
17 16
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb b/recipes-bsp/firmware-imx/firmware-imx-8_8.8.bb
index 64fa2885..650c1cfd 100644
--- a/recipes-bsp/firmware-imx/firmware-imx-8_8.5.bb
+++ b/recipes-bsp/firmware-imx/firmware-imx-8_8.8.bb
@@ -1,4 +1,4 @@
1# Copyright 2018 NXP 1# Copyright (C) 2018-2020 NXP
2SUMMARY = "Freescale i.MX firmware for 8 family" 2SUMMARY = "Freescale i.MX firmware for 8 family"
3DESCRIPTION = "Freescale i.MX firmware for 8 family" 3DESCRIPTION = "Freescale i.MX firmware for 8 family"
4 4
diff --git a/recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb b/recipes-bsp/firmware-imx/firmware-imx-8m_8.8.bb
index a605d226..44e9ff4a 100644
--- a/recipes-bsp/firmware-imx/firmware-imx-8m_8.5.bb
+++ b/recipes-bsp/firmware-imx/firmware-imx-8m_8.8.bb
@@ -1,4 +1,4 @@
1# Copyright 2018 NXP 1# Copyright (C) 2018-2020 NXP
2SUMMARY = "Freescale i.MX firmware for 8M and 8M Mini family" 2SUMMARY = "Freescale i.MX firmware for 8M and 8M Mini family"
3DESCRIPTION = "Freescale i.MX firmware for 8M and 8M Mini family" 3DESCRIPTION = "Freescale i.MX firmware for 8M and 8M Mini family"
4 4
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
index ff623057..00000000
--- a/recipes-bsp/firmware-imx/firmware-imx_8.5.bb
+++ /dev/null
@@ -1,76 +0,0 @@
1# Copyright (C) 2012-2016 Freescale Semiconductor
2# Copyright 2017-2019 NXP
3# Copyright (C) 2018 O.S. Systems Software LTDA.
4SUMMARY = "Freescale i.MX firmware"
5DESCRIPTION = "Freescale i.MX firmware such as for the VPU"
6
7require firmware-imx-${PV}.inc
8
9PE = "1"
10
11SRC_URI += " \
12 git://github.com/NXP/imx-firmware.git;protocol=https;branch=${SRCBRANCH};destsuffix=${S}/git \
13"
14SRCREV = "8ce9046f5058fdd2c5271f86ccfc61bc5a248ae3"
15
16inherit allarch
17
18do_install() {
19 install -d ${D}${base_libdir}/firmware/imx
20
21 cd firmware
22 for d in *; do
23 case $d in
24 easrc)
25 # excluding as only applies Nano SoC
26 ;;
27 ddr|hdmi|seco)
28 # These folders are for i.MX 8 and are included in the boot image via imx-boot
29 bbnote Excluding folder $d
30 ;;
31 *)
32 cp -rfv $d ${D}${base_libdir}/firmware
33 ;;
34 esac
35 done
36 cd -
37
38 mv ${D}${base_libdir}/firmware/epdc/ ${D}${base_libdir}/firmware/imx/epdc/
39 mv ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw
40
41 find ${D}${base_libdir}/firmware -type f -exec chmod 644 '{}' ';'
42 find ${D}${base_libdir}/firmware -type f -exec chown root:root '{}' ';'
43
44 # Remove files not going to be installed
45 rm ${D}${base_libdir}/firmware/sdma/sdma-imx6q.bin
46 rm ${D}${base_libdir}/firmware/sdma/sdma-imx7d.bin
47 find ${D}${base_libdir}/firmware/ -name '*.mk' -exec rm '{}' ';'
48}
49
50python populate_packages_prepend() {
51 vpudir = bb.data.expand('${base_libdir}/firmware/vpu', d)
52 do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
53 output_pattern='firmware-imx-vpu-%s',
54 description='Freescale IMX Firmware %s',
55 extra_depends='',
56 prepend=True)
57
58 sdmadir = bb.data.expand('${base_libdir}/firmware/sdma', d)
59 do_split_packages(d, sdmadir, '^sdma-([^-]*).*\.bin',
60 output_pattern='firmware-imx-sdma-%s',
61 description='Freescale IMX Firmware %s',
62 extra_depends='',
63 prepend=True)
64}
65
66ALLOW_EMPTY_${PN} = "1"
67
68PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-*"
69
70PACKAGES =+ "${PN}-epdc ${PN}-scfw ${PN}-sdma"
71
72FILES_${PN}-epdc = "${base_libdir}/firmware/imx/epdc/"
73FILES_${PN}-scfw = "${base_libdir}/firmware/scfw/"
74FILES_${PN}-sdma = " ${base_libdir}/firmware/imx/sdma"
75
76COMPATIBLE_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
index 00000000..aff22ba6
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-imx_8.8.bb
@@ -0,0 +1,132 @@
1# Copyright (C) 2012-2016 Freescale Semiconductor
2# Copyright (C) 2017-2020 NXP
3# Copyright (C) 2018 O.S. Systems Software LTDA.
4SUMMARY = "Freescale i.MX firmware"
5DESCRIPTION = "Freescale i.MX firmware such as for the VPU"
6
7require firmware-imx-${PV}.inc
8
9PE = "1"
10
11inherit allarch
12
13do_install() {
14 install -d ${D}${nonarch_base_libdir}/firmware/imx
15
16 # SDMA Firmware section
17 install -d ${D}${nonarch_base_libdir}/firmware/imx/sdma
18 install -m 0644 ${S}/firmware/sdma/* ${D}${nonarch_base_libdir}/firmware/imx/sdma
19
20 # EASRC Firmware section
21 install -d ${D}${nonarch_base_libdir}/firmware/imx/easrc
22 install -m 0644 ${S}/firmware/easrc/* ${D}${nonarch_base_libdir}/firmware/imx/easrc/
23
24 # XCVR Firmware section
25 install -d ${D}${nonarch_base_libdir}/firmware/imx/xcvr
26 install -m 0644 ${S}/firmware/xcvr/* ${D}${nonarch_base_libdir}/firmware/imx/xcvr/
27
28 # XUVI Firmware section
29 install -d ${D}${nonarch_base_libdir}/firmware/imx/xuvi
30 install -m 0644 ${S}/firmware/xuvi/* ${D}${nonarch_base_libdir}/firmware/imx/xuvi/
31
32 # EPDC Firmware section
33 # NOTE:
34 # epdc_ED060XH2C1.fw file has .nonrestricted suffix in the source archive, hence it should
35 # be installed with a different name
36 install -d ${D}${nonarch_base_libdir}/firmware/imx/epdc
37 install -m 0644 ${S}/firmware/epdc/*.fw ${D}${nonarch_base_libdir}/firmware/imx/epdc/
38 install -m 0644 ${S}/firmware/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${nonarch_base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw
39
40 # HDMI Firmware section
41 # NOTE:
42 # Only install pre-defined list of firmware files, since the source archive contains
43 # also HDMI binary files for imx8m derivatives, which are taken care of by another recipe
44 install -d ${D}${nonarch_base_libdir}/firmware/imx/hdmi
45 install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
46 install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
47 install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
48
49 # VPU Firmware section
50 # NOTE:
51 # Do the same thing as above for HDMI - only install a pre-defined list of firmware files,
52 # as some of other files are provided by packages from other recipes.
53 install -d ${D}${nonarch_base_libdir}/firmware/imx/vpu
54 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx27_TO1.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
55 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx27_TO2.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
56 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx51.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
57 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx53.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
58 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx6d.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
59 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx6q.bin ${D}${nonarch_base_libdir}/firmware/imx/vpu
60}
61
62#
63# This prepend is here to produce separate packages containing firmware,
64# which could be included separately based on the machine definition.
65#
66# It operates similar to the FILES mechanism by travesing through
67# ${D} + folder supplied as a first parameter, matches the regexp supplied
68# as second one, and for every file match - it creates a separate package,
69# which contains only files that matches the pattern.
70#
71python populate_packages_prepend() {
72 easrcdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/easrc', d)
73 do_split_packages(d, easrcdir, '^easrc-([^_]*).*\.bin',
74 output_pattern='firmware-imx-easrc-%s',
75 description='Freescale IMX EASRC Firmware [%s]',
76 extra_depends='',
77 prepend=True)
78
79 vpudir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/vpu', d)
80 do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
81 output_pattern='firmware-imx-vpu-%s',
82 description='Freescale IMX VPU Firmware [%s]',
83 extra_depends='',
84 prepend=True)
85
86 sdmadir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/sdma', d)
87 do_split_packages(d, sdmadir, '^sdma-([^-]*).*\.bin',
88 output_pattern='firmware-imx-sdma-%s',
89 description='Freescale IMX SDMA Firmware [%s]',
90 extra_depends='',
91 prepend=True)
92
93 xcvrdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/xcvr', d)
94 do_split_packages(d, xcvrdir, '^xcvr-([^_]*).*\.bin',
95 output_pattern='firmware-imx-xcvr-%s',
96 description='Freescale IMX XCVR Firmware [%s]',
97 extra_depends='',
98 prepend=True)
99
100 xuvidir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/xuvi', d)
101 do_split_packages(d, xuvidir, '^vpu_fw_([^_]*).*\.bin',
102 output_pattern='firmware-imx-xuvi-%s',
103 description='Freescale IMX XUVI Firmware [%s]',
104 extra_depends='',
105 prepend=True)
106}
107
108# Declare a contract that we would provide packages produced by prepend above
109PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-* ${PN}-easrc-* ${PN}-xcvr-* ${PN}-xuvi-*"
110
111#
112# Deal with the rest of Firmware packages here
113#
114# Provide EPDC and HDMI Firmware in common packages as they tend to be special in
115# terms of the content.
116#
117# NOTE: PACKAGES are defined explicitly here in order to remove the auto-generated
118# complimentary packages (-dev and -dbg).
119# This is done in order to be able to keep the main package empty and fail when
120# somebody tries to install it in the image.
121# If -dev package is present in that setup, and dev-pkgs is enabled in
122# IMAGE_FEATURES - this leads to a failure during do_rootfs() while all -dev
123# packages would be installed, and -dev package would fail because the main one
124# is empty.
125# Therefore, we opt-out from producing -dev package here, since also for firmware
126# files it makes no sense.
127PACKAGES = "${PN} ${PN}-epdc ${PN}-hdmi"
128
129FILES_${PN}-epdc = "${nonarch_base_libdir}/firmware/imx/epdc/"
130FILES_${PN}-hdmi = "${nonarch_base_libdir}/firmware/imx/hdmi/"
131
132COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)"