mirror of
https://github.com/openwrt/openwrt.git
synced 2025-01-13 08:20:07 +00:00
b133e466b0
This changes size and offset set for WiFi caldata extraction and MAC address adjustment to hexadecimal notation. This will be much clearer for the reader when numbers are big, and will also match the style used for mtd-cal-data in DTS files. Since dd cannot deal with hexadecimal notation, one has to convert back to decimal by simple $(($hexnum)). Acked-by: Alexander Couzens <lynxis@fe80.eu> Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
67 lines
1.2 KiB
Bash
67 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
FW_FILE="/lib/firmware/$FIRMWARE"
|
|
|
|
ath9k_eeprom_die() {
|
|
echo "ath9k eeprom: " "$*" >&2
|
|
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 bs=$offset skip=1 count=1 2>/dev/null | dd of=$FW_FILE bs=$count count=1 2>/dev/null || \
|
|
ath9k_eeprom_die "failed to extract from $mtd"
|
|
}
|
|
|
|
tpl_set_wireless_mac()
|
|
{
|
|
local offset=$1
|
|
local mac
|
|
|
|
mac=$(mtd_get_mac_binary u-boot 0x4fc00)
|
|
mac=$(macaddr_add $mac $offset)
|
|
|
|
macaddr_2bin $mac | dd bs=1 count=6 seek=2 conv=notrunc of=$FW_FILE 2>/dev/null
|
|
}
|
|
|
|
[ -e $FW_FILE ] && exit 0
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions/system.sh
|
|
|
|
board=$(board_name)
|
|
|
|
case "$FIRMWARE" in
|
|
"pci_wmac0.eeprom")
|
|
case $board in
|
|
tplink,tl-wdr4900-v1)
|
|
ath9k_eeprom_extract "caldata" 0x1000 0x800
|
|
tpl_set_wireless_mac 0
|
|
;;
|
|
*)
|
|
ath9k_eeprom_die "board $board is not supported yet"
|
|
;;
|
|
esac
|
|
;;
|
|
|
|
"pci_wmac1.eeprom")
|
|
case $board in
|
|
tplink,tl-wdr4900-v1)
|
|
ath9k_eeprom_extract "caldata" 0x5000 0x800
|
|
tpl_set_wireless_mac -1
|
|
;;
|
|
*)
|
|
ath9k_eeprom_die "board $board is not supported yet"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|