# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI="7"
CROS_WORKON_COMMIT="d8fe66bede020f08673a0430add1e6871381f02a"
CROS_WORKON_TREE="b6b02dc67b4f59579af60a26dea67a3f1e1234ca"
CROS_WORKON_PROJECT="chromiumos/third_party/linux-firmware"
CROS_WORKON_OUTOFTREE_BUILD=1
CROS_WORKON_EGIT_BRANCH="master"

inherit cros-workon cros-sanitizers

DESCRIPTION="Firmware images from the upstream linux-fimware package"
HOMEPAGE="https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/"

SLOT="0"
KEYWORDS="*"


IUSE_KERNEL_VERS=(
	kernel-4_19
	kernel-5_4
	kernel-5_10
	kernel-5_15
	kernel-upstream
)
IUSE_ATH3K=(
	ath3k-all
	ath3k-ar3011
	ath3k-ar3012
)
IUSE_IWLWIFI=(
	iwlwifi-all
	iwlwifi-100
	iwlwifi-105
	iwlwifi-135
	iwlwifi-1000
	iwlwifi-1000
	iwlwifi-2000
	iwlwifi-2030
	iwlwifi-3160
	iwlwifi-3945
	iwlwifi-4965
	iwlwifi-5000
	iwlwifi-5150
	iwlwifi-6000
	iwlwifi-6005
	iwlwifi-6030
	iwlwifi-6050
	iwlwifi-7260
	iwlwifi-7265
	iwlwifi-7265D
	iwlwifi-9000
	iwlwifi-9260
	iwlwifi-cc
	iwlwifi-QuZ
	iwlwifi-so
)
IUSE_BRCMWIFI=(
	brcmfmac-all
	brcmfmac4354-sdio
	brcmfmac4356-pcie
	brcmfmac4371-pcie
)
IUSE_LINUX_FIRMWARE=(
	adreno-630
	adreno-660
	adsp_apl
	adsp_cnl
	adsp_glk
	adsp_kbl
	adsp_skl
	ath9k_htc
	ath10k_qca6174a-5
	ath10k_qca6174a-3
	ath10k_wcn3990
	ath11k_wcn6750
	ath11k_wcn6855
	amd_ucode
	amdgpu_carrizo
	amdgpu_gc_10_3_7
	amdgpu_green_sardine
	amdgpu_picasso
	amdgpu_raven2
	amdgpu_renoir
	amdgpu_stoney
	amdgpu_vega12
	amdgpu_yellow_carp
	bcm4354-bt
	cros-pd
	fw_sst
	fw_sst2
	i915_adl
	i915_bxt
	i915_cnl
	i915_glk
	i915_jsl
	i915_kbl
	i915_skl
	i915_tgl
	ibt_9260
	ibt_9560
	ibt_ax200
	ibt_ax201
	ibt_ax211
	ibt-hw
	ice
	ipu3_fw
	keyspan_usb
	marvell-mwlwifi
	marvell-pcie8897
	marvell-pcie8997
	mt7921e
	mt7921e-bt
	mt8173-vpu
	nvidia-xusb
	qca6174a-3-bt
	qca6174a-5-bt
	qca-wcn3990-bt
	qca-wcn3991-bt
	qca-wcn685x-bt
	qca-wcn6750-bt
	rockchip-dptx
	rt2870
	rtl8107e-1
	rtl8107e-2
	rtl8125a-3
	rtl8125b-1
	rtl8125b-2
	rtl8153
	rtl8168fp-3
	rtl8168g-1
	rtl8168g-2
	rtl8168h-1
	rtl8168h-2
	rtl_bt-8822ce-uart
	rtl_bt-8822ce-usb
	rtl_bt-8852ae-usb
	rtl_bt-8852ce-usb
	rtw8822c
	rtw8852a
	rtw8852c
	venus-52
	venus-54
	venus-vpu-2
	"${IUSE_ATH3K[@]}"
	"${IUSE_IWLWIFI[@]}"
	"${IUSE_BRCMWIFI[@]}"
)
IUSE="
	${IUSE_KERNEL_VERS[*]}
	${IUSE_LINUX_FIRMWARE[*]/#/linux_firmware_}
	video_cards_radeon
	video_cards_amdgpu"
REQUIRED_USE="?? ( ${IUSE_KERNEL_VERS[*]} )"
LICENSE="
	linux_firmware_adreno-630? ( LICENSE.qcom )
	linux_firmware_adreno-660? ( LICENSE.qcom )
	linux_firmware_adsp_apl? ( LICENCE.adsp_sst )
	linux_firmware_adsp_cnl? ( LICENCE.adsp_sst )
	linux_firmware_adsp_glk? ( LICENCE.adsp_sst )
	linux_firmware_adsp_kbl? ( LICENCE.adsp_sst )
	linux_firmware_adsp_skl? ( LICENCE.adsp_sst )
	linux_firmware_amd_ucode? ( LICENSE.amd-ucode )
	linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_gc_10_3_7? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_green_sardine? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu )
	linux_firmware_amdgpu_yellow_carp? ( LICENSE.amdgpu )
	linux_firmware_ath3k-all? ( LICENCE.atheros_firmware )
	linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware )
	linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware )
	linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware )
	linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware )
	linux_firmware_ath11k_wcn6750? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_ath11k_wcn6855? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx )
	linux_firmware_cros-pd? ( BSD-Google )
	linux_firmware_fw_sst? ( LICENCE.fw_sst )
	linux_firmware_fw_sst2? ( LICENCE.IntcSST2 )
	linux_firmware_i915_adl? ( LICENSE.i915 )
	linux_firmware_i915_bxt? ( LICENSE.i915 )
	linux_firmware_i915_cnl? ( LICENSE.i915 )
	linux_firmware_i915_glk? ( LICENSE.i915 )
	linux_firmware_i915_jsl? ( LICENSE.i915 )
	linux_firmware_i915_kbl? ( LICENSE.i915 )
	linux_firmware_i915_skl? ( LICENSE.i915 )
	linux_firmware_i915_tgl? ( LICENSE.i915 )
	linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware )
	linux_firmware_ibt_9260? ( LICENCE.ibt_firmware )
	linux_firmware_ibt_9560? ( LICENCE.ibt_firmware )
	linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware )
	linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware )
	linux_firmware_ibt_ax211? ( LICENCE.ibt_firmware )
	linux_firmware_ibt-hw? ( LICENCE.ibt_firmware )
	linux_firmware_ice? ( LICENSE.ice )
	linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb )
	linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell )
	linux_firmware_marvell-pcie8897? ( LICENCE.NXP )
	linux_firmware_marvell-pcie8997? ( LICENCE.NXP )
	linux_firmware_mt7921e? ( LICENCE.mediatek-nic )
	linux_firmware_mt7921e-bt? ( LICENCE.mediatek-nic )
	linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu )
	linux_firmware_nvidia-xusb? ( LICENCE.nvidia )
	linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_qca-wcn685x-bt? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_qca-wcn6750-bt? ( LICENSE.QualcommAtheros_ath10k )
	linux_firmware_rockchip-dptx? ( LICENCE.rockchip )
	linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware )
	linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic )
	linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic )
	linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic )
	linux_firmware_rtl8125b-1? ( LICENCE.rtl_nic )
	linux_firmware_rtl8125b-2? ( LICENCE.rtl_nic )
	linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic )
	linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic )
	linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic )
	linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic )
	linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic )
	linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtl_bt-8852ae-usb? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtl_bt-8852ce-usb? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtw8852a? ( LICENCE.rtlwifi_firmware )
	linux_firmware_rtw8852c? ( LICENCE.rtlwifi_firmware )
	linux_firmware_venus-52? ( LICENSE.qcom )
	linux_firmware_venus-54? ( LICENSE.qcom )
	linux_firmware_venus-vpu-2? ( LICENSE.qcom )
	$(printf 'linux_firmware_%s? ( LICENCE.iwlwifi_firmware ) ' "${IUSE_IWLWIFI[@]}")
	$(printf 'linux_firmware_%s? ( LICENCE.broadcom_bcm43xx ) ' "${IUSE_BRCMWIFI[@]}")
	video_cards_radeon? ( LICENSE.radeon )
	video_cards_amdgpu? ( LICENSE.amdgpu )
