Initial commit
This commit is contained in:
@@ -0,0 +1,178 @@
|
||||
#!/bin/sh
|
||||
|
||||
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
ath9k_eeprom_die() {
|
||||
echo "ath9k eeprom: " "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ath9k_eeprom_extract() {
|
||||
local part=$1
|
||||
local offset=$2
|
||||
local count=$3
|
||||
local mtd
|
||||
|
||||
mtd=$(find_mtd_chardev $part)
|
||||
[ -n "$mtd" ] || \
|
||||
ath9k_eeprom_die "no mtd device found for partition $part"
|
||||
|
||||
dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
|
||||
ath9k_eeprom_die "failed to extract from $mtd"
|
||||
}
|
||||
|
||||
ath9k_ubi_eeprom_extract() {
|
||||
local part=$1
|
||||
local offset=$2
|
||||
local count=$3
|
||||
local ubidev=$(nand_find_ubi $CI_UBIPART)
|
||||
local ubi
|
||||
|
||||
ubi=$(nand_find_volume $ubidev $part)
|
||||
[ -n "$ubi" ] || \
|
||||
ath9k_eeprom_die "no UBI volume found for $part"
|
||||
|
||||
dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
|
||||
ath9k_eeprom_die "failed to extract from $ubi"
|
||||
}
|
||||
|
||||
ath9k_eeprom_extract_reverse() {
|
||||
local part=$1
|
||||
local offset=$2
|
||||
local count=$3
|
||||
local mtd
|
||||
local reversed
|
||||
local caldata
|
||||
|
||||
mtd=$(find_mtd_chardev "$part")
|
||||
reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
|
||||
|
||||
for byte in $reversed; do
|
||||
caldata="\x${byte}${caldata}"
|
||||
done
|
||||
|
||||
printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
|
||||
}
|
||||
|
||||
ath9k_patch_firmware_mac() {
|
||||
local mac=$1
|
||||
|
||||
[ -z "$mac" ] && return
|
||||
|
||||
macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=2 count=6
|
||||
}
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$FIRMWARE" in
|
||||
"soc_wmac.eeprom")
|
||||
case $board in
|
||||
c-55|\
|
||||
c-60)
|
||||
ath9k_eeprom_extract "art" 4096 2048
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +1)
|
||||
;;
|
||||
fritz4020|\
|
||||
fritz450e)
|
||||
ath9k_eeprom_extract_reverse "urlader" 5441 1088
|
||||
;;
|
||||
mr18)
|
||||
. /lib/upgrade/nand.sh
|
||||
|
||||
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
||||
ath9k_ubi_eeprom_extract "caldata" 4096 2048
|
||||
else
|
||||
ath9k_eeprom_extract "odm-caldata" 4096 2048
|
||||
fi
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +1)
|
||||
;;
|
||||
r6100 | \
|
||||
wndr3700v4 | \
|
||||
wndr4300)
|
||||
ath9k_eeprom_extract "caldata" 4096 2048
|
||||
ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0)
|
||||
;;
|
||||
rambutan)
|
||||
ath9k_eeprom_extract "art" 4096 2048
|
||||
;;
|
||||
wlr8100)
|
||||
ath9k_eeprom_extract "art" 4096 2048
|
||||
ath9k_patch_firmware_mac $(mtd_get_mac_ascii u-boot-env "ethaddr")
|
||||
;;
|
||||
z1)
|
||||
. /lib/upgrade/nand.sh
|
||||
|
||||
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
||||
ath9k_ubi_eeprom_extract "caldata" 4096 2048
|
||||
else
|
||||
ath9k_eeprom_extract "origcaldata" 4096 2048
|
||||
fi
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
|
||||
;;
|
||||
*)
|
||||
ath9k_eeprom_die "board $board is not supported yet"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"pci_wmac0.eeprom")
|
||||
case $board in
|
||||
c-55)
|
||||
ath9k_eeprom_extract "art" 20480 2048
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +2)
|
||||
;;
|
||||
fritz300e)
|
||||
ath9k_eeprom_extract_reverse "urloader" 5441 1088
|
||||
;;
|
||||
mr18)
|
||||
. /lib/upgrade/nand.sh
|
||||
|
||||
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
||||
ath9k_ubi_eeprom_extract "caldata" 20480 2048
|
||||
else
|
||||
ath9k_eeprom_extract "odm-caldata" 20480 2048
|
||||
fi
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
|
||||
;;
|
||||
wndr3700v4 | \
|
||||
wndr4300)
|
||||
ath9k_eeprom_extract "caldata" 20480 2048
|
||||
ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 12)
|
||||
;;
|
||||
z1)
|
||||
. /lib/upgrade/nand.sh
|
||||
|
||||
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
||||
ath9k_ubi_eeprom_extract "caldata" 86016 4096
|
||||
else
|
||||
ath9k_eeprom_extract "origcaldata" 86016 4096
|
||||
fi
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
|
||||
;;
|
||||
*)
|
||||
ath9k_eeprom_die "board $board is not supported yet"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
|
||||
"pci_wmac1.eeprom")
|
||||
case $board in
|
||||
mr18)
|
||||
. /lib/upgrade/nand.sh
|
||||
|
||||
if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
|
||||
ath9k_ubi_eeprom_extract "caldata" 36864 2048
|
||||
else
|
||||
ath9k_eeprom_extract "odm-caldata" 36864 2048
|
||||
fi
|
||||
ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
|
||||
;;
|
||||
*)
|
||||
ath9k_eeprom_die "board $board is not supported yet"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,191 @@
|
||||
#!/bin/sh
|
||||
|
||||
ath10kcal_die() {
|
||||
echo "ath10cal: " "$*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
ath10kcal_from_file() {
|
||||
local source=$1
|
||||
local offset=$2
|
||||
local count=$3
|
||||
|
||||
dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
|
||||
ath10kcal_die "failed to extract calibration data from $source"
|
||||
}
|
||||
|
||||
ath10kcal_extract() {
|
||||
local part=$1
|
||||
local offset=$2
|
||||
local count=$3
|
||||
local mtd cal_size
|
||||
|
||||
mtd=$(find_mtd_chardev $part)
|
||||
[ -n "$mtd" ] || \
|
||||
ath10kcal_die "no mtd device found for partition $part"
|
||||
|
||||
# Check that the calibration data size in header equals the desired size
|
||||
cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
|
||||
|
||||
[ "$count" = "$cal_size" ] || \
|
||||
ath10kcal_die "no calibration data found in $part"
|
||||
|
||||
dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
|
||||
ath10kcal_die "failed to extract calibration data from $mtd"
|
||||
}
|
||||
|
||||
ath10kcal_patch_mac() {
|
||||
local mac=$1
|
||||
|
||||
[ -z "$mac" ] && return
|
||||
|
||||
macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
|
||||
}
|
||||
|
||||
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$FIRMWARE" in
|
||||
"ath10k/cal-pci-0000:00:00.0.bin")
|
||||
case $board in
|
||||
a40|\
|
||||
a60|\
|
||||
mr1750|\
|
||||
mr1750v2|\
|
||||
om5p-acv2)
|
||||
ath10kcal_extract "ART" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
|
||||
;;
|
||||
archer-c25-v1|\
|
||||
tl-wdr6500-v2)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
|
||||
;;
|
||||
archer-c7-v4|\
|
||||
archer-c7-v5)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
|
||||
;;
|
||||
cf-e355ac-v1|\
|
||||
cf-e380ac-v1|\
|
||||
cf-e380ac-v2|\
|
||||
dlan-pro-1200-ac|\
|
||||
e1700ac-v2|\
|
||||
e600gac-v2|\
|
||||
oolite-v5.2|\
|
||||
oolite-v5.2-dev|\
|
||||
sr3200|\
|
||||
xd3200)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
;;
|
||||
dap-2695-a1)
|
||||
ath10kcal_extract "radiocfg" 20480 2116
|
||||
ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
|
||||
;;
|
||||
dir-869-a1|\
|
||||
qihoo-c301)
|
||||
ath10kcal_extract "radiocfg" 20480 2116
|
||||
ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
|
||||
;;
|
||||
dw33d)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(mtd_get_mac_binary art 18)
|
||||
;;
|
||||
epg5000|\
|
||||
esr1750)
|
||||
ath10kcal_extract "caldata" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
|
||||
;;
|
||||
gl-ar750|\
|
||||
tl-wpa8630)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
|
||||
;;
|
||||
koala)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary art 12) +0)
|
||||
;;
|
||||
mc-mac1200r)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
|
||||
;;
|
||||
r6100)
|
||||
ath10kcal_extract "caldata" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2)
|
||||
;;
|
||||
rb-952ui-5ac2nd|\
|
||||
rb-wapg-5hact2hnd)
|
||||
ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
|
||||
;;
|
||||
re355|\
|
||||
re450|\
|
||||
tl-wr902ac-v1)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
|
||||
;;
|
||||
unifiac-lite|\
|
||||
unifiac-pro)
|
||||
ath10kcal_extract "EEPROM" 20480 2116
|
||||
;;
|
||||
wi2a-ac200i)
|
||||
ath10kcal_extract "ART" 20480 2116
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"ath10k/cal-pci-0000:01:00.0.bin")
|
||||
case $board in
|
||||
archer-c5|\
|
||||
archer-c7)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
|
||||
;;
|
||||
nbg6616|\
|
||||
nbg6716)
|
||||
ath10kcal_extract "RFdata" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
|
||||
;;
|
||||
om5p-ac)
|
||||
ath10kcal_extract "ART" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
|
||||
;;
|
||||
rb-911g-5hpacd|\
|
||||
rb-921gs-5hpacd-r2|\
|
||||
rb-962uigs-5hact2hnt)
|
||||
ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
|
||||
;;
|
||||
wlr8100)
|
||||
ath10kcal_extract "art" 20480 2116
|
||||
ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"ath10k/pre-cal-pci-0000:00:00.0.bin")
|
||||
case $board in
|
||||
archer-c58-v1|\
|
||||
archer-c59-v1|\
|
||||
archer-c60-v1|\
|
||||
cf-e355ac-v2|\
|
||||
cf-e375ac)
|
||||
ath10kcal_extract "art" 20480 12064
|
||||
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
||||
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
||||
;;
|
||||
archer-c60-v2)
|
||||
ath10kcal_extract "art" 20480 12064
|
||||
ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
|
||||
/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
||||
ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
|
||||
;;
|
||||
cf-e385ac)
|
||||
ath10kcal_extract "art" 20480 12064
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/bin/ash
|
||||
|
||||
[ "$ACTION" == "add" ] || exit 0
|
||||
|
||||
PHYNBR=${DEVPATH##*/phy}
|
||||
|
||||
[ -n $PHYNBR ] || exit 0
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/system.sh
|
||||
|
||||
board=$(board_name)
|
||||
|
||||
case "$board" in
|
||||
archer-c58-v1|\
|
||||
archer-c59-v1|\
|
||||
archer-c60-v1)
|
||||
echo $(macaddr_add $(mtd_get_mac_binary mac 8) $(($PHYNBR - 1)) ) > /sys${DEVPATH}/macaddress
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/bin/sh
|
||||
|
||||
# For AR9220 and AR9223, GPIO JTAG must explicit be disabled
|
||||
# before LEDs start working. Do this when wifi device is
|
||||
# detected.
|
||||
|
||||
#
|
||||
# $DEVPATH is not valid for some boards (including WZR-HP-AG300H).
|
||||
# Manipulate the $DEVPATH to reach the corresponding phyN.
|
||||
#
|
||||
|
||||
devdir=$(dirname $DEVPATH)
|
||||
devdir=$(dirname $devdir)
|
||||
phydir=/sys$devdir/ieee80211
|
||||
phyname=$(cat $phydir/phy*/name)
|
||||
|
||||
[ -z $phyname -o $ACTION != "add" ] && exit 0
|
||||
|
||||
#
|
||||
# ar922x_disable_gpio_jtag():
|
||||
#
|
||||
# Emulate
|
||||
# REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL, AR_GPIO_JTAG_DISABLE);
|
||||
# for AR9220 and AR9223.
|
||||
#
|
||||
|
||||
ar922x_disable_gpio_jtag() {
|
||||
local regidx=0x4054
|
||||
|
||||
[ -f /sys/kernel/debug/ieee80211/$1/ath9k/regidx ] || return
|
||||
|
||||
echo $regidx > /sys/kernel/debug/ieee80211/$1/ath9k/regidx
|
||||
regval=$(cat /sys/kernel/debug/ieee80211/$1/ath9k/regval)
|
||||
regval=$((regval | 0x20000))
|
||||
echo regval $regval
|
||||
echo $regval > /sys/kernel/debug/ieee80211/$1/ath9k/regval
|
||||
}
|
||||
|
||||
[ $phyname -a $ACTION = "add" ] && {
|
||||
. /lib/functions.sh
|
||||
|
||||
case $(board_name) in
|
||||
wzr-hp-ag300h)
|
||||
ar922x_disable_gpio_jtag $phyname
|
||||
;;
|
||||
esac;
|
||||
}
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user