From 63f92e6495429fee0c3feedb0efd64ae6014ee5c Mon Sep 17 00:00:00 2001 From: Kevin Vanden Berge Date: Thu, 16 Feb 2023 23:09:01 -0500 Subject: [PATCH] wip: cleanup of linux-firmware Signed-off-by: Kevin Vanden Berge --- conf/machine/include/amlogic-meson.inc | 43 +++++++++++++------ conf/machine/radxa-zero.conf | 12 +++++- .../linux-firmware/linux-firmware_%.bbappend | 41 ++++++++++++------ 3 files changed, 70 insertions(+), 26 deletions(-) diff --git a/conf/machine/include/amlogic-meson.inc b/conf/machine/include/amlogic-meson.inc index 83a784b8..576535de 100644 --- a/conf/machine/include/amlogic-meson.inc +++ b/conf/machine/include/amlogic-meson.inc @@ -14,18 +14,37 @@ XSERVER ?= "\ xf86-video-modesetting \ " -MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4329", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4330", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4335", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43362", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43430", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43430a0", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43455", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4354", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4356", "",d)} \ - ${@bb.utils.contains("MACHINE_FEATURES", "screen", "linux-firmware-amlogic-vdec", "",d)} \ -" +# TODO - the changes in linux-firmware_%.bbappend to new override syntax causes build failures when +# installing either linux-firmware-bcm43430 or linux-firware-bcm43430a0: +# - nothing provides linux-firmware-bcm43430a0 needed by packagegroup-core-boot-1.0-r17.radxa_zero +# +# Bascally including either of these in MACHINE_ESSENTIAL_EXTRA_RDEPENDS causes the above error +# MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43430", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43430a0", "",d)} \ +# " +# For now I'm taking an aggressive approach and not installing anything other than what I need, selfishly. +# +# TODO - figure out where these belong, probably in the machine conf _or_ using the : override syntax +# as surely not all amlogic based systems need _all_ firmwares installed +# MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4329", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4330", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4335", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43362", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43430", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43430a0", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43455", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4354", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm4356", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "screen", "linux-firmware-amlogic-vdec", "",d)} \ +# " + +# An example using : override +# MACHINE_ESSENTIAL_EXTRA_RDEPENDS:radxa-zero += " \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43455", "",d)} \ +# ${@bb.utils.contains("MACHINE_FEATURES", "wifi", "linux-firmware-bcm43456", "",d)} \ +# " IMAGE_FSTYPES += "tar.bz2 wic" do_image_wic[depends] += "mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot" diff --git a/conf/machine/radxa-zero.conf b/conf/machine/radxa-zero.conf index 330bb975..a8a40b32 100644 --- a/conf/machine/radxa-zero.conf +++ b/conf/machine/radxa-zero.conf @@ -8,5 +8,15 @@ require conf/machine/include/amlogic-modern-boot.inc MACHINE_FEATURES:append = " alsa ext2 screen usbgadget usbhost vfat" - UBOOT_MACHINE = "radxa-zero_config" + +# If this is populated in amlogic-meson.inc, it doesn't need +# to be here as well. This is just another method of specifying the correct +# firmware for a given machine. This seems to align more similarly with other repos vs. +# doing this in amlogic-meson.inc +MACHINE_ESSENTIAL_EXTRA_RDEPENDS += " \ + linux-firmware-bcm43455 \ + linux-firmware-bcm43456 \ + linux-firmware-bcm4345c0-hcd \ + linux-firmware-bcm4345c5-hcd \ +" diff --git a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend index ad88832a..0a45881d 100644 --- a/recipes-kernel/linux-firmware/linux-firmware_%.bbappend +++ b/recipes-kernel/linux-firmware/linux-firmware_%.bbappend @@ -5,55 +5,70 @@ SRC_URI += " \ file://brcmfmac4354-sdio.txt \ " -SRCREV_brcmfmac-sdio-firmware = "3ddc301c272f081aa5513c1934f6d530bf80de4a" +# This package is not in upstream linux-firmware repo, so add it here +PACKAGES =+ " \ + ${PN}-bcm43456 \ + ${PN}-bcm4345c0-hcd \ + ${PN}-bcm4345c5-hcd \ +" +# Update sha to point to version that has firmware for Radxa-Zero +SRCREV_brcmfmac-sdio-firmware = "3d63ae8b429103a6ef684f7237e048763318a2ba" do_install:append() { - for f in ${WORKDIR}/brcmfmac_sdio-firmware/*.txt ${WORKDIR}/brcmfmac_sdio-firmware/*.bin; do + for f in ${WORKDIR}/brcmfmac_sdio-firmware/*.txt ${WORKDIR}/brcmfmac_sdio-firmware/*.bin ${WORKDIR}/brcmfmac_sdio-firmware/*.hcd; do install -m 0644 $f ${D}${nonarch_base_libdir}/firmware/brcm done install -m 0644 ${WORKDIR}/brcmfmac4354-sdio.txt ${D}${nonarch_base_libdir}/firmware/brcm } -FILES_${PN}-bcm4329 += " \ +FILES:${PN}-bcm4329 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4329* \ " -FILES_${PN}-bcm4330 += " \ +FILES:${PN}-bcm4330 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4330* \ " -FILES_${PN}-bcm4335 += " \ +FILES:${PN}-bcm4335 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4335* \ " -FILES_${PN}-bcm43362 += " \ +FILES:${PN}-bcm43362 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43362* \ " -FILES_${PN}-bcm43430 += " \ +FILES:${PN}-bcm43430 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43430* \ " -FILES_${PN}-bcm43430a0 += " \ +FILES:${PN}-bcm43430a0 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43430a0* \ " -FILES_${PN}-bcm43455 += " \ +FILES:${PN}-bcm43455 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43455* \ " -FILES_${PN}-bcm43456 += " \ +FILES:${PN}-bcm4345c0-hcd += " \ + ${nonarch_base_libdir}/firmware/brcm/BCM4345C0.hcd \ +" + +FILES:${PN}-bcm43456 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac43456* \ " -FILES_${PN}-bcm4354 += " \ +FILES:${PN}-bcm4345c5-hcd += " \ + ${nonarch_base_libdir}/firmware/brcm/BCM4345C5.hcd \ +" + +FILES:${PN}-bcm4354 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4354* \ " -FILES_${PN}-bcm4356 += " \ +FILES:${PN}-bcm4356 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4356* \ " -FILES_${PN}-bcm4359 += " \ +FILES:${PN}-bcm4359 += " \ ${nonarch_base_libdir}/firmware/brcm/brcmfmac4359* \ "