Author: rmilecki
Date: 2016-02-01 13:41:53 +0100 (Mon, 01 Feb 2016)
New Revision: 48600

Modified:
   trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.h
   trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c
Log:
kernel: mtdsplit: support Seama entity with UBI

Some D-Link routers (e.g. DIR-885L) have NAND and use Seama format. It
means OpenWrt will want to have UBI in Sseama entity and should be able
to detect it.

Signed-off-by: Rafa?\197?\130 Mi?\197?\130ecki <[email protected]>

Modified: trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.h
===================================================================
--- trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.h    
2016-02-01 12:41:47 UTC (rev 48599)
+++ trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit.h    
2016-02-01 12:41:53 UTC (rev 48600)
@@ -15,6 +15,7 @@
 
 #define KERNEL_PART_NAME       "kernel"
 #define ROOTFS_PART_NAME       "rootfs"
+#define UBI_PART_NAME          "ubi"
 
 #define ROOTFS_SPLIT_NAME      "rootfs_data"
 

Modified: trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c
===================================================================
--- trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c      
2016-02-01 12:41:47 UTC (rev 48599)
+++ trunk/target/linux/generic/files/drivers/mtd/mtdsplit/mtdsplit_seama.c      
2016-02-01 12:41:53 UTC (rev 48600)
@@ -36,6 +36,7 @@
        size_t hdr_len, retlen, kernel_ent_size;
        size_t rootfs_offset;
        struct mtd_partition *parts;
+       enum mtdsplit_part_type type;
        int err;
 
        hdr_len = sizeof(hdr);
@@ -56,7 +57,7 @@
                return -EINVAL;
 
        /* Check for the rootfs right after Seama entity with a kernel. */
-       err = mtd_check_rootfs_magic(master, kernel_ent_size, NULL);
+       err = mtd_check_rootfs_magic(master, kernel_ent_size, &type);
        if (!err) {
                rootfs_offset = kernel_ent_size;
        } else {
@@ -67,7 +68,7 @@
                 * Start the search from an arbitrary offset.
                 */
                err = mtd_find_rootfs_from(master, SEAMA_MIN_ROOTFS_OFFS,
-                                          master->size, &rootfs_offset, NULL);
+                                          master->size, &rootfs_offset, &type);
                if (err)
                        return err;
        }
@@ -80,7 +81,10 @@
        parts[0].offset = 0;
        parts[0].size = rootfs_offset;
 
-       parts[1].name = ROOTFS_PART_NAME;
+       if (type == MTDSPLIT_PART_TYPE_UBI)
+               parts[1].name = UBI_PART_NAME;
+       else
+               parts[1].name = ROOTFS_PART_NAME;
        parts[1].offset = rootfs_offset;
        parts[1].size = master->size - rootfs_offset;
 
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to