mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-04 04:54:18 +00:00
86a1f52617
In lantiq, ath9k caldata extraction is implemented to work in two alternate "modes", the standard one and another one with swapped byte pairs. This rearranges the functions so "standard" use is based on the caldata.sh library, while only a single local function is required for the special case. Note that while the parameter for switching between normal and swab is removed, the size of the caldata is added to the function calls to stay consistent. Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
72 lines
1.9 KiB
Bash
72 lines
1.9 KiB
Bash
#!/bin/sh
|
|
|
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
|
|
|
. /lib/functions/caldata.sh
|
|
|
|
caldata_extract_swap() {
|
|
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"
|
|
|
|
offset=$(($offset / 2))
|
|
count=$(($count / 2))
|
|
|
|
dd if=$mtd of=/lib/firmware/$FIRMWARE bs=2 skip=$offset count=$count conv=swab 2>/dev/null || \
|
|
caldata_die "failed to extract calibration data from $mtd"
|
|
}
|
|
|
|
case "$FIRMWARE" in
|
|
"ath9k-eeprom-pci-0000:00:0e.0.bin" | \
|
|
"ath9k-eeprom-pci-0000:01:00.0.bin" | \
|
|
"ath9k-eeprom-pci-0000:02:00.0.bin")
|
|
board=$(board_name)
|
|
|
|
case "$board" in
|
|
arcadyan,arv7518pw)
|
|
caldata_extract_swap "boardconfig" 0x400 0x1000
|
|
;;
|
|
arcadyan,arv8539pw22)
|
|
caldata_extract_swap "art" 0x400 0x1000
|
|
;;
|
|
bt,homehub-v2b)
|
|
caldata_extract_swap "art" 0x0 0x1000
|
|
ath9k_patch_mac_crc "00:00:00:00:00:00" 0x20c
|
|
;;
|
|
bt,homehub-v3a)
|
|
caldata_extract_swap "art-copy" 0x0 0x1000
|
|
ath9k_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii uboot_env ethaddr) +2) 0x10c
|
|
;;
|
|
bt,homehub-v5a)
|
|
caldata_extract_ubi "caldata" 0x1000 0x1000
|
|
ath9k_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary_ubi caldata 0x110c) +2) 0x10c
|
|
;;
|
|
netgear,dgn3500|netgear,dgn3500b)
|
|
caldata_extract "calibration" 0xf000 0x1000
|
|
ath9k_patch_mac_crc $(macaddr_add $(mtd_get_mac_ascii uboot-env ethaddr) +2) 0x20c
|
|
;;
|
|
avm,fritz3370-rev2-hynix|\
|
|
avm,fritz3370-rev2-micron|\
|
|
avm,fritz7362sl)
|
|
caldata_extract_reverse "urlader" 0x1541 0x440
|
|
;;
|
|
avm,fritz7312|avm,fritz7320|avm,fritz7360sl)
|
|
caldata_extract "urlader" 0x985 0x1000
|
|
;;
|
|
avm,fritz7412)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x1e000 -e 0x207 -l 4096 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader")
|
|
;;
|
|
tplink,tdw8970|tplink,tdw8980)
|
|
caldata_extract "boardconfig" 0x21000 0x1000
|
|
;;
|
|
*)
|
|
caldata_die "board $board is not supported yet"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|