"

BDEPEND="
	dev-lang/python
	dev-vcs/git
"

RDEPEND="
	linux_firmware_adreno-630? ( !media-libs/a630-fw )
	linux_firmware_adreno-630? ( !media-libs/a660-fw )
	linux_firmware_ath3k-all? ( !net-wireless/ath3k )
	linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k )
	linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k )
	linux_firmware_keyspan_usb? (
		!sys-kernel/chromeos-kernel-4_4[firmware_install]
	)
	linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] )
	linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] )
	linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw )
	linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware )
	linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware )
	!net-wireless/ath6k
	!net-wireless/ath10k
	!net-wireless/iwl1000-ucode
	!net-wireless/iwl2000-ucode
	!net-wireless/iwl2030-ucode
	!net-wireless/iwl3945-ucode
	!net-wireless/iwl4965-ucode
	!net-wireless/iwl5000-ucode
	!net-wireless/iwl6000-ucode
	!net-wireless/iwl6005-ucode
	!net-wireless/iwl6030-ucode
	!net-wireless/iwl6050-ucode
"

RESTRICT="binchecks strip"

FIRMWARE_INSTALL_ROOT="/lib/firmware"

use_fw() {
	use "linux_firmware_$1"
}

doins_subdir() {
	# Avoid having this insinto command affecting later doins calls.
	local file
	for file in "${@}"; do
		(
		insinto "${FIRMWARE_INSTALL_ROOT}/${file%/*}"
		doins "${file}"
		)
	done
}

