blob: 99afde848844a31c4ff04be016ff607d7e8b3424 [file] [log] [blame]
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08001SUMMARY = "Linux kernel firmware files from Raspbian distribution"
2DESCRIPTION = "Updated firmware files for RaspberryPi hardware. \
3RPi-Distro obtains these directly from Cypress; they are not submitted \
4to linux-firmware for general use."
5HOMEPAGE = "https://github.com/RPi-Distro/firmware-nonfree"
6SECTION = "kernel"
7
8# In maintained upstream linux-firmware:
9# * brcmfmac43430-sdio falls under LICENCE.cypress
10# * brcmfmac43455-sdio falls under LICENCE.broadcom_bcm43xx
11#
12# It is likely[^1] that both of these should be under LICENCE.cypress.
13# Further, at this time the text of LICENCE.broadcom_bcm43xx is the same
14# in linux-firmware and RPi-Distro/firmware-nonfree, but this may
15# change.
16#
17# Rather than make assumptions about what's supposed to be what, we'll
18# use the license implied by the source of these files, named to avoid
19# conflicts with linux-firmware.
20#
21# [^1]: https://github.com/RPi-Distro/bluez-firmware/issues/1
22LICENSE = "\
23 Firmware-broadcom_bcm43xx-rpidistro \
24 & WHENCE \
25"
26LIC_FILES_CHKSUM = "\
27 file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc \
Brad Bishopf76da502019-10-10 08:51:21 -040028 file://WHENCE;md5=7b12b2224438186e4c97c4c7f3a5cc28 \
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080029"
30
31# These are not common licenses, set NO_GENERIC_LICENSE for them
32# so that the license files will be copied from fetched source
33NO_GENERIC_LICENSE[Firmware-broadcom_bcm43xx-rpidistro] = "LICENCE.broadcom_bcm43xx"
34NO_GENERIC_LICENSE[WHENCE] = "WHENCE"
35
Brad Bishopf76da502019-10-10 08:51:21 -040036SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree"
37
Andrew Geissler5c4154f2020-10-16 10:13:56 -050038SRCREV = "98e815735e2c805d65994ccc608f399595b74438"
39PV = "20190114-1+rpt8"
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080040
41S = "${WORKDIR}/git"
42
43inherit allarch
44
45CLEANBROKEN = "1"
46
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080047do_compile() {
48 :
49}
50
51do_install() {
52 install -d ${D}${nonarch_base_libdir}/firmware/brcm
53
54 cp ./LICENCE.broadcom_bcm43xx ${D}${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx-rpidistro
55
56 # Replace outdated linux-firmware files with updated ones from
57 # raspbian firmware-nonfree. Raspbian adds blobs and nvram
58 # definitions that are also necessary so copy those too.
59 for fw in brcmfmac43430-sdio brcmfmac43455-sdio ; do
60 install -m 0644 brcm/${fw}.* ${D}${nonarch_base_libdir}/firmware/brcm/
61 done
Andrew Geissler5c4154f2020-10-16 10:13:56 -050062 # add compat links. Fixes errors like
63 # brcmfmac mmc1:0001:1: Direct firmware load for brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt failed with error -2
64 ln -s brcmfmac43455-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.raspberrypi,4-model-b.txt
65 ln -s brcmfmac43455-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43455-sdio.raspberrypi,3-model-b-plus.txt
66 ln -s brcmfmac43430-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.raspberrypi,3-model-b.txt
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080067}
68
69PACKAGES = "\
70 ${PN}-broadcom-license \
71 ${PN}-bcm43430 \
72 ${PN}-bcm43455 \
73"
74
75LICENSE_${PN}-bcm43430 = "Firmware-broadcom_bcm43xx-rpidistro"
76LICENSE_${PN}-bcm43455 = "Firmware-broadcom_bcm43xx-rpidistro"
77LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx-rpidistro"
78FILES_${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx-rpidistro"
79FILES_${PN}-bcm43430 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43430*"
80FILES_${PN}-bcm43455 = "${nonarch_base_libdir}/firmware/brcm/brcmfmac43455*"
81RDEPENDS_${PN}-bcm43430 += "${PN}-broadcom-license"
82RDEPENDS_${PN}-bcm43455 += "${PN}-broadcom-license"
83RCONFLICTS_${PN}-bcm43430 = "\
84 linux-firmware-bcm43430 \
85 linux-firmware-raspbian-bcm43430 \
86"
87RREPLACES_${PN}-bcm43430 = "\
88 linux-firmware-bcm43430 \
89 linux-firmware-raspbian-bcm43430 \
90"
91RCONFLICTS_${PN}-bcm43455 = "\
92 linux-firmware-bcm43455 \
93 linux-firmware-raspbian-bcm43455 \
94"
95RREPLACES_${PN}-bcm43455 = "\
96 linux-firmware-bcm43455 \
97 linux-firmware-raspbian-bcm43455 \
98"
99
100# Firmware files are generally not run on the CPU, so they can be
101# allarch despite being architecture specific
102INSANE_SKIP = "arch"