1SUMMARY = "Linux kernel Bluetooth firmware files from Raspbian distribution"
2DESCRIPTION = "Updated Bluetooth 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/bluez-firmware"
6SECTION = "kernel"
7
8# Upstream has provided[^1] licensing information in the Debian
9# copyright file.  The wording of the Cypress license subsequently
10# changed in linux-firmware.
11#
12# Rather than make assumptions about what's supposed to be what, we'll
13# use the license implied by the source of these files, named to avoid
14# conflicts with linux-firmware.
15#
16# [^1]: https://github.com/RPi-Distro/bluez-firmware/issues/1
17LICENSE = "Firmware-cypress-rpidistro"
18LIC_FILES_CHKSUM = "\
19    file://LICENCE.cypress-rpidistro;md5=c5d12ae0b24ef7177902a8e288751a4e \
20"
21
22# These are not common licenses, set NO_GENERIC_LICENSE for them
23# so that the license files will be copied from fetched source
24NO_GENERIC_LICENSE[Firmware-cypress-rpidistro] = "LICENCE.cypress-rpidistro"
25
26SRC_URI = "git://github.com/RPi-Distro/bluez-firmware"
27SRCREV = "e7fd166981ab4bb9a36c2d1500205a078a35714d"
28PV = "1.2-4+rpt8"
29
30S = "${WORKDIR}/git"
31
32inherit allarch
33
34CLEANBROKEN = "1"
35
36do_extract_lic() {
37    # Extract the license from the Debian copyright file
38    sed -e '1,23d' ${S}/debian/copyright > ${S}/LICENCE.cypress-rpidistro
39}
40# Must be before both do_install and do_populate_lic.  Putting it before
41# their common ancestor works; other approaches do not.
42addtask extract_lic after do_unpack before do_patch
43
44do_compile() {
45    :
46}
47
48do_install() {
49    install -d ${D}${nonarch_base_libdir}/firmware/brcm
50
51    cp LICENCE.cypress-rpidistro ${D}${nonarch_base_libdir}/firmware
52    install -m 0644 broadcom/BCM434*.hcd ${D}${nonarch_base_libdir}/firmware/brcm/
53}
54
55PACKAGES = "\
56    ${PN}-cypress-license \
57    ${PN}-bcm43430a1-hcd \
58    ${PN}-bcm43430b0-hcd \
59    ${PN}-bcm4345c0-hcd \
60    ${PN}-bcm4345c5-hcd \
61"
62
63LICENSE:${PN}-bcm43430a1-hcd = "Firmware-cypress-rpidistro"
64LICENSE:${PN}-bcm43430b0-hcd = "Firmware-cypress-rpidistro"
65LICENSE:${PN}-bcm4345c0-hcd = "Firmware-cypress-rpidistro"
66LICENSE:${PN}-bcm4345c5-hcd = "Firmware-cypress-rpidistro"
67LICENSE:${PN}-cypress-license = "Firmware-cypress-rpidistro"
68
69FILES:${PN}-cypress-license = "\
70    ${nonarch_base_libdir}/firmware/LICENCE.cypress-rpidistro \
71"
72FILES:${PN}-bcm43430a1-hcd = "\
73    ${nonarch_base_libdir}/firmware/brcm/BCM43430A1.hcd \
74"
75FILES:${PN}-bcm43430b0-hcd = "\
76    ${nonarch_base_libdir}/firmware/brcm/BCM43430B0.hcd \
77"
78FILES:${PN}-bcm4345c0-hcd = "\
79    ${nonarch_base_libdir}/firmware/brcm/BCM4345C0.hcd \
80"
81FILES:${PN}-bcm4345c5-hcd = "\
82    ${nonarch_base_libdir}/firmware/brcm/BCM4345C5.hcd \
83"
84
85RDEPENDS:${PN}-bcm43430a1-hcd += "${PN}-cypress-license"
86RDEPENDS:${PN}-bcm43430b0-hcd += "${PN}-cypress-license"
87RDEPENDS:${PN}-bcm4345c0-hcd += "${PN}-cypress-license"
88RDEPENDS:${PN}-bcm4345c5-hcd += "${PN}-cypress-license"
89RCONFLICTS:${PN}-bcm43430a1-hcd = "linux-firmware-bcm43430a1-hcd"
90RREPLACES:${PN}-bcm43430a1-hcd = "linux-firmware-bcm43430a1-hcd"
91RCONFLICTS:${PN}-bcm43430b0-hcd = "linux-firmware-bcm43430b0-hcd"
92RREPLACES:${PN}-bcm43430b0-hcd = "linux-firmware-bcm43430b0-hcd"
93RCONFLICTS:${PN}-bcm43435c0-hcd = "linux-firmware-bcm4345c0-hcd"
94RREPLACES:${PN}-bcm43435c0-hcd = "linux-firmware-bcm4345c0-hcd"
95RCONFLICTS:${PN}-bcm43435c5-hcd = "linux-firmware-bcm4345c5-hcd"
96RREPLACES:${PN}-bcm43435c5-hcd = "linux-firmware-bcm4345c5-hcd"
97
98# Firmware files are generally not run on the CPU, so they can be
99# allarch despite being architecture specific
100INSANE_SKIP = "arch"
101