install_iwlwifi() {
	# We do not always need to detect the kernel version when all kernels
	# have the same iwlwifi firmware version. However, this changes every so
	# often for the 2 most recent kernels during bring up, where we can
	# typically use a more recent firmware on the in-development board but
	# keep the previous version for stable boards to avoid regressions.
	# Keep the logic around to avoid having to rewrite it every single time.
	local kernel=""
	local k
	for k in "${IUSE_KERNEL_VERS[@]}"; do
		if use "${k}"; then
			kernel="${k}"
			break
		fi
	done
	if [[ -z "${kernel}" ]]; then
		einfo "No kernel USE flag set."
		einfo "Expected if all kernels have the same iwlwifi firmware."
	fi

	for x in "${IUSE_IWLWIFI[@]}"; do
		use_fw "${x}" || continue
		case "${x}" in
		iwlwifi-all)   doins iwlwifi-*.ucode ;;
		iwlwifi-6005)  doins iwlwifi-6000g2a-*.ucode ;;
		iwlwifi-6030)  doins iwlwifi-6000g2b-*.ucode ;;
		iwlwifi-7260)  doins "${x}-17.ucode" ;;
		iwlwifi-7265D) doins "${x}-29.ucode" ;;
		iwlwifi-9000)  doins "${x}-pu-b0-jf-b0-46.ucode" ;;
		iwlwifi-9260)  doins "${x}-th-b0-jf-b0-46.ucode" ;;
		iwlwifi-cc)
			case "${kernel}" in
			kernel-upstream) doins "${x}-a0-72.ucode" ;;
			*)               doins "${x}-a0-73.ucode" ;;
			esac
			;;
		iwlwifi-QuZ)
			case "${kernel}" in
			kernel-4_19) doins "${x}-a0-hr-b0-73.ucode" ;;
			kernel-5_4)  doins "${x}-a0-hr-b0-73.ucode" ;;
			kernel-5_10)  doins "${x}-a0-hr-b0-73.ucode" ;;
			kernel-5_15)  doins "${x}-a0-hr-b0-73.ucode" ;;
			kernel-upstream)  doins "${x}-a0-hr-b0-72.ucode" ;;
			*)
				ewarn "Unexpected kernel version '${kernel}'."
				ewarn "Installing all '${x}' files."
				doins "${x}"-*.ucode
				;;
			esac
			;;
		iwlwifi-so)
			case "${kernel}" in
			kernel-upstream) doins "${x}-a0-gf-a0-72.ucode" ;;
			*)               doins "${x}-a0-gf-a0-73.ucode" ;;
			esac
			doins "${x}-a0-gf-a0.pnvm"
			;;
		iwlwifi-*) doins "${x}"-*.ucode ;;
		esac
		# At least with EAPI 7, it's ok to call 'doins' with the same
		# file multiple times. So an overlay declaring multiple
		# 'iwlwifi-*' USE flags (e.g. volteer) won't break the build.
		doins "iwl-dbg-cfg.ini"
	done
}

src_configure() {
	sanitizers-setup-env
	default
}

