aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/generic')
-rw-r--r--target/linux/generic/files/drivers/mtd/mtdsplit_uimage.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/target/linux/generic/files/drivers/mtd/mtdsplit_uimage.c b/target/linux/generic/files/drivers/mtd/mtdsplit_uimage.c
index de55297870..7dad63c9bb 100644
--- a/target/linux/generic/files/drivers/mtd/mtdsplit_uimage.c
+++ b/target/linux/generic/files/drivers/mtd/mtdsplit_uimage.c
@@ -230,6 +230,7 @@ static struct mtd_part_parser uimage_generic_parser = {
};
#define FW_MAGIC_WNR2000V3 0x32303033
+#define FW_MAGIC_WNR2000V4 0x32303034
#define FW_MAGIC_WNR2200 0x32323030
#define FW_MAGIC_WNR612V2 0x32303631
#define FW_MAGIC_WNDR3700 0x33373030
@@ -237,6 +238,7 @@ static struct mtd_part_parser uimage_generic_parser = {
static bool uimage_verify_wndr3700(struct uimage_header *header)
{
+ uint8_t expected_type = IH_TYPE_FILESYSTEM;
switch be32_to_cpu(header->ih_magic) {
case FW_MAGIC_WNR612V2:
case FW_MAGIC_WNR2000V3:
@@ -244,12 +246,15 @@ static bool uimage_verify_wndr3700(struct uimage_header *header)
case FW_MAGIC_WNDR3700:
case FW_MAGIC_WNDR3700V2:
break;
+ case FW_MAGIC_WNR2000V4:
+ expected_type = IH_TYPE_KERNEL;
+ break;
default:
return false;
}
if (header->ih_os != IH_OS_LINUX ||
- header->ih_type != IH_TYPE_FILESYSTEM)
+ header->ih_type != expected_type)
return false;
return true;