mirror of
git://git.yoctoproject.org/meta-raspberrypi.git
synced 2025-07-19 12:59:03 +02:00

Raspberry Pi hardware requires firmware that supersedes or is not present in the standard linux-firmware distribution. These files are maintained in the RPi-Distro project on github. Several attempts have been made to reconcile conflicts between what's in linux-firmware and what the hardware needs. The existing approach is functional but not maintainable since it combines material from three repositories into a single package that claims to be linux-firmware. Remove the appends that change the content of linux-firmware for rpi hardware. Add two new recipes that follow the RPi-Distro repositories: * firmware-nonfree which forked from linux-firmware and replaces content is provided as linux-firmware-rpidistro; * bluez-firmware which forked from (very old) bluez and adds content is provided as bluez-firmware-rpidistro. The packages are named to make clear that these come from RPi-Distro, rather than generic sources. Licensing attempts to record the state of licensing as documented in RPi-Distro. Resolves: #298 Signed-off-by: Peter A. Bigot <pab@pabigot.com>
97 lines
3.3 KiB
BlitzBasic
97 lines
3.3 KiB
BlitzBasic
SUMMARY = "Linux kernel firmware files from Raspbian distribution"
|
|
DESCRIPTION = "Updated firmware files for RaspberryPi hardware. \
|
|
RPi-Distro obtains these directly from Cypress; they are not submitted \
|
|
to linux-firmware for general use."
|
|
HOMEPAGE = "https://github.com/RPi-Distro/firmware-nonfree"
|
|
SECTION = "kernel"
|
|
|
|
# In maintained upstream linux-firmware:
|
|
# * brcmfmac43430-sdio falls under LICENCE.cypress
|
|
# * brcmfmac43455-sdio falls under LICENCE.broadcom_bcm43xx
|
|
#
|
|
# It is likely[^1] that both of these should be under LICENCE.cypress.
|
|
# Further, at this time the text of LICENCE.broadcom_bcm43xx is the same
|
|
# in linux-firmware and RPi-Distro/firmware-nonfree, but this may
|
|
# change.
|
|
#
|
|
# Rather than make assumptions about what's supposed to be what, we'll
|
|
# use the license implied by the source of these files, named to avoid
|
|
# conflicts with linux-firmware.
|
|
#
|
|
# [^1]: https://github.com/RPi-Distro/bluez-firmware/issues/1
|
|
LICENSE = "\
|
|
Firmware-broadcom_bcm43xx-rpidistro \
|
|
& WHENCE \
|
|
"
|
|
LIC_FILES_CHKSUM = "\
|
|
file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
|
|
file://WHENCE;md5=a9c2c217f513c20e1d16b384b3e2c12d \
|
|
"
|
|
|
|
# These are not common licenses, set NO_GENERIC_LICENSE for them
|
|
# so that the license files will be copied from fetched source
|
|
NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx-rpidistro] = "LICENCE.broadcom_bcm43xx"
|
|
NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
|
|
|
|
SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree"
|
|
SRCREV = "b518de45ced519e8f7a499f4778100173402ae43"
|
|
PV = "0.0+git${SRCPV}"
|
|
|
|
S = "${WORKDIR}/git"
|
|
|
|
inherit allarch
|
|
|
|
CLEANBROKEN = "1"
|
|
|
|
do_compile() {
|
|
:
|
|
}
|
|
|
|
do_install() {
|
|
install -d ${D}${nonarch_base_libdir}/firmware/brcm
|
|
|
|
cp ./LICENCE.broadcom_bcm43xx ${D}${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx-rpidistro
|
|
|
|
# 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 brcm/${fw}.* ${D}${nonarch_base_libdir}/firmware/brcm/
|
|
done
|
|
}
|
|
|
|
PACKAGES = "\
|
|
${PN}-broadcom-license \
|
|
${PN}-bcm43430 \
|
|
${PN}-bcm43455 \
|
|
"
|
|
|
|
LICENSE_${PN}-bcm43430 = "Firmware-broadcom_bcm43xx-rpidistro"
|
|
LICENSE_${PN}-bcm43455 = "Firmware-broadcom_bcm43xx-rpidistro"
|
|
LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx-rpidistro"
|
|
FILES_${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx-rpidistro"
|
|
FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430*"
|
|
FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455*"
|
|
RDEPENDS_${PN}-bcm43430 += "${PN}-broadcom-license"
|
|
RDEPENDS_${PN}-bcm43455 += "${PN}-broadcom-license"
|
|
RCONFLICTS_${PN}-bcm43430 = "\
|
|
linux-firmware-bcm43430 \
|
|
linux-firmware-raspbian-bcm43430 \
|
|
"
|
|
RREPLACES_${PN}-bcm43430 = "\
|
|
linux-firmware-bcm43430 \
|
|
linux-firmware-raspbian-bcm43430 \
|
|
"
|
|
RCONFLICTS_${PN}-bcm43455 = "\
|
|
linux-firmware-bcm43455 \
|
|
linux-firmware-raspbian-bcm43455 \
|
|
"
|
|
RREPLACES_${PN}-bcm43455 = "\
|
|
linux-firmware-bcm43455 \
|
|
linux-firmware-raspbian-bcm43455 \
|
|
"
|
|
|
|
# Firmware files are generally not run on the CPU, so they can be
|
|
# allarch despite being architecture specific
|
|
INSANE_SKIP = "arch"
|