#!/bin/sh

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

. /lib/functions/caldata.sh

board=$(board_name)

base64_extract() {
	local target_dir="/sys$DEVPATH"
	local source="$1"

	[ -e "$source" ] || caldata_die "cannot find base64 calibration data: $source"
	[ -d "$target_dir" ] || \
		caldata_die "no sysfs dir to write: $target"

	echo 1 > "$target_dir/loading"
	base64decode.uc "$source" > "$target_dir/data"
	if [ $? != 0 ]; then
		echo 1 > "$target_dir/loading"
		caldata_die \
			"failed to write calibration data to $target_dir/data"
	else
		echo 0 > "$target_dir/loading"
	fi
}

case "$FIRMWARE" in
"ath10k/cal-pci-0000:01:00.0.bin")
	case "$board" in
	asus,onhub|\
	tplink,onhub)
		base64_extract /sys/firmware/vpd/ro/wifi_base64_calibration0
		;;
	esac
	;;
"ath10k/cal-pci-0001:01:00.0.bin")
	case "$board" in
	asus,onhub|\
	tplink,onhub)
		base64_extract /sys/firmware/vpd/ro/wifi_base64_calibration1
		;;
	esac
	;;
"ath10k/cal-pci-0002:01:00.0.bin")
	case "$board" in
	asus,onhub|\
	tplink,onhub)
		base64_extract /sys/firmware/vpd/ro/wifi_base64_calibration2
		;;
	esac
	;;
*)
	exit 1
	;;
esac
