mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 15:56:49 +00:00
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ł Miłecki <zajec5@gmail.com> SVN-Revision: 48600
This commit is contained in:
parent
4156f292c1
commit
9220dd5d36
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#define KERNEL_PART_NAME "kernel"
|
#define KERNEL_PART_NAME "kernel"
|
||||||
#define ROOTFS_PART_NAME "rootfs"
|
#define ROOTFS_PART_NAME "rootfs"
|
||||||
|
#define UBI_PART_NAME "ubi"
|
||||||
|
|
||||||
#define ROOTFS_SPLIT_NAME "rootfs_data"
|
#define ROOTFS_SPLIT_NAME "rootfs_data"
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ static int mtdsplit_parse_seama(struct mtd_info *master,
|
|||||||
size_t hdr_len, retlen, kernel_ent_size;
|
size_t hdr_len, retlen, kernel_ent_size;
|
||||||
size_t rootfs_offset;
|
size_t rootfs_offset;
|
||||||
struct mtd_partition *parts;
|
struct mtd_partition *parts;
|
||||||
|
enum mtdsplit_part_type type;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
hdr_len = sizeof(hdr);
|
hdr_len = sizeof(hdr);
|
||||||
@ -56,7 +57,7 @@ static int mtdsplit_parse_seama(struct mtd_info *master,
|
|||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* Check for the rootfs right after Seama entity with a kernel. */
|
/* 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) {
|
if (!err) {
|
||||||
rootfs_offset = kernel_ent_size;
|
rootfs_offset = kernel_ent_size;
|
||||||
} else {
|
} else {
|
||||||
@ -67,7 +68,7 @@ static int mtdsplit_parse_seama(struct mtd_info *master,
|
|||||||
* Start the search from an arbitrary offset.
|
* Start the search from an arbitrary offset.
|
||||||
*/
|
*/
|
||||||
err = mtd_find_rootfs_from(master, SEAMA_MIN_ROOTFS_OFFS,
|
err = mtd_find_rootfs_from(master, SEAMA_MIN_ROOTFS_OFFS,
|
||||||
master->size, &rootfs_offset, NULL);
|
master->size, &rootfs_offset, &type);
|
||||||
if (err)
|
if (err)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
@ -80,7 +81,10 @@ static int mtdsplit_parse_seama(struct mtd_info *master,
|
|||||||
parts[0].offset = 0;
|
parts[0].offset = 0;
|
||||||
parts[0].size = rootfs_offset;
|
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].offset = rootfs_offset;
|
||||||
parts[1].size = master->size - rootfs_offset;
|
parts[1].size = master->size - rootfs_offset;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user