summaryrefslogtreecommitdiffstats
path: root/recipes-bsp/firmware-imx/firmware-imx_8.12.bb
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-bsp/firmware-imx/firmware-imx_8.12.bb')
-rw-r--r--recipes-bsp/firmware-imx/firmware-imx_8.12.bb129
1 files changed, 129 insertions, 0 deletions
diff --git a/recipes-bsp/firmware-imx/firmware-imx_8.12.bb b/recipes-bsp/firmware-imx/firmware-imx_8.12.bb
new file mode 100644
index 00000000..8ff4a321
--- /dev/null
+++ b/recipes-bsp/firmware-imx/firmware-imx_8.12.bb
@@ -0,0 +1,129 @@
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 rm -f ${D}${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx6q.bin
20 rm -f ${D}${nonarch_base_libdir}/firmware/imx/sdma/sdma-imx7d.bin
21
22 # EASRC Firmware section
23 install -d ${D}${nonarch_base_libdir}/firmware/imx/easrc
24 install -m 0644 ${S}/firmware/easrc/* ${D}${nonarch_base_libdir}/firmware/imx/easrc/
25
26 # XCVR Firmware section
27 install -d ${D}${nonarch_base_libdir}/firmware/imx/xcvr
28 install -m 0644 ${S}/firmware/xcvr/* ${D}${nonarch_base_libdir}/firmware/imx/xcvr/
29
30 # XUVI Firmware section
31 install -d ${D}${nonarch_base_libdir}/firmware/imx/xuvi
32 install -m 0644 ${S}/firmware/xuvi/* ${D}${nonarch_base_libdir}/firmware/imx/xuvi/
33
34 # EPDC Firmware section
35 # NOTE:
36 # epdc_ED060XH2C1.fw file has .nonrestricted suffix in the source archive, hence it should
37 # be installed with a different name
38 install -d ${D}${nonarch_base_libdir}/firmware/imx/epdc
39 install -m 0644 ${S}/firmware/epdc/*.fw ${D}${nonarch_base_libdir}/firmware/imx/epdc/
40 install -m 0644 ${S}/firmware/epdc/epdc_ED060XH2C1.fw.nonrestricted ${D}${nonarch_base_libdir}/firmware/imx/epdc/epdc_ED060XH2C1.fw
41
42 # HDMI Firmware section
43 # NOTE:
44 # Only install pre-defined list of firmware files, since the source archive contains
45 # also HDMI binary files for imx8m derivatives, which are taken care of by another recipe
46 install -d ${D}${nonarch_base_libdir}/firmware/imx/hdmi
47 install -m 0644 ${S}/firmware/hdmi/cadence/hdmitxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
48 install -m 0644 ${S}/firmware/hdmi/cadence/hdmirxfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
49 install -m 0644 ${S}/firmware/hdmi/cadence/dpfw.bin ${D}${nonarch_base_libdir}/firmware/imx/hdmi
50
51 # VPU Firmware section
52 # NOTE:
53 # Do the same thing as above for HDMI - only install a pre-defined list of firmware files,
54 # as some of other files are provided by packages from other recipes.
55 install -d ${D}${nonarch_base_libdir}/firmware/vpu
56 install -m 0644 ${S}/firmware/vpu/vpu_fw_imx*.bin ${D}${nonarch_base_libdir}/firmware/vpu
57}
58
59#
60# This prepend is here to produce separate packages containing firmware,
61# which could be included separately based on the machine definition.
62#
63# It operates similar to the FILES mechanism by travesing through
64# ${D} + folder supplied as a first parameter, matches the regexp supplied
65# as second one, and for every file match - it creates a separate package,
66# which contains only files that matches the pattern.
67#
68python populate_packages_prepend() {
69 easrcdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/easrc', d)
70 do_split_packages(d, easrcdir, '^easrc-([^_]*).*\.bin',
71 output_pattern='firmware-imx-easrc-%s',
72 description='Freescale IMX EASRC Firmware [%s]',
73 extra_depends='',
74 prepend=True)
75
76 vpudir = bb.data.expand('${nonarch_base_libdir}/firmware/vpu', d)
77 do_split_packages(d, vpudir, '^vpu_fw_([^_]*).*\.bin',
78 output_pattern='firmware-imx-vpu-%s',
79 description='Freescale IMX VPU Firmware [%s]',
80 extra_depends='',
81 prepend=True)
82
83 sdmadir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/sdma', d)
84 do_split_packages(d, sdmadir, '^sdma-([^-]*).*\.bin',
85 output_pattern='firmware-imx-sdma-%s',
86 description='Freescale IMX SDMA Firmware [%s]',
87 extra_depends='',
88 prepend=True)
89
90 xcvrdir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/xcvr', d)
91 do_split_packages(d, xcvrdir, '^xcvr-([^_]*).*\.bin',
92 output_pattern='firmware-imx-xcvr-%s',
93 description='Freescale IMX XCVR Firmware [%s]',
94 extra_depends='',
95 prepend=True)
96
97 xuvidir = bb.data.expand('${nonarch_base_libdir}/firmware/imx/xuvi', d)
98 do_split_packages(d, xuvidir, '^vpu_fw_([^_]*).*\.bin',
99 output_pattern='firmware-imx-xuvi-%s',
100 description='Freescale IMX XUVI Firmware [%s]',
101 extra_depends='',
102 prepend=True)
103}
104
105# Declare a contract that we would provide packages produced by prepend above
106PACKAGES_DYNAMIC = "${PN}-vpu-* ${PN}-sdma-* ${PN}-easrc-* ${PN}-xcvr-* ${PN}-xuvi-*"
107
108#
109# Deal with the rest of Firmware packages here
110#
111# Provide EPDC and HDMI Firmware in common packages as they tend to be special in
112# terms of the content.
113#
114# NOTE: PACKAGES are defined explicitly here in order to remove the auto-generated
115# complimentary packages (-dev and -dbg).
116# This is done in order to be able to keep the main package empty and fail when
117# somebody tries to install it in the image.
118# If -dev package is present in that setup, and dev-pkgs is enabled in
119# IMAGE_FEATURES - this leads to a failure during do_rootfs() while all -dev
120# packages would be installed, and -dev package would fail because the main one
121# is empty.
122# Therefore, we opt-out from producing -dev package here, since also for firmware
123# files it makes no sense.
124PACKAGES = "${PN} ${PN}-epdc ${PN}-hdmi"
125
126FILES_${PN}-epdc = "${nonarch_base_libdir}/firmware/imx/epdc/"
127FILES_${PN}-hdmi = "${nonarch_base_libdir}/firmware/imx/hdmi/"
128
129COMPATIBLE_MACHINE = "(imx|use-mainline-bsp)"