@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
mtd_add_partition_attrs(new);
-@@ -736,6 +741,35 @@ int mtd_del_partition(struct mtd_info *m
+@@ -736,6 +741,27 @@ int mtd_del_partition(struct mtd_info *m
}
EXPORT_SYMBOL_GPL(mtd_del_partition);
@@ -82,11 +82,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+{
+}
+
-+void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
-+ int offset, int size)
-+{
-+}
-+
+static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
+{
+ static int rootfs_found = 0;
@@ -97,14 +92,11 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) &&
+ IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE))
+ split_firmware(master, part);
-+
-+ arch_split_mtd_part(master, part->mtd.name, part->offset,
-+ part->mtd.size);
+}
/*
* This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to
-@@ -767,6 +801,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -767,6 +793,7 @@ int add_mtd_partitions(struct mtd_info *
mutex_unlock(&mtd_partitions_mutex);
add_mtd_device(&slave->mtd);
@@ -112,13 +104,3 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
mtd_add_partition_attrs(slave);
/* Look for subpartitions */
parse_mtd_partitions(&slave->mtd, parts[i].types, NULL);
---- a/include/linux/mtd/partitions.h
-+++ b/include/linux/mtd/partitions.h
-@@ -110,5 +110,7 @@ int mtd_add_partition(struct mtd_info *m
- long long offset, long long length);
- int mtd_del_partition(struct mtd_info *master, int partno);
- uint64_t mtd_get_device_size(const struct mtd_info *mtd);
-+extern void __weak arch_split_mtd_part(struct mtd_info *master,
-+ const char *name, int offset, int size);
-
- #endif
@@ -57,7 +57,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
#define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME
#else
-@@ -1118,6 +1152,61 @@ void mtd_part_parser_cleanup(struct mtd_
+@@ -1110,6 +1144,61 @@ void mtd_part_parser_cleanup(struct mtd_
}
}
@@ -17,8 +17,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+ 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;
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
-@@ -1231,6 +1231,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -1223,6 +1223,24 @@ int mtd_is_partition(const struct mtd_in
}
EXPORT_SYMBOL_GPL(mtd_is_partition);
@@ -72,5 +72,5 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+struct mtd_info *mtdpart_get_master(const struct mtd_info *mtd);
+uint64_t mtdpart_get_offset(const struct mtd_info *mtd);
uint64_t mtd_get_device_size(const struct mtd_info *mtd);
- extern void __weak arch_split_mtd_part(struct mtd_info *master,
- const char *name, int offset, int size);
+
+ #endif
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
mtd_add_partition_attrs(new);
-@@ -728,6 +733,35 @@ int mtd_del_partition(struct mtd_info *m
+@@ -728,6 +733,27 @@ int mtd_del_partition(struct mtd_info *m
}
EXPORT_SYMBOL_GPL(mtd_del_partition);
@@ -82,11 +82,6 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+{
+}
+
-+void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
-+ int offset, int size)
-+{
-+}
-+
+static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
+{
+ static int rootfs_found = 0;
@@ -97,14 +92,11 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
+ if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) &&
+ IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE))
+ split_firmware(master, part);
-+
-+ arch_split_mtd_part(master, part->mtd.name, part->offset,
-+ part->mtd.size);
+}
/*
* This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to
-@@ -759,6 +793,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -759,6 +785,7 @@ int add_mtd_partitions(struct mtd_info *
mutex_unlock(&mtd_partitions_mutex);
add_mtd_device(&slave->mtd);
@@ -112,13 +104,3 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
mtd_add_partition_attrs(slave);
/* Look for subpartitions */
parse_mtd_partitions(&slave->mtd, parts[i].types, NULL);
---- a/include/linux/mtd/partitions.h
-+++ b/include/linux/mtd/partitions.h
-@@ -110,5 +110,7 @@ int mtd_add_partition(struct mtd_info *m
- long long offset, long long length);
- int mtd_del_partition(struct mtd_info *master, int partno);
- uint64_t mtd_get_device_size(const struct mtd_info *mtd);
-+extern void __weak arch_split_mtd_part(struct mtd_info *master,
-+ const char *name, int offset, int size);
-
- #endif
@@ -57,7 +57,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
#ifdef CONFIG_MTD_SPLIT_FIRMWARE_NAME
#define SPLIT_FIRMWARE_NAME CONFIG_MTD_SPLIT_FIRMWARE_NAME
#else
-@@ -1115,6 +1149,61 @@ void mtd_part_parser_cleanup(struct mtd_
+@@ -1107,6 +1141,61 @@ void mtd_part_parser_cleanup(struct mtd_
}
}
@@ -17,8 +17,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+ run_parsers_by_type(part, MTD_PARSER_TYPE_FIRMWARE);
}
- void __weak arch_split_mtd_part(struct mtd_info *master, const char *name,
-@@ -789,6 +790,12 @@ static void mtd_partition_split(struct m
+ static void mtd_partition_split(struct mtd_info *master, struct mtd_part *part)
+@@ -784,6 +785,12 @@ static void mtd_partition_split(struct m
if (rootfs_found)
return;
@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
-@@ -1228,6 +1228,24 @@ int mtd_is_partition(const struct mtd_in
+@@ -1220,6 +1220,24 @@ int mtd_is_partition(const struct mtd_in
}
EXPORT_SYMBOL_GPL(mtd_is_partition);
@@ -72,5 +72,5 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+struct mtd_info *mtdpart_get_master(const struct mtd_info *mtd);
+uint64_t mtdpart_get_offset(const struct mtd_info *mtd);
uint64_t mtd_get_device_size(const struct mtd_info *mtd);
- extern void __weak arch_split_mtd_part(struct mtd_info *master,
- const char *name, int offset, int size);
+
+ #endif