openwrtv3/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
Martin Blumenstingl d72e838429 ramips: do not "local" variables outside of a function
Older busybox versions allowed using the local keyword outside of
functions, whereas 1.25.0 (which was introduced in 06fa1c46fc) do not
allow this anymore (leading to the following error when executing the
script: "file: local: line nn: not in a function").

Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
2016-09-24 01:17:18 +02:00

67 lines
1.3 KiB
Bash

#!/bin/sh
rt2x00_eeprom_die() {
echo "rt2x00 eeprom: " "$*"
exit 1
}
rt2x00_eeprom_extract() {
local part=$1
local offset=$2
local count=$3
local mtd
. /lib/functions.sh
mtd=$(find_mtd_part $part)
[ -n "$mtd" ] || \
rt2x00_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 || \
rt2x00_eeprom_die "failed to extract from $mtd"
}
rt2x00_eeprom_set_macaddr() {
local macaddr=$1
[ -n "$macaddr" ] || \
rt2x00_eeprom_die "invalid wlan mac address"
macaddr_2bin $macaddr | dd of=/lib/firmware/$FIRMWARE \
conv=notrunc bs=1 seek=4 count=6 2>/dev/null || \
rt2x00_eeprom_die "failed to write mac address to eeprom file"
}
FW="/lib/firmware/$FIRMWARE"
[ -e "$FW" ] && exit 0
. /lib/ramips.sh
. /lib/functions/system.sh
board=$(ramips_board_name)
case "$FIRMWARE" in
"soc_wmac.eeprom")
case $board in
*)
rt2x00_eeprom_die "Please define mtd-eeprom in $board DTS file!"
;;
esac
;;
"rt2x00pci_1_0.eeprom")
case $board in
cy-swr1100)
rt2x00_eeprom_extract "factory" 8192 512
;;
br-6475nd | rt-n56u | whr-600d | whr-1166d)
rt2x00_eeprom_extract "factory" 32768 512
;;
tiny-ac)
wifi_mac=$(mtd_get_mac_ascii u-boot-env INIC_MAC_ADDR)
rt2x00_eeprom_extract "factory" 0 512
rt2x00_eeprom_set_macaddr $wifi_mac
;;
esac
;;
esac