#!/bin/sh
set -e

SOURCE_DIR="/usr/share/alsa/ucm2/conf.d/cix-ipbloq-hda"
TARGET_DIR="/etc/alsa/ucm2/conf.d/cix-ipbloq-hda"
TARGET_PROFILE="HiFi_evb.conf"

read_text_file() {
    if [ ! -r "$1" ]; then
        return 0
    fi

    tr -d '\000' < "$1" 2>/dev/null || true
}

select_profile() {
    board_name=""
    model_name=""

    board_name=$(read_text_file /sys/devices/virtual/dmi/id/board_name)
    model_name=$(read_text_file /proc/device-tree/model)

    case "${board_name}
${model_name}" in
        *Radxa*)
            TARGET_PROFILE="HiFi_radxa.conf"
            ;;
        *Phecda*|*EVB*)
            TARGET_PROFILE="HiFi_evb.conf"
            ;;
    esac
}

main() {
    if [ ! -f "${SOURCE_DIR}/cix-ipbloq-hda.conf" ]; then
        echo "cix-alsa-conf: missing ${SOURCE_DIR}/cix-ipbloq-hda.conf" >&2
        exit 1
    fi

    if [ ! -f "${SOURCE_DIR}/HiFi_evb.conf" ] || [ ! -f "${SOURCE_DIR}/HiFi_radxa.conf" ]; then
        echo "cix-alsa-conf: missing board-specific HiFi templates" >&2
        exit 1
    fi

    select_profile

    install -d -m 0755 "$TARGET_DIR"
    install -m 0644 "${SOURCE_DIR}/cix-ipbloq-hda.conf" "${TARGET_DIR}/cix-ipbloq-hda.conf"
    ln -sfn "${SOURCE_DIR}/${TARGET_PROFILE}" "${TARGET_DIR}/HiFi.conf"
}

main "$@"
