d8dd207ea6
Use the ralink,mtd-eeprom instead of invoking the userspace firmware loader. Set the label and compatible string according to the the PCI binding documentation. Use the wifi@0,0 label and the pci0,0 compatible string in case the PCI vendor and device id is unknown. It should work anyway since the compatible string isn't evaluated (yet). This commit might fixes the PCIe wireless for the Buffalo WHR-600D. This board was mentioned in the board 10-rt2x00-eeprom firmware hotplug script but never had the correct eeprom name set to trigger the firmware from flash extraction. Use the usual eeprom for the soc wmac of the Dovado Tiny AC. Signed-off-by: Mathias Kresin <dev@kresin.me>
56 lines
1.1 KiB
Bash
56 lines
1.1 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
|
|
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
|
|
;;
|
|
*)
|
|
rt2x00_eeprom_die "Please define mtd-eeprom in $board DTS file!"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|