#!/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" 4096 2048 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" 20480 2048 tpl_set_wireless_mac -1 ;; *) ath9k_eeprom_die "board $board is not supported yet" ;; esac ;; esac