[meta-freescale] [3rdparty] imx7s-warp reference support: How to add additional firmware blobs?

Simon Hughes Simon.Hughes at arm.com
Thu Nov 23 08:33:13 PST 2017


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/meta-freescale/attachments/20171123/5be48257/attachment.html>


More information about the meta-freescale mailing list