src_install() {
	local x
	insinto "${FIRMWARE_INSTALL_ROOT}"
	use_fw adreno-630 && doins_subdir qcom/a630*
	use_fw adreno-660 && doins_subdir qcom/a660*
	use_fw adsp_apl && doins_subdir intel/dsp_fw_bxtn*
	use_fw adsp_cnl && doins_subdir intel/dsp_fw_cnl*
	use_fw adsp_glk && doins_subdir intel/dsp_fw_glk*
	use_fw adsp_kbl && doins_subdir intel/dsp_fw_kbl*
	use_fw adsp_skl && doins_subdir intel/dsp_fw_*
	use_fw amd_ucode && doins_subdir amd-ucode/*.bin
	use_fw ath9k_htc && doins htc_*.fw
	use_fw ath10k_qca6174a-5 && doins_subdir ath10k/QCA6174/hw3.0/{firmware-6,board-2}.bin
	use_fw ath10k_qca6174a-3 && doins_subdir ath10k/QCA6174/hw3.0/{firmware-sdio-6,board-2}.bin
	use_fw ath10k_wcn3990 && doins_subdir ath10k/WCN3990/hw1.0/*
	use_fw ath11k_wcn6750 && doins_subdir ath11k/WCN6750/hw1.0/*
	use_fw ath11k_wcn6855 && doins_subdir ath11k/WCN6855/hw2.0/*
	use_fw bcm4354-bt && doins_subdir brcm/BCM4354_*.hcd
	use_fw cros-pd && doins_subdir cros-pd/*
	use_fw fw_sst && doins_subdir intel/fw_sst*
	use_fw fw_sst2 && doins_subdir intel/IntcSST2.bin
	use_fw i915_adl && doins_subdir i915/adl*
	use_fw i915_bxt && doins_subdir i915/bxt*
	use_fw i915_cnl && doins_subdir i915/cnl*
	use_fw i915_glk && doins_subdir i915/glk*
	use_fw i915_jsl && doins_subdir i915/icl_dmc_ver1_09.bin && doins_subdir i915/ehl*
	use_fw i915_kbl && doins_subdir i915/kbl*
	use_fw i915_skl && doins_subdir i915/skl*
	use_fw i915_tgl && doins_subdir i915/tgl*
	use_fw ipu3_fw && doins_subdir intel/irci_*
	use_fw ibt_9260 && doins_subdir intel/ibt-18-16-1.*
	use_fw ibt_9560 && doins_subdir intel/ibt-17-16-1.*
	use_fw ibt_ax200 && doins_subdir intel/ibt-20-*.*
	use_fw ibt_ax201 && doins_subdir intel/ibt-19-*.*
	use_fw ibt_ax211 && doins_subdir intel/ibt-0040-0041.*
	use_fw ibt-hw && doins_subdir intel/ibt-hw-*.bseq
	use_fw ice && doins_subdir intel/ice/ddp/*
	use_fw keyspan_usb && doins_subdir keyspan/*
	use_fw marvell-mwlwifi && doins_subdir mwlwifi/*.bin
	use_fw marvell-pcie8897 && doins_subdir mrvl/pcie8897_uapsta.bin
	use_fw marvell-pcie8997 && doins_subdir mrvl/pcieusb8997_combo_v4.bin
	use_fw mt7921e && doins_subdir mediatek/WIFI_{MT7961_patch_mcu_1_2_hdr,RAM_CODE_MT7961_1}.bin
	use_fw mt7921e-bt && doins_subdir mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
	use_fw mt8173-vpu && doins_subdir mediatek/mt8173/vpu_{d,p}.bin
	use_fw nvidia-xusb && doins_subdir nvidia/tegra*/xusb.bin
	use_fw qca6174a-3-bt && doins_subdir qca/{nvm,rampatch}_0044*.bin
	use_fw qca6174a-5-bt && doins_subdir qca/{nvm,rampatch}_usb_00000302*.bin
	use_fw qca-wcn3990-bt && doins_subdir qca/{crbtfw21.tlv,crnv21.bin}
	use_fw qca-wcn3991-bt && doins_subdir qca/{crbtfw32.tlv,crnv32.bin,crnv32u.bin}
	use_fw qca-wcn685x-bt && doins_subdir qca/{nvm,rampatch}_usb_0013*.bin
	use_fw qca-wcn6750-bt && doins_subdir qca/{msnv11.bin,msbtfw11.*}
	use_fw rockchip-dptx && doins_subdir rockchip/dptx.bin
	use_fw rtl8107e-1 && doins_subdir rtl_nic/rtl8107e-1.fw
	use_fw rtl8107e-2 && doins_subdir rtl_nic/rtl8107e-2.fw
	use_fw rtl8125a-3 && doins_subdir rtl_nic/rtl8125a-3.fw
	use_fw rtl8125b-1 && doins_subdir rtl_nic/rtl8125b-1.fw
	use_fw rtl8125b-2 && doins_subdir rtl_nic/rtl8125b-2.fw
	use_fw rtl8153 && doins_subdir rtl_nic/rtl8153*.fw
	use_fw rtl8168fp-3 && doins_subdir rtl_nic/rtl8168fp-3.fw
	use_fw rtl8168g-1 && doins_subdir rtl_nic/rtl8168g-1.fw
	use_fw rtl8168g-2 && doins_subdir rtl_nic/rtl8168g-2.fw
	use_fw rtl8168h-1 && doins_subdir rtl_nic/rtl8168h-1.fw
	use_fw rtl8168h-2 && doins_subdir rtl_nic/rtl8168h-2.fw
	use_fw rtl_bt-8822ce-uart && doins_subdir rtl_bt/rtl8822cs*.bin
	use_fw rtl_bt-8822ce-usb && doins_subdir rtl_bt/rtl8822cu*.bin
	use_fw rtl_bt-8852ae-usb && doins_subdir rtl_bt/rtl8852au*.bin
	use_fw rtl_bt-8852ce-usb && doins_subdir rtl_bt/rtl8852cu*.bin
	use_fw rtw8822c && doins_subdir rtw88/rtw8822c*.bin
	use_fw rtw8852a && doins_subdir rtw89/rtw8852a*.bin
	use_fw rtw8852c && doins_subdir rtw89/rtw8852c*.bin
	use_fw venus-52 && doins_subdir qcom/venus-5.2/*
	use_fw venus-54 && doins_subdir qcom/venus-5.4/*
	use_fw venus-vpu-2 && doins_subdir qcom/vpu-2.0/*
	use video_cards_radeon && doins_subdir radeon/*

	if use_fw amdgpu_carrizo; then
		doins_subdir amdgpu/carrizo*
	fi

	if use_fw amdgpu_gc_10_3_7; then
		doins_subdir amdgpu/dcn_3_1_6*
		doins_subdir amdgpu/gc_10_3_7_*
		doins_subdir amdgpu/psp_13_0_8_*
		doins_subdir amdgpu/sdma_5_2_7*
		doins_subdir amdgpu/yellow_carp_vcn.bin
	fi

	if use_fw amdgpu_green_sardine; then
		doins_subdir amdgpu/green_sardine*
	fi

	if use_fw amdgpu_picasso; then
		doins_subdir amdgpu/picasso*
	fi

	if use_fw amdgpu_raven2; then
		doins_subdir amdgpu/raven_dmcu*
		doins_subdir amdgpu/raven2*
	fi

	if use_fw amdgpu_renoir; then
		doins_subdir amdgpu/renoir*
	fi

	if use_fw amdgpu_stoney; then
		doins_subdir amdgpu/stoney*
	fi

	if use_fw amdgpu_vega12; then
		doins_subdir amdgpu/vega12*
	fi

	if use_fw amdgpu_yellow_carp; then
		doins_subdir amdgpu/yellow_carp*
	fi

	use_fw rt2870 && doins rt2870.bin

	# The firmware here is a mess; install specific files by hand.
	if use linux_firmware_ath3k-all || use linux_firmware_ath3k-ar3011; then
		doins ath3k-1.fw
	fi
	if use linux_firmware_ath3k-all || use linux_firmware_ath3k-ar3012; then
		(
		insinto "${FIRMWARE_INSTALL_ROOT}/ar3k"
		doins ar3k/*.dfu
		)
	fi

	install_iwlwifi

	for x in "${IUSE_BRCMWIFI[@]}"; do
		use_fw "${x}" || continue
		case ${x} in
		brcmfmac-all)      doins_subdir brcm/brcmfmac* ;;
		brcmfmac4354-sdio) doins_subdir brcm/brcmfmac4354-sdio.* ;;
		brcmfmac4356-pcie) doins_subdir brcm/brcmfmac4356-pcie.* ;;
		brcmfmac4371-pcie) doins_subdir brcm/brcmfmac4371-pcie.* ;;
		esac
	done

	# Hanle 'Link:' directives in WHENCE. The Makefile's copy-firmware.sh
	# does this too, but we trim down the install list a lot, so we don't
	# use that script.
	local link target
	while read -r link target; do
		# ${target} is link-relative, so we need to construct a full path.
		local install_target="${D}/${FIRMWARE_INSTALL_ROOT}/$(dirname "${link}")/${target}"
		# Skip 'Link' directives for files we didn't install already.
		[[ -f "${install_target}" ]] || continue
		einfo "Creating link ${link} (${target})"
		dodir "${FIRMWARE_INSTALL_ROOT}/$(dirname "${link}")"
		dosym "${target}" "${FIRMWARE_INSTALL_ROOT}/${link}"
	done < <(grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g')
}

src_test() {
	emake check
}
