diff --git a/drivers/mtd/core.c b/drivers/mtd/core.c index fc2ac00..6db1c6d 100644 --- a/drivers/mtd/core.c +++ b/drivers/mtd/core.c @@ -236,6 +236,7 @@ user->erasesize = mtd->erasesize; user->writesize = mtd->writesize; user->oobsize = mtd->oobsize; + user->subpagesize = mtd->writesize >> mtd->subpage_sft; user->mtd = mtd; /* The below fields are obsolete */ user->ecctype = -1; diff --git a/fs/devfs-core.c b/fs/devfs-core.c index a92d434..44f0169 100644 --- a/fs/devfs-core.c +++ b/fs/devfs-core.c @@ -171,6 +171,7 @@ user->erasesize = cdev->mtd->erasesize; user->writesize = cdev->mtd->writesize; user->oobsize = cdev->mtd->oobsize; + user->subpagesize = cdev->mtd->writesize >> cdev->mtd->subpage_sft; user->mtd = cdev->mtd; /* The below fields are obsolete */ user->ecctype = -1; diff --git a/include/linux/mtd/mtd-abi.h b/include/linux/mtd/mtd-abi.h index fa8e36f..11d51e2 100644 --- a/include/linux/mtd/mtd-abi.h +++ b/include/linux/mtd/mtd-abi.h @@ -82,6 +82,7 @@ uint32_t ecctype; uint32_t eccsize; struct mtd_info *mtd; + uint32_t subpagesize; }; struct region_info_user { diff --git a/lib/libmtd.c b/lib/libmtd.c index eecc760..1606b87 100644 --- a/lib/libmtd.c +++ b/lib/libmtd.c @@ -308,6 +308,7 @@ mtd->eb_size = ui.erasesize; mtd->min_io_size = ui.writesize; mtd->oob_size = ui.oobsize; + mtd->subpage_size = ui.subpagesize; if (mtd->min_io_size <= 0) { errmsg("%s has insane min. I/O unit size %d", @@ -356,7 +357,6 @@ if (ui.flags & MTD_WRITEABLE) mtd->writable = 1; - mtd->subpage_size = mtd->min_io_size; close(fd);