fritz-tools: add support for IPQ40xx platform

AVM devices based on Qualcomm IPQ40xx do not store sector health
information in the OOB area. Make this check optional to support this
platform.

Signed-off-by: David Bauer <mail@david-bauer.net>
v19.07.3_mercusys_ac12_duma
David Bauer 5 years ago committed by Christian Lamparter
parent d75db67870
commit 5389db72e3

@ -67,6 +67,7 @@ static char *mtddev;
static char *name_filter = NULL; static char *name_filter = NULL;
static bool show_all = false; static bool show_all = false;
static bool print_all_key_names = false; static bool print_all_key_names = false;
static bool read_oob_sector_health = false;
static bool swap_bytes = false; static bool swap_bytes = false;
static uint8_t readbuf[TFFS_SECTOR_SIZE]; static uint8_t readbuf[TFFS_SECTOR_SIZE];
static uint8_t oobbuf[TFFS_SECTOR_OOB_SIZE]; static uint8_t oobbuf[TFFS_SECTOR_OOB_SIZE];
@ -191,7 +192,7 @@ static int find_entry(uint32_t id, struct tffs_entry *entry)
uint32_t read_id = read_uint32(readbuf, 0x00); uint32_t read_id = read_uint32(readbuf, 0x00);
uint32_t read_len = read_uint32(readbuf, 0x04); uint32_t read_len = read_uint32(readbuf, 0x04);
uint32_t read_rev = read_uint32(readbuf, 0x0c); uint32_t read_rev = read_uint32(readbuf, 0x0c);
if (oob_id != read_id || oob_len != read_len || oob_rev != read_rev) { if (read_oob_sector_health && (oob_id != read_id || oob_len != read_len || oob_rev != read_rev)) {
fprintf(stderr, "Warning: sector has inconsistent metadata\n"); fprintf(stderr, "Warning: sector has inconsistent metadata\n");
continue; continue;
} }
@ -360,6 +361,9 @@ static int show_matching_key_value(struct tffs_key_name_table *key_names)
static int check_sector(off_t pos) static int check_sector(off_t pos)
{ {
if (!read_oob_sector_health) {
return 1;
}
if (read_sectoroob(pos)) { if (read_sectoroob(pos)) {
return 0; return 0;
} }
@ -450,6 +454,7 @@ static void usage(int status)
" -h show this screen\n" " -h show this screen\n"
" -l list all supported keys\n" " -l list all supported keys\n"
" -n <key name> display the value of the given key\n" " -n <key name> display the value of the given key\n"
" -o read OOB information about sector health\n"
); );
exit(status); exit(status);
@ -460,7 +465,7 @@ static void parse_options(int argc, char *argv[])
while (1) { while (1) {
int c; int c;
c = getopt(argc, argv, "abd:hln:"); c = getopt(argc, argv, "abd:hln:o");
if (c == -1) if (c == -1)
break; break;
@ -489,6 +494,9 @@ static void parse_options(int argc, char *argv[])
show_all = false; show_all = false;
print_all_key_names = false; print_all_key_names = false;
break; break;
case 'o':
read_oob_sector_health = true;
break;
default: default:
usage(EXIT_FAILURE); usage(EXIT_FAILURE);
break; break;

@ -125,7 +125,7 @@ define Device/avm_fritzbox-7530
$(call Device/FitImageLzma) $(call Device/FitImageLzma)
DEVICE_DTS := qcom-ipq4019-fritzbox-7530 DEVICE_DTS := qcom-ipq4019-fritzbox-7530
DEVICE_TITLE := AVM Fritz!Box 7530 DEVICE_TITLE := AVM Fritz!Box 7530
DEVICE_PACKAGES := fritz-caldata ipq-wifi-avm_fritzbox-7530 DEVICE_PACKAGES := fritz-caldata fritz-tffs-nand ipq-wifi-avm_fritzbox-7530
IMAGES := sysupgrade.bin IMAGES := sysupgrade.bin
endef endef
TARGET_DEVICES += avm_fritzbox-7530 TARGET_DEVICES += avm_fritzbox-7530

@ -169,8 +169,8 @@ avm,fritz7362sl)
avm,fritz7412) avm,fritz7412)
tffsdev=$(find_mtd_chardev "nand-tffs") tffsdev=$(find_mtd_chardev "nand-tffs")
annex="b" annex="b"
lan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n maca) lan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n maca -o)
wan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n macdsl) wan_mac=$(/usr/bin/fritz_tffs_nand -d $tffsdev -n macdsl -o)
ucidef_set_interface_lan 'eth0' ucidef_set_interface_lan 'eth0'
;; ;;

Loading…
Cancel
Save