Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wip: cleanup of linux-firmware #149

Draft
wants to merge 1 commit into
base: kirkstone
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions conf/machine/include/amlogic-meson.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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)} \

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This package is never created, b/c it is empty as all files, that should go into it, are part of the linux-firmware-bcm43430 package (see the other comment).

# "
# 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 :<machine> 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 :<machine> 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"
Expand Down
12 changes: 11 additions & 1 deletion conf/machine/radxa-zero.conf
Original file line number Diff line number Diff line change
Expand Up @@ -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 \
"
Comment on lines +17 to +22

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think, this should guarded by the wifi MACHINE_FEATURES and the MACHINE_FEATURES above should contain wifi Some variants do not have an antenna, but the wifi/bt chip is always there.

The smaller radxa-zero models need linux-firmware-bcm43430, so this should be here as well (if it is removed from the amlogic-meson.inc)

41 changes: 28 additions & 13 deletions recipes-kernel/linux-firmware/linux-firmware_%.bbappend
Original file line number Diff line number Diff line change
Expand Up @@ -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* \
Comment on lines +40 to 41

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This leaves the -bcm43430a0 package empty and so it is never created causing the error mentioned above. It should be at least ${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* \
"