This implementation of fritz_cal_extract can also retrieve firmware data stored in reverse byte order, as found in the AVM 7430 device. This is done by intermediate storage in a buffer presumably large enough to hold the complete data set. Currently, this buffer size is 128kB + 1kB (some extra space for skipped data). In the usual case of "forward" data, this implementation should behave like the original implementation in all common cases. limit [-l] will determine the amount of data read and size of buffer allocated. However, if you are reading reversed data or didn't set a limit, the buffer may be too small to hold all data. In this case, you can choose a higher limit [-l] to enforce a sufficient buffer size. Signed-off-by: Dustin Gathmann <dzsoftware@posteo.org> Link: https://github.com/openwrt/openwrt/pull/15501 Signed-off-by: Robert Marko <robimarko@gmail.com>
39 lines
1.2 KiB
Bash
39 lines
1.2 KiB
Bash
#!/bin/sh
|
|
|
|
[ -e /lib/firmware/$FIRMWARE ] && exit 0
|
|
|
|
. /lib/functions/caldata.sh
|
|
|
|
case "$FIRMWARE" in
|
|
"ath9k-eeprom-pci-0000:00:0e.0.bin" | \
|
|
"ath9k-eeprom-pci-0000:01:00.0.bin" | \
|
|
"ath9k-eeprom-pci-0000:02:00.0.bin")
|
|
board=$(board_name)
|
|
|
|
case "$board" in
|
|
avm,fritz3370-rev2-hynix|\
|
|
avm,fritz3370-rev2-micron|\
|
|
avm,fritz7362sl)
|
|
caldata_extract_reverse "urlader" 0x1541 0x440
|
|
;;
|
|
avm,fritz3390)
|
|
caldata_extract_reverse "urlader" 0x2546 0x440
|
|
;;
|
|
avm,fritz7412)
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x1e000 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") || \
|
|
/usr/bin/fritz_cal_extract -i 1 -s 0x1e800 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader")
|
|
;;
|
|
avm,fritz7430)
|
|
/usr/bin/fritz_cal_extract -r -i 4 -s 0x1e000 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader") || \
|
|
/usr/bin/fritz_cal_extract -r -i 4 -s 0x1e800 -e 0x207 -l 5120 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader")
|
|
;;
|
|
bt,homehub-v5a)
|
|
caldata_extract_ubi "caldata" 0x1000 0x1000
|
|
ath9k_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary_ubi caldata 0x110c) 2) 0x10c
|
|
;;
|
|
*)
|
|
caldata_die "board $board is not supported yet"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|