diff --git a/conf/machine/include/rpi-base.inc b/conf/machine/include/rpi-base.inc index 8042d65..d2f2baa 100644 --- a/conf/machine/include/rpi-base.inc +++ b/conf/machine/include/rpi-base.inc @@ -20,6 +20,7 @@ KERNEL_DEVICETREE ?= " \ bcm2708-rpi-b-plus.dtb \ bcm2709-rpi-2-b.dtb \ bcm2710-rpi-3-b.dtb \ + bcm2710-rpi-3-b-plus.dtb \ bcm2708-rpi-cm.dtb \ bcm2710-rpi-cm3.dtb \ \ diff --git a/conf/machine/raspberrypi0-wifi.conf b/conf/machine/raspberrypi0-wifi.conf index ef6e6e5..590c669 100644 --- a/conf/machine/raspberrypi0-wifi.conf +++ b/conf/machine/raspberrypi0-wifi.conf @@ -6,7 +6,7 @@ DEFAULTTUNE ?= "arm1176jzfshf" require conf/machine/include/tune-arm1176jzf-s.inc include conf/machine/include/rpi-base.inc -MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430" +MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-raspbian-bcm43430" SDIMG_KERNELIMAGE ?= "kernel.img" UBOOT_MACHINE ?= "rpi_0_w_defconfig" diff --git a/conf/machine/raspberrypi3-64.conf b/conf/machine/raspberrypi3-64.conf index 5f33802..3e7aade 100644 --- a/conf/machine/raspberrypi3-64.conf +++ b/conf/machine/raspberrypi3-64.conf @@ -4,7 +4,7 @@ MACHINEOVERRIDES = "raspberrypi3:${MACHINE}" -MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430" +MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-raspbian-bcm43430 linux-firmware-raspbian-bcm43455" require conf/machine/include/arm/arch-armv8.inc include conf/machine/include/rpi-base.inc diff --git a/conf/machine/raspberrypi3.conf b/conf/machine/raspberrypi3.conf index a1c45b0..61c60e6 100644 --- a/conf/machine/raspberrypi3.conf +++ b/conf/machine/raspberrypi3.conf @@ -6,7 +6,7 @@ DEFAULTTUNE ?= "cortexa7thf-neon-vfpv4" require conf/machine/include/tune-cortexa7.inc include conf/machine/include/rpi-base.inc -MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-bcm43430" +MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-raspbian-bcm43430 linux-firmware-raspbian-bcm43455" SDIMG_KERNELIMAGE ?= "kernel7.img" UBOOT_MACHINE = "rpi_3_32b_config" diff --git a/docs/layer-contents.md b/docs/layer-contents.md index 223a3b0..0ba60f5 100644 --- a/docs/layer-contents.md +++ b/docs/layer-contents.md @@ -11,6 +11,8 @@ * raspberrypi-cm (dummy alias for raspberrypi) * raspberrypi-cm3 (dummy alias for raspberrypi2) +Note: The raspberrypi3 machines include support for Raspberry Pi 3B+. + ## Images * rpi-test-image @@ -20,3 +22,13 @@ For other uses it's recommended to base images on `core-image-minimal` or `core-image-base` as appropriate. The old image names (`rpi-hwup-image` and `rpi-basic-image`) are deprecated. + +## WiFi firmware blobs + +Be aware that the WiFi firmwares for the supported boards are not provided by +`linux-firmware` but by a custom recipe which only packages the needed blobs +for these boards. This is because the upstream `linux-firmware` doesn't support +or has outdated files for the blobs we need. The recipe +`linux-firmware-raspbian` is based on a fork of `linux-firmware` which +includes everything we need in order to fully support the WiFi hardware. All +machines define `MACHINE_EXTRA_RRECOMMENDS` accordingly. diff --git a/recipes-bsp/common/firmware.inc b/recipes-bsp/common/firmware.inc index d5e60cb..53654ce 100644 --- a/recipes-bsp/common/firmware.inc +++ b/recipes-bsp/common/firmware.inc @@ -1,11 +1,10 @@ -RPIFW_DATE ?= "20180226" -SRCREV ?= "469fc794fd3e45dbf30e14b46cb0d6283e399cba" +RPIFW_DATE ?= "20180313" +SRCREV ?= "af994023ab491420598bfd5648b9dcab956f7e11" RPIFW_SRC_URI ?= "https://github.com/raspberrypi/firmware/archive/${SRCREV}.tar.gz" RPIFW_S ?= "${WORKDIR}/firmware-${SRCREV}" SRC_URI = "${RPIFW_SRC_URI}" -SRC_URI[md5sum] = "319e53a3184d5cec6ba78a29d001940c" -SRC_URI[sha256sum] = "002128368c15b1e030d9a625db49603d7d19973ba58eee11973a9319f6ba5d60" +SRC_URI[md5sum] = "0c388f3631093368ac92a15a262d0f7c" +SRC_URI[sha256sum] = "e2afa23886de586856a1d604da2a85e4559715816dccbd70ae828b840beafc21" PV = "${RPIFW_DATE}" - diff --git a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin b/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin deleted file mode 100644 index 6b955da..0000000 Binary files a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.bin and /dev/null differ diff --git a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt b/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt deleted file mode 100644 index 3d917a7..0000000 --- a/recipes-kernel/linux-firmware/files/brcmfmac43430-sdio.txt +++ /dev/null @@ -1,59 +0,0 @@ -# NVRAM file for BCM943430WLSELG -# 2.4 GHz, 20 MHz BW mode - -# The following parameter values are just placeholders, need to be updated. -manfid=0x2d0 -prodid=0x0726 -vendid=0x14e4 -devid=0x43e2 -boardtype=0x0726 -boardrev=0x1202 -boardnum=22 -macaddr=00:90:4c:c5:12:38 -sromrev=11 -boardflags=0x00404201 -boardflags3=0x08000000 -xtalfreq=37400 -#xtalfreq=19200 -nocrc=1 -ag0=255 -aa2g=1 -ccode=ALL - -pa0itssit=0x20 -extpagain2g=0 - -#PA parameters for 2.4GHz, measured at CHIP OUTPUT -pa2ga0=-168,7161,-820 -AvVmid_c0=0x0,0xc8 -cckpwroffset0=5 - -# PPR params -maxp2ga0=84 -txpwrbckof=6 -cckbw202gpo=0 -legofdmbw202gpo=0x66111111 -mcsbw202gpo=0x77711111 -propbw202gpo=0xdd - -# OFDM IIR : -ofdmdigfilttype=18 -ofdmdigfilttypebe=18 -# PAPD mode: -papdmode=1 -papdvalidtest=1 -pacalidx2g=32 -papdepsoffset=-36 -papdendidx=61 - -il0macaddr=00:90:4c:c5:12:38 -wl0id=0x431b - -deadman_to=0xffffffff -# muxenab: 0x1 for UART enable, 0x2 for GPIOs, 0x8 for JTAG -muxenab=0x1 -# CLDO PWM voltage settings - 0x4 - 1.1 volt -#cldo_pwm=0x4 - -#VCO freq 326.4MHz -spurconfig=0x3 diff --git a/recipes-kernel/linux-firmware/linux-firmware-raspbian.bb b/recipes-kernel/linux-firmware/linux-firmware-raspbian.bb new file mode 100644 index 0000000..ee89301 --- /dev/null +++ b/recipes-kernel/linux-firmware/linux-firmware-raspbian.bb @@ -0,0 +1,53 @@ +SUMMARY = "Firmware files for use with Linux kernel" +SECTION = "kernel" + +LICENSE = "Firmware-broadcom_bcm43xx" + +LIC_FILES_CHKSUM = "file://LICENCE.broadcom_bcm43xx;md5=3160c14df7228891b868060e1951dfbc" + +# 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] = "LICENCE.broadcom_bcm43xx" + +SRCREV = "86e88fbf0345da49555d0ec34c80b4fbae7d0cd3" +PV = "0.0+git${SRCPV}" + +SRC_URI = "git://github.com/RPi-Distro/firmware-nonfree" + +UPSTREAM_VERSION_UNKNOWN = "1" + +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 + cp -r ./brcm/brcmfmac43430* ${D}${nonarch_base_libdir}/firmware/brcm + cp -r ./brcm/brcmfmac43455* ${D}${nonarch_base_libdir}/firmware/brcm +} + +PACKAGES = " \ + ${PN}-broadcom-license \ + ${PN}-bcm43430 \ + ${PN}-bcm43455 \ + " + +LICENSE_${PN}-bcm43430 = "Firmware-broadcom_bcm43xx" +LICENSE_${PN}-bcm43455 = "Firmware-broadcom_bcm43xx" +LICENSE_${PN}-broadcom-license = "Firmware-broadcom_bcm43xx" +FILES_${PN}-broadcom-license = "${nonarch_base_libdir}/firmware/LICENCE.broadcom_bcm43xx" +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" + +# Firmware files are generally not ran on the CPU, so they can be +# allarch despite being architecture specific +INSANE_SKIP = "arch" diff --git a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend deleted file mode 100644 index f445a54..0000000 --- a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend +++ /dev/null @@ -1,26 +0,0 @@ -FILESEXTRAPATHS_prepend_rpi := "${THISDIR}/files:" - -SRC_URI_append_rpi = " \ - file://brcmfmac43430-sdio.bin \ - file://brcmfmac43430-sdio.txt \ -" - -do_install_append_rpi() { - # 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}${nonarch_base_libdir}/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}/${nonarch_base_libdir}/firmware/brcm - install -m 0644 $_firmware ${WORKDIR}/brcmfmac43430-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm -} - -FILES_${PN}-bcm43430_append_rpi = " \ - ${nonarch_base_libdir}/firmware/brcm/brcmfmac43430-sdio.txt \ -" diff --git a/recipes-kernel/linux/linux-raspberrypi_4.14.bb b/recipes-kernel/linux/linux-raspberrypi_4.14.bb index db249a3..7679175 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.14.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.14.bb @@ -1,6 +1,6 @@ -LINUX_VERSION ?= "4.14.22" +LINUX_VERSION ?= "4.14.30" -SRCREV = "daa138dae512b374c5be05f492e7c62838359b53" +SRCREV = "9696aab22bb8163fb3a2a262dd6c67f6d05b70a1" SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.14.y" require linux-raspberrypi.inc diff --git a/recipes-kernel/linux/linux-raspberrypi_4.9.bb b/recipes-kernel/linux/linux-raspberrypi_4.9.bb index 11b34f5..af111b6 100644 --- a/recipes-kernel/linux/linux-raspberrypi_4.9.bb +++ b/recipes-kernel/linux/linux-raspberrypi_4.9.bb @@ -2,7 +2,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}-${PV}:" LINUX_VERSION ?= "4.9.80" -SRCREV = "027885087faa515133534cf767a1cd66cbd6cd1e" +SRCREV = "a7b4dd27c1c0d6510b8066b91ef01be0928d8529" SRC_URI = "git://github.com/raspberrypi/linux.git;branch=rpi-4.9.y" require linux-raspberrypi.inc