kernel: don't auto-split "firmware" if it has "compatible" DT property
[openwrt/staging/dedeckeh.git] / target / linux / generic / pending-4.9 / 400-mtd-add-rootfs-split-support.patch
index b0cb2731417897c35f9f9974941a66a00a89e300..2072775d1eef0fbeb0a332b60891947530664424 100644 (file)
@@ -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,36 @@ int mtd_del_partition(struct mtd_info *m
  }
  EXPORT_SYMBOL_GPL(mtd_del_partition);
  
@@ -94,8 +94,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +      if (rootfs_found)
 +              return;
 +
-+      if (!strcmp(part->mtd.name, SPLIT_FIRMWARE_NAME) &&
-+          IS_ENABLED(CONFIG_MTD_SPLIT_FIRMWARE))
++      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))
 +              split_firmware(master, part);
 +
 +      arch_split_mtd_part(master, part->mtd.name, part->offset,
@@ -104,7 +105,7 @@ 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
-@@ -759,6 +793,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -759,6 +794,7 @@ int add_mtd_partitions(struct mtd_info *
                mutex_unlock(&mtd_partitions_mutex);
  
                add_mtd_device(&slave->mtd);