#!/bin/sh

[ -e /lib/firmware/$FIRMWARE ] && exit 0

. /lib/functions.sh
. /lib/functions/system.sh

caldata_die() {
        echo "caldata: " "$*"
        exit 1
}

caldata_extract() {
        local part=$1
        local offset=$(($2))
        local count=$(($3))
        local mtd

        mtd=$(find_mtd_chardev $part)
        [ -n "$mtd" ] || caldata_die "no mtd device found for partition $part"

        dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
                caldata_die "failed to extract calibration data from $mtd"
}

board=$(board_name)

case "$FIRMWARE" in
"IPQ8074/caldata.bin")
	case "$board" in
	cig,wf194c|\
	edgecore,eap102 |\
	octogate,ax-3500|\
	qcom,ipq807x-hk01|\
	qcom,ipq807x-hk14|\
	sercomm,wallaby|\
	yuncore,ax860)
                caldata_extract "0:ART" 0x1000 0x20000  
		;;
	esac
	;;
"IPQ6018/caldata.bin")
	case "$board" in
	cig,wf188|\
	cig,wf188n|\
	edgecore,eap101|\
	octogate,ax-3000|\
	qcom,ipq6018-cp01|\
	yuncore,ax840)
                caldata_extract "0:ART" 0x1000 0x20000  
		;;
	esac
	;;
ath11k/qcn9000/hw1.0/caldata_1.bin)
	case "$board" in
	qcom,ipq807x-hk14)
                caldata_extract "0:ART" 0x26800 0x20000  
		;;
	esac
	;;
ath11k/qcn9000/hw1.0/caldata_2.bin)
	case "$board" in
	qcom,ipq807x-hk14)
                caldata_extract "0:ART" 0x4C000 0x20000  
		;;
	esac
	;;
*)
	exit 1
	;;
esac
