kernel: backport mtd support for subpartitions in DT
This is a new & warm feature that allows nesting partiitons in DT and mixing their types (e.g. static vs. dynamic). It's very useful for boards that have most partitions static but some of them require extra parsing (e.g. a "firmware" partition). It's required to successfully backport support for new devices using that new syntax in their DT files. Since brcm63xx has a custom alternative patch the upstream one is being reverted for it. The plan is to make brcm63xx use the upstream implementation. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
This commit is contained in:
@@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/*
|
||||
* Given a pointer to the MTD object in the mtd_part structure, we can retrieve
|
||||
* the pointer to that structure.
|
||||
@@ -674,6 +678,7 @@ int mtd_add_partition(struct mtd_info *p
|
||||
@@ -658,6 +662,7 @@ int mtd_add_partition(struct mtd_info *p
|
||||
mutex_unlock(&mtd_partitions_mutex);
|
||||
|
||||
add_mtd_device(&new->mtd);
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
mtd_add_partition_attrs(new);
|
||||
|
||||
@@ -752,6 +757,35 @@ int mtd_del_partition(struct mtd_info *m
|
||||
@@ -736,6 +741,35 @@ int mtd_del_partition(struct mtd_info *m
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtd_del_partition);
|
||||
|
||||
@@ -104,14 +104,14 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/*
|
||||
* 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
|
||||
@@ -783,6 +817,7 @@ int add_mtd_partitions(struct mtd_info *
|
||||
@@ -767,6 +801,7 @@ int add_mtd_partitions(struct mtd_info *
|
||||
mutex_unlock(&mtd_partitions_mutex);
|
||||
|
||||
add_mtd_device(&slave->mtd);
|
||||
+ mtd_partition_split(master, slave);
|
||||
mtd_add_partition_attrs(slave);
|
||||
if (parts[i].types)
|
||||
mtd_parse_part(slave, parts[i].types);
|
||||
/* 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
|
||||
|
||||
Reference in New Issue
Block a user