mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
178 lines
4.2 KiB
Bash
Executable File
178 lines
4.2 KiB
Bash
Executable File
#!/bin/sh
|
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/system.sh
|
|
. /lib/functions/caldata.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"
|
|
}
|
|
|
|
cig_ipq5322_cal() {
|
|
local ext_ant=0
|
|
|
|
[ -f /sys/firmware/devicetree/base/soc@0/wifi@c0000000/ext_antenna ] && ext_ant=1
|
|
|
|
if [ "$ext_ant" = "0" ]; then
|
|
caldata_extract_mmc "0:ART" 0x1000 0x20000
|
|
else
|
|
caldata_extract_mmc "0:ART" 0xbd800 0x20000
|
|
fi
|
|
}
|
|
|
|
cig_qcn92xx_cal() {
|
|
local bands=$(cat /proc/rf_switch)
|
|
local ext_ant=0
|
|
|
|
[ -f /sys/firmware/devicetree/base/soc@0/wifi@c0000000/ext_antenna ] && ext_ant=1
|
|
|
|
if [ "$bands" = "2" ]; then
|
|
if [ "$ext_ant" = "0" ]; then
|
|
caldata_extract_mmc "0:ART" 0x8b800 0x2d000
|
|
else
|
|
caldata_extract_mmc "0:ART" 0xe3000 0x2d000
|
|
fi
|
|
else
|
|
if [ "$ext_ant" = "0" ]; then
|
|
caldata_extract_mmc "0:ART" 0x58800 0x2d000
|
|
else
|
|
caldata_extract_mmc "0:ART" 0x115000 0x2d000
|
|
fi
|
|
fi
|
|
}
|
|
|
|
board=$(board_name)
|
|
case "$FIRMWARE" in
|
|
ath12k/IPQ5332/hw1.0/caldata.bin)
|
|
case "$board" in
|
|
cig,wf189w|\
|
|
cig,wf189h|\
|
|
cig,wf189|\
|
|
edgecore,eap105|\
|
|
emplus,wap7635|\
|
|
sercomm,ap72tip-v4|\
|
|
sercomm,ap72tip|\
|
|
zyxel,nwa130be|\
|
|
zyxel,nwa50be)
|
|
caldata_extract "0:ART" 0x1000 0x20000
|
|
;;
|
|
cig,wf672)
|
|
cig_ipq5322_cal
|
|
;;
|
|
sonicfi,rap7110c-341x)
|
|
caldata_extract_mmc "0:ART" 0x1000 0xF800
|
|
;;
|
|
sonicfi,rap750e-h|\
|
|
sonicfi,rap750e-s|\
|
|
sonicfi,rap750w-311a)
|
|
caldata_extract "0:ART" 0x1000 0xf800
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/QCN92XX/hw1.0/cal-pci-0001:01:00.0.bin)
|
|
case "$board" in
|
|
cig,wf189|\
|
|
edgecore,eap105|\
|
|
emplus,wap7635|\
|
|
sercomm,ap72tip-v4|\
|
|
sercomm,ap72tip|\
|
|
zyxel,nwa130be)
|
|
caldata_extract "0:ART" 0x58800 0x2d000
|
|
;;
|
|
cig,wf672)
|
|
cig_qcn92xx_cal
|
|
;;
|
|
sonicfi,rap7110c-341x)
|
|
caldata_extract_mmc "0:ART" 0x58800 0x2d000
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/QCN6432/hw1.0/caldata_1.bin)
|
|
case "$board" in
|
|
sonicfi,rap750e-h|\
|
|
sonicfi,rap750e-s|\
|
|
sonicfi,rap750w-311a)
|
|
caldata_extract "0:ART" 0x12800 0x18800
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi1@c0000000.bin)
|
|
case "$board" in
|
|
cig,wf189h|\
|
|
cig,wf189w)
|
|
caldata_extract "0:ART" 0x26800 0x20000
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/QCN6432/hw1.0/cal-ahb-soc@0:wifi2@c0000000.bin)
|
|
case "$board" in
|
|
cig,wf189h|\
|
|
cig,wf189w)
|
|
caldata_extract "0:ART" 0x58800 0x20000
|
|
;;
|
|
zyxel,nwa50be)
|
|
caldata_extract "0:ART" 0x58800 0x2d000
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/IPQ5332/hw1.0/board-2.bin)
|
|
case "$board" in
|
|
cig,wf189|\
|
|
cig,wf189h|\
|
|
cig,wf189w|\
|
|
cig,wf672)
|
|
country=`cat /etc/ucentral/country`
|
|
if [ "$country" == "CA" ]; then
|
|
ln -s /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.CA /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
|
else
|
|
ln -s /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin.US /lib/firmware/ath12k/IPQ5332/hw1.0/board-2.bin
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/QCN6432/hw1.0/board-2.bin)
|
|
case "$board" in
|
|
cig,wf189h|\
|
|
cig,wf189w)
|
|
country=`cat /etc/ucentral/country`
|
|
if [ "$country" == "CA" ]; then
|
|
ln -s /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin.CA /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
|
else
|
|
ln -s /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin.US /lib/firmware/ath12k/QCN6432/hw1.0/board-2.bin
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
ath12k/QCN92XX/hw1.0/board-2.bin)
|
|
case "$board" in
|
|
cig,wf189|\
|
|
cig,wf672)
|
|
country=`cat /etc/ucentral/country`
|
|
if [ "$country" == "CA" ]; then
|
|
ln -s /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin.CA /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
|
else
|
|
ln -s /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin.US /lib/firmware/ath12k/QCN92XX/hw1.0/board-2.bin
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
exit 1
|
|
;;
|
|
esac
|