# Lontium lt9611uxc
PRODUCT_PACKAGES :=	\
    lt9611uxc_fw.bin

# WLAN
PRODUCT_PACKAGES +=	\
    amss.bin		\
    board.bin		\
    m3.bin

# Bluetooth
PRODUCT_PACKAGES +=	\
    htbtfw20.tlv	\
    htnv20.bin

ifneq ($(TARGET_USES_SWR), true)
    # Adreno
    PRODUCT_PACKAGES +=	\
        a650_gmu.bin	\
        a650_sqe.fw	\
        a650_zap.mbn
endif

# DSP (adsp+cdsp)
PRODUCT_PACKAGES +=	\
    adsp.mbn.sm8250	\
    adspr.jsn.sm8250	\
    adspua.jsn.sm8250	\
    cdsp.mbn.sm8250	\
    cdspr.jsn.sm8250

# Video encoder/decoder accelerator
PRODUCT_PACKAGES +=	\
    venus.b00.sm8250	\
    venus.b01.sm8250	\
    venus.b02.sm8250	\
    venus.b03.sm8250	\
    venus.b04.sm8250	\
    venus.b05.sm8250	\
    venus.b06.sm8250	\
    venus.b07.sm8250	\
    venus.b08.sm8250	\
    venus.b09.sm8250	\
    venus.b10.sm8250	\
    venus.b19.sm8250	\
    venus.mbn.sm8250	\
    venus.mdt.sm8250

FIRMWARE_VENDOR_PATH := $(LINARO_VENDOR_PATH)/linux-firmware/$(EXPECTED_LINARO_VENDOR_VERSION)

# Also copy a set of Venus, WiFi-BT and ADSP-CDSP firmware files to vendor ramdisk to drop the
# dependency on user sysfs fw loader helper (FW_LOADER_USER_HELPER_FALLBACK)
PRODUCT_COPY_FILES += \
    $(FIRMWARE_VENDOR_PATH)/ath11k/QCA6390/hw2.0/amss.bin:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/ath11k/QCA6390/hw2.0/amss.bin	\
    $(LOCAL_PATH)/RB5_firmware_20210331-v4/38-bdwlan_split/bdwlan.e04:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/ath11k/QCA6390/hw2.0/board.bin	\
    $(FIRMWARE_VENDOR_PATH)/ath11k/QCA6390/hw2.0/m3.bin:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/ath11k/QCA6390/hw2.0/m3.bin	\
    $(FIRMWARE_VENDOR_PATH)/qca/htbtfw20.tlv:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qca/htbtfw20.tlv		\
    $(FIRMWARE_VENDOR_PATH)/qca/htnv20.bin:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qca/htnv20.bin			\
    $(FIRMWARE_VENDOR_PATH)/qcom/sm8250/adsp.mbn:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/sm8250/adsp.mbn	\
    $(FIRMWARE_VENDOR_PATH)/qcom/sm8250/cdsp.mbn:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/sm8250/cdsp.mbn	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b00:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b00	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b01:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b01	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b02:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b02	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b03:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b03	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b04:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b04	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b05:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b05	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b06:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b06	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b07:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b07	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b08:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b08	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b09:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b09	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b10:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b10	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.b19:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.b19	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.mbn:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.mbn	\
    $(FIRMWARE_VENDOR_PATH)/qcom/vpu-1.0/venus.mdt:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/vendor/firmware/qcom/vpu-1.0/venus.mdt

# Copy notice/license files to rootfs
# Not an AOSP requirement but other Linux distros do this
PRODUCT_COPY_FILES += \
    $(FIRMWARE_VENDOR_PATH)/ath11k/QCA6390/hw2.0/Notice.txt:$(TARGET_COPY_OUT_VENDOR)/firmware/ath11k/QCA6390/hw2.0/Notice.txt		\
    $(FIRMWARE_VENDOR_PATH)/qca/NOTICE.txt:$(TARGET_COPY_OUT_VENDOR)/firmware/qca/NOTICE.txt						\
    $(FIRMWARE_VENDOR_PATH)/qcom/NOTICE.txt:$(TARGET_COPY_OUT_VENDOR)/firmware/qcom/NOTICE.txt						\
    $(FIRMWARE_VENDOR_PATH)/LICENSE.Lontium:$(TARGET_COPY_OUT_VENDOR)/firmware/LICENSE.Lontium						\
    $(FIRMWARE_VENDOR_PATH)/LICENSE.QualcommAtheros_ath10k:$(TARGET_COPY_OUT_VENDOR)/firmware/LICENSE.QualcommAtheros_ath10k		\
    $(FIRMWARE_VENDOR_PATH)/LICENSE.qcom:$(TARGET_COPY_OUT_VENDOR)/firmware/LICENSE.qcom							\
    $(LINARO_VENDOR_PATH)/rb5/$(EXPECTED_LINARO_VENDOR_VERSION)/RB5_firmware_20210331-v4/LICENSE.qcom.txt:$(TARGET_COPY_OUT_VENDOR)/firmware/ath11k/QCA6390/hw2.0/LICENSE.qcom.txt
