mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
149 lines
3.5 KiB
Bash
Executable File
149 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/system.sh
|
|
|
|
ath11k_generate_macs() {
|
|
touch /lib/firmware/ath11k-macs
|
|
eth=$(cat /sys/class/net/eth0/address)
|
|
mac1=$(macaddr_add $eth 2)
|
|
mac2=$(macaddr_add $eth 3)
|
|
mac3=$(macaddr_add $eth 4)
|
|
echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs
|
|
echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs
|
|
echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs
|
|
}
|
|
|
|
ath11k_generate_macs_rap650c() {
|
|
mac=$(fw_printenv -n BaseMacAddress)
|
|
[ -z "$mac" ] && return;
|
|
|
|
touch /lib/firmware/ath11k-macs
|
|
eth=$(macaddr_canonicalize $mac)
|
|
mac1=$(macaddr_add $eth 3)
|
|
mac2=$(macaddr_add $eth 2)
|
|
mac3=$(macaddr_add $eth 4)
|
|
echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs
|
|
echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs
|
|
echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs
|
|
}
|
|
|
|
ath11k_generate_macs_wf196() {
|
|
touch /lib/firmware/ath11k-macs
|
|
mac=$(grep BaseMacAddress= /dev/mtd18 | cut -dx -f2)
|
|
eth=$(macaddr_canonicalize $mac)
|
|
mac1=$(macaddr_add $eth 2)
|
|
mac2=$(macaddr_add $eth 3)
|
|
mac3=$(macaddr_add $eth 4)
|
|
echo -ne \\x${mac1//:/\\x} >> /lib/firmware/ath11k-macs
|
|
echo -ne \\x${mac2//:/\\x} >> /lib/firmware/ath11k-macs
|
|
echo -ne \\x${mac3//:/\\x} >> /lib/firmware/ath11k-macs
|
|
}
|
|
|
|
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
|
|
"ath11k/IPQ8074/hw2.0/caldata.bin")
|
|
case "$board" in
|
|
cig,wf194c|\
|
|
cig,wf194c4|\
|
|
cig,wf196|\
|
|
edgecore,eap102 |\
|
|
edgecore,oap102 |\
|
|
edgecore,oap103 |\
|
|
edgecore,eap106 |\
|
|
emplus,wap380c|\
|
|
qcom,ipq807x-hk01|\
|
|
qcom,ipq807x-hk14|\
|
|
tplink,ex227|\
|
|
tplink,ex447|\
|
|
yuncore,ax840|\
|
|
sonicfi,rap650c|\
|
|
sercomm,wallaby)
|
|
caldata_extract "0:ART" 0x1000 0x20000
|
|
;;
|
|
esac
|
|
;;
|
|
ath11k/QCN9074/hw1.0/caldata_1.bin)
|
|
case "$board" in
|
|
cig,wf196|\
|
|
cybertan,eww622-a1|\
|
|
qcom,ipq5018-mp03.1|\
|
|
qcom,ipq807x-hk14)
|
|
caldata_extract "0:ART" 0x26800 0x20000
|
|
;;
|
|
esac
|
|
;;
|
|
ath11k/QCN9074/hw1.0/caldata_2.bin)
|
|
case "$board" in
|
|
qcom,ipq807x-hk14|\
|
|
qcom,ipq5018-mp03.3)
|
|
caldata_extract "0:ART" 0x4C000 0x20000
|
|
;;
|
|
esac
|
|
;;
|
|
ath11k-macs)
|
|
case "$board" in
|
|
edgecore,eap102|\
|
|
edgecore,oap102|\
|
|
edgecore,oap103|\
|
|
edgecore,eap106)
|
|
ath11k_generate_macs
|
|
;;
|
|
cig,wf196)
|
|
ath11k_generate_macs_wf196
|
|
;;
|
|
sonicfi,rap650c)
|
|
ath11k_generate_macs_rap650c
|
|
;;
|
|
esac
|
|
;;
|
|
ath11k/IPQ8074/hw2.0/board.bin)
|
|
case "$board" in
|
|
cig,wf196)
|
|
country=`cat /etc/ucentral/country`
|
|
if [ "$country" == "CA" ]; then
|
|
ln -s /lib/firmware/ath11k/IPQ8074/hw2.0/board.bin.CA /lib/firmware/ath11k/IPQ8074/hw2.0/board.bin
|
|
else
|
|
ln -s /lib/firmware/ath11k/IPQ8074/hw2.0/board.bin.US /lib/firmware/ath11k/IPQ8074/hw2.0/board.bin
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
ath11k/QCN9074/hw1.0/board.bin)
|
|
case "$board" in
|
|
cig,wf196)
|
|
country=`cat /etc/ucentral/country`
|
|
if [ "$country" == "CA" ]; then
|
|
ln -s /lib/firmware/ath11k/QCN9074/hw1.0/board.bin.CA /lib/firmware/ath11k/QCN9074/hw1.0/board.bin
|
|
else
|
|
ln -s /lib/firmware/ath11k/QCN9074/hw1.0/board.bin.US /lib/firmware/ath11k/QCN9074/hw1.0/board.bin
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|