+ run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
}
- void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
-@@ -797,6 +798,12 @@ static void mtd_partition_split(struct m
+ static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
+@@ -792,6 +793,12 @@ static void mtd_partition_split(struct m
if (rootfs_found)
return;
+ rootfs_found = 1;
+ }
+
- if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) &&
- IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE))
- split_firmware(master, part);
+ if (IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE) &&
+ !strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) &&
+ !of_find_property(mtd_get_of_node(&part->mtd), "compatible", NULL))
--- a/include/linux/mtd/partitions.h
+++ b/include/linux/mtd/partitions.h
@@ -75,6 +75,8 @@ struct mtd_part_parser_data {