#!/bin/sh # based on gabors ralink wisoc implementation rt2x00_eeprom_die() { echo "rt2x00 eeprom: " "$*" exit 1 } rt2x00_eeprom_extract() { local part=$1 local offset=$2 local count=$3 local mtd . /etc/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 || \ rt2x00_eeprom_die "failed to extract from $mtd" } [ -e /lib/firmware/$FIRMWARE ] && exit 0 . /lib/lantiq.sh case "$FIRMWARE" in "RT3062.eeprom" ) local board=$(lantiq_board_name) case $board in ARV752DPW22) rt2x00_eeprom_extract "board_config" 1040 272 ;; ARV752DPW22) rt2x00_eeprom_extract "board_config" 1040 4 mv /lib/firmware/$FIRMWARE /lib/firmware/eeprom0 dd if=/dev/mtd5 of=/lib/firmware/eeprom1 skip=22 bs=1 count=6 dd if=/dev/mtd5 of=/lib/firmware/eeprom2 bs=1 skip=1050 count=262 cat /lib/firmware/eeprom0 /lib/firmware/eeprom1 /lib/firmware/eeprom2 > /lib/firmware/$FIRMWARE rm /lib/firmware/eeprom* ;; *) rt2x00_eeprom_die "board $board is not supported yet" ;; esac ;; esac