diff options
Diffstat (limited to 'import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend')
-rw-r--r-- | import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend | 97 |
1 files changed, 74 insertions, 23 deletions
diff --git a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend index 565b73526a..34d2b67655 100644 --- a/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend +++ b/import-layers/meta-raspberrypi/recipes-kernel/linux-firmware/linux-firmware_%.bbappend @@ -1,26 +1,77 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/files:" - -SRC_URI += " \ - file://brcmfmac43430-sdio.bin \ - file://brcmfmac43430-sdio.txt \ - " - -do_install_append() { - # Overwrite v7.45.41.26 by the one we currently provide in this layer - # (v7.45.41.46) - local _firmware="brcmfmac43430-sdio.bin" - local _oldmd5=9258986488eca9fe5343b0d6fe040f8e - if [ "$(md5sum ${D}/lib/firmware/brcm/$_firmware | awk '{print $1}')" != "$_oldmd5" ]; then - _firmware="" - bbwarn "linux-firmware stopped providing brcmfmac43430 v7.45.41.26." - else - _firmware="${WORKDIR}/$_firmware" - fi - - mkdir -p ${D}/lib/firmware/brcm - install -m 0644 $_firmware ${WORKDIR}/brcmfmac43430-sdio.txt ${D}/lib/firmware/brcm +# Augments upstream linux-firmware with additional and updated images +# from Raspbian: +# https://github.com/RPi-Distro/firmware-nonfree +# https://github.com/RPi-Distro/bluez-firmware + +LICENSE_append_rpi = "\ + & Firmware-cypress \ +" + +LIC_FILES_CHKSUM_append_rpi = "\ + file://LICENCE.cypress;md5=cbc5f665d04f741f1e006d2096236ba7 \ +" +NO_GENERIC_LICENSE[Firmware-cypress] = "LICENCE.cypress" + +SRC_URI_append_rpi = " \ + git://github.com/RPi-Distro/firmware-nonfree;destsuffix=raspbian-nf;name=raspbian-nf \ + git://github.com/RPi-Distro/bluez-firmware;destsuffix=raspbian-bluez;name=raspbian-bluez \ +" + +SRCREV_raspbian-nf = "86e88fbf0345da49555d0ec34c80b4fbae7d0cd3" +SRCREV_raspbian-bluez = "e28cd7ee8615de33aa7ec2b41d556af61a4a2707" +SRCREV_FORMAT_rpi = "default+raspbian-nf+raspbian-bluez" + +do_install_append_rpi() { + install -d ${D}${nonarch_base_libdir}/firmware/brcm/ + + # Replace outdated linux-firmware files with updated ones from + # raspbian firmware-nonfree. Raspbian adds blobs and nvram + # definitions that are also necessary so copy those too. + for fw in brcmfmac43430-sdio brcmfmac43455-sdio ; do + install -m 0644 ${WORKDIR}/raspbian-nf/brcm/${fw}.* ${D}${nonarch_base_libdir}/firmware/brcm/ + done + + # Add missing Cypress Bluetooth files from raspbian bluez-firmware + for fw in BCM43430A1.hcd BCM4345C0.hcd ; do + install -m 0644 ${WORKDIR}/raspbian-bluez/broadcom/${fw} ${D}${nonarch_base_libdir}/firmware/brcm/ + done } -FILES_${PN}-bcm43430 += " \ - /lib/firmware/brcm/brcmfmac43430-sdio.txt \ +# NB: Must prepend, else these become empty and their content is left in +# the roll-up package which precedes them. +PACKAGES_prepend_rpi = "\ + ${PN}-bcm43455 \ + ${PN}-cypress-license \ + ${PN}-bcm43430a1-hcd \ + ${PN}-bcm4345c0-hcd \ +" + +# For additional Broadcom +LICENSE_${PN}-bcm43455 = "Firmware-broadcom_bcm43xx" + +FILES_${PN}-bcm43430_append_rpi = " \ + ${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.txt \ +" +FILES_${PN}-bcm43455 = " \ + ${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.* \ +" + +RDEPENDS_${PN}-bcm43455 += "${PN}-broadcom-license" + +# For additional Cypress +FILES_${PN}-cypress-license = "\ + ${nonarch_base_libdir}/firmware/LICENCE.cypress \ " + +LICENSE_${PN}-bcm43430a1-hcd = "Firmware-cypress" +LICENSE_${PN}-bcm4345c0-hcd = "Firmware-cypress" + +FILES_${PN}-bcm43430a1-hcd = " \ + ${nonarch_base_libdir}/firmware/brcm/BCM43430A1.hcd \ +" +FILES_${PN}-bcm4345c0-hcd = " \ + ${nonarch_base_libdir}/firmware/brcm/BCM4345C0.hcd \ +" + +RDEPENDS_${PN}-bcm43430a1-hcd += "${PN}-cypress-license" +RDEPENDS_${PN}-bcm4345c0-hcd += "${PN}-cypress-license" |