#!/bin/sh
set -e

PREREQS=""
case $1 in
    prereqs) echo "${PREREQS}"; exit 0;;
esac

. /usr/share/initramfs-tools/hook-functions

# Fetch the device parameters
for x in $(cat /proc/cmdline); do
    case $x in
        mobile.qcomsoc=*) QCOMSOC="${x#mobile.qcomsoc=}" ;;
        mobile.model=*) MODEL="${x#mobile.model=}" ;;
    esac
done

if [ "${QCOMSOC}" ] && [ "${MODEL}" ]; then
    # Special case for the OnePlus 6 & 6T: both models use the same
    # firmware folder: sdm845/oneplus6
    if [ "${MODEL}" = "enchilada" ] || [ "${MODEL}" = "fajita" ]; then
        MODEL="oneplus6"
    fi
    # Special case for the "fp4" (Fairphone 4): this model uses the
    # "fairphone4" firmware folder
    if [ "${MODEL}" = "fp4" ]; then
        MODEL="fairphone4"
    fi
    # Special case for "bonito" (Pixel 3a XL): this model uses the "sargo" (Pixel 3a) firmware folders
    if [ "${MODEL}" = "bonito" ]; then
        MODEL="sargo"
    fi

    FW_LIST="${QCOMSOC}/${MODEL}/adsp.mbn \
             ${QCOMSOC}/${MODEL}/cdsp.mbn \
             ${QCOMSOC}/${MODEL}/ipa_fws.mbn"

    FW_RADIO="ath10k/WCN3990/hw1.0/board-2.bin \
              qca/${MODEL}/crnv21.bin \
              qca/crbtfw21.tlv \
              qca/crnv21.bin"

    if [ "${QCOMSOC}" = "qcom/sdm845" ]; then
        FW_LIST="${FW_LIST} \
                 ${QCOMSOC}/${MODEL}/a630_zap.mbn"
    elif [ "${QCOMSOC}" = "qcom/sm7225" ] || [ "${QCOMSOC}" = "qcom/sdm670" ]; then
        FW_LIST="${FW_LIST} \
                 ${QCOMSOC}/${MODEL}/a615_zap.mbn"
    fi

    FW_LIST="${FW_LIST} ${FW_RADIO}"

    for fwfile in ${FW_LIST}; do
        if [ -f "/lib/firmware/updates/${version?}/${fwfile}" ] ||
           [ -f "/lib/firmware/updates/${fwfile}" ]             ||
           [ -f "/lib/firmware/${version}/${fwfile}" ]          ||
           [ -f "/lib/firmware/${fwfile}" ]; then
            add_firmware "${fwfile}"
        else
            echo "I: Ignoring missing firmware ${fwfile}"
        fi
    done
fi