Summary
What's the **right way** to add additional firmware blobs to MACHINE=imx7s-warp
DISTRO=xxx images, so we follow a sensible pattern? There are at least 2
alternatives:
- The imx6sl-warp.conf way which leverages openembedded-core
linux-firmware_git.bb.
- The imx7s-warp.conf way which is standalone (doesn't leverage
openembedded-core linux-firmware_git.bb).
We're working on imx7s-warp support in our own tree but want to be able to
upstream the changes to the community as a reference implementation rather than
bodging the job.
Details
To help work through the issues, let's assume we have:
- a layer meta-foo for storing .bbappend recipes etc.
- a machine feature "bar" which we want people to be able to turn
on/off in the their images using MACHINE_FEATURES += " bar"
- distros include packagegroup-core and packagegroup-base (so that
processing can be hooked).
Aim: To install the following firmware files into the image :
- chip vendor license agreement e.g. LICENCE.broadcom_bcm43xx
- chip vendor firmware binary file e.g. brcmfmac43340-sdio.bin
- chip vendor support file e.g. brcmfmac43430-sdio.txt
- their supporting files e.g. BCM43430A1.hcd, GPL
The dependency graph from meta-freescale-3rdparty/conf/machine/imx7s-warp.conf
looks like this:
imx7s-warp.conf
---- firmware-imx.bb
-------- firmware-imx.inc (provides FILES_${PN}-brcm i.e. firmware-imx-brmm )
------------ firmware-imx.bbappend
Note:
- firmware-imx.bb can be customised with
meta-foo/recipe-bsp/firmware-imx/firmware-imx.bbappend.
- firmware-imx.bb installs to /lib/firmware/bcm
However, the dependency graph for
meta-freescale-3rdparty/conf/machine/imx6sl-warp.conf looks like this:
imx6sl-warp.conf
---- bcm4330-nvram-config.bb
-------- broadcom-nvram-config.inc
------------ linux-firmware_git.bb
---------------- linux-firmware_git.bbappend
linux-firmware_git.bb can be customised with
meta-foo/recipe-bsp/linux-firmware/ linux-firmware_git.bbappend. This seems a
better approach because linux-firmware_git.bb already has (partial) support for
our goal:
FILES_${PN}-bcm43340 = " \
${nonarch_base_libdir}/firmware/brcm/brcmfmac43340-sdio.bin \
"
LICENSE_${PN}-bcm43340 = "Firmware-broadcom_bcm43xx"
LIC_FILES_CHKSUM = "\
...
file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc<file:///\\LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc>
\
...
Notes:
- one of the files we specifically want to install (brcmfmac43340-sdio.bin) is
managed in linux-firmware_git.bin
- linux-firmware_git.bb installs to /lib/firmware/brcm, which is different to
firmware-imx.inc.
It seems like our best short term option is as follows:
- define imx7s-warp-foo.conf,
- in imx7s-warp-foo.conf add "require imx7s-warp.conf", add MACHINE_FEATURES +=
" bar", and remove anything from imx7s-warp.conf referenced symbols (e.g.
MACHINE_EXTRA_RRECOMMENDS) that inhibits the next step.
- follow the imx6sl-warp.conf pattern to leverage linux-firmware_git.bb.
Then we'd upstream in the following way:
- upstream imx7s-warp-foo.conf into
meta-freescale-3rdparty/conf/machine/imx7s-warp.conf
- upstream linux-firmware_%.bbappend to linux-firmware_git.bb.
Please could you share your opinions on the best way to proceed?
Thanks
IMPORTANT NOTICE: The contents of this email and any attachments are
confidential and may also be privileged. If you are not the intended recipient,
please notify the sender immediately and do not disclose the contents to any
other person, use it for any purpose, or store or copy the information in any
medium. Thank you.
--
_______________________________________________
meta-freescale mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/meta-freescale