ath9k_eeprom_die "failed to extract from $mtd"
}
+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
+}
+
board=$(board_name)
case "$FIRMWARE" in
"ath9k-eeprom-pci-0000:00:00.0.bin")
case $board in
+ "avm,fritz300e")
+ ath9k_eeprom_extract_reverse "urloader" 5441 1088
+ ;;
+ "tplink,tl-wdr3600"|\
+ "tplink,tl-wdr4300")
+ ath9k_eeprom_extract "art" 20480 1088
+ ;;
+ "netgear,wnr612-v2"|\
+ "on,n150r"|\
+ "tplink,tl-wr740n-v2"|\
"ubnt,unifi")
ath9k_eeprom_extract "art" 4096 2048
;;