diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/firmwares/any.dat b/packages/linux-firmware/brcmfmac_sdio-firmware/firmwares/any.dat new file mode 100644 index 0000000000..72e8ffc0db --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/firmwares/any.dat @@ -0,0 +1 @@ +* diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/package.mk b/packages/linux-firmware/brcmfmac_sdio-firmware/package.mk new file mode 100644 index 0000000000..e4e30c6340 --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/package.mk @@ -0,0 +1,50 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="brcmfmac_sdio-firmware" +PKG_VERSION="bc97ecd07221b0f0baca67bbe5dbb6f053a271f1" +PKG_SHA256="61773247f8ec519db5f123b2b554746bf4e4cc1902038d87d6217337afba00f5" +PKG_ARCH="any" +PKG_LICENSE="GPL" +PKG_SITE="https://github.com/LibreELEC/brcmfmac_sdio-firmware" +PKG_URL="https://github.com/LibreELEC/$PKG_NAME/archive/$PKG_VERSION.tar.gz" +PKG_SECTION="firmware" +PKG_LONGDESC="Broadcom SDIO firmware used with LibreELEC" +PKG_TOOLCHAIN="manual" + +post_makeinstall_target() { + FW_TARGET_DIR=$INSTALL/$(get_full_firmware_dir) + + if find_file_path firmwares/$PKG_NAME.dat; then + FW_LISTS="${FOUND_PATH}" + else + FW_LISTS="${PKG_DIR}/firmwares/any.dat ${PKG_DIR}/firmwares/${TARGET_ARCH}.dat" + fi + + for fwlist in ${FW_LISTS}; do + [ -f ${fwlist} ] || continue + while read -r fwline; do + [ -z "${fwline}" ] && continue + [[ ${fwline} =~ ^#.* ]] && continue + [[ ${fwline} =~ ^[[:space:]] ]] && continue + + for fwfile in $(cd ${PKG_BUILD} && eval "find ${fwline}"); do + [ -d ${PKG_BUILD}/${fwfile} ] && continue + if [ -f ${PKG_BUILD}/${fwfile} ]; then + mkdir -p $(dirname ${FW_TARGET_DIR}/brcm/${fwfile}) + cp -Lv ${PKG_BUILD}/${fwfile} ${FW_TARGET_DIR}/brcm/${fwfile} + else + echo "ERROR: Firmware file ${fwfile} does not exist - aborting" + exit 1 + fi + done + done < ${fwlist} + done + + mkdir -p $INSTALL/usr/bin + cp $PKG_DIR/scripts/brcmfmac-firmware-setup $INSTALL/usr/bin +} + +post_install() { + enable_service brcmfmac-firmware.service +} diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/scripts/brcmfmac-firmware-setup b/packages/linux-firmware/brcmfmac_sdio-firmware/scripts/brcmfmac-firmware-setup new file mode 100755 index 0000000000..7754cd86bb --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/scripts/brcmfmac-firmware-setup @@ -0,0 +1,12 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2019-present Team LibreELEC (https://libreelec.tv) + +DTNAME=$(/usr/bin/dtname) + +if [ "$DTNAME" = "khadas,vim" -o "$DTNAME" = "xunlong,orangepi-win" ]; then + ln -sf /usr/lib/kernel-overlays/base/lib/firmware/brcm/BCM43430A1.vim /usr/lib/firmware/brcm/BCM43430A1.hcd +else + ln -sf /usr/lib/kernel-overlays/base/lib/firmware/brcm/BCM43430A1.def /usr/lib/firmware/brcm/BCM43430A1.hcd +fi diff --git a/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service new file mode 100644 index 0000000000..062207fd0c --- /dev/null +++ b/packages/linux-firmware/brcmfmac_sdio-firmware/system.d/brcmfmac-firmware.service @@ -0,0 +1,11 @@ +[Unit] +Description=Broadcom SDIO Firmware Symlink Service +After=kernel-overlays.service +Before=kodi.service + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "/usr/bin/brcmfmac-firmware-setup" + +[Install] +WantedBy=local-fs.target