提交 1f92267c 编写于 作者: V Vitaly Wool 提交者: David Woodhouse

[MTD] [NAND] make oobavail public

During the MTD rework the oobavail parameter of mtd_info structure has become
private. This is not quite correct in terms of integrity and logic. If we have
means to write to OOB area, then we'd like to know upfront how many bytes out
of OOB are spare per page to be able to adapt to specific cases.
The patch inlined adds the public oobavail parameter.
Signed-off-by: NVitaly Wool <vwool@ru.mvista.com>
Signed-off-by: NDavid Woodhouse <dwmw2@infradead.org>
上级 eee8abe5
...@@ -727,6 +727,7 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[], /* subdevices to c ...@@ -727,6 +727,7 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[], /* subdevices to c
concat->mtd.erasesize = subdev[0]->erasesize; concat->mtd.erasesize = subdev[0]->erasesize;
concat->mtd.writesize = subdev[0]->writesize; concat->mtd.writesize = subdev[0]->writesize;
concat->mtd.oobsize = subdev[0]->oobsize; concat->mtd.oobsize = subdev[0]->oobsize;
concat->mtd.oobavail = subdev[0]->oobavail;
if (subdev[0]->writev) if (subdev[0]->writev)
concat->mtd.writev = concat_writev; concat->mtd.writev = concat_writev;
if (subdev[0]->read_oob) if (subdev[0]->read_oob)
......
...@@ -338,6 +338,7 @@ int add_mtd_partitions(struct mtd_info *master, ...@@ -338,6 +338,7 @@ int add_mtd_partitions(struct mtd_info *master,
slave->mtd.size = parts[i].size; slave->mtd.size = parts[i].size;
slave->mtd.writesize = master->writesize; slave->mtd.writesize = master->writesize;
slave->mtd.oobsize = master->oobsize; slave->mtd.oobsize = master->oobsize;
slave->mtd.oobavail = master->oobavail;
slave->mtd.subpage_sft = master->subpage_sft; slave->mtd.subpage_sft = master->subpage_sft;
slave->mtd.name = parts[i].name; slave->mtd.name = parts[i].name;
......
...@@ -2524,6 +2524,7 @@ int nand_scan_tail(struct mtd_info *mtd) ...@@ -2524,6 +2524,7 @@ int nand_scan_tail(struct mtd_info *mtd)
for (i = 0; chip->ecc.layout->oobfree[i].length; i++) for (i = 0; chip->ecc.layout->oobfree[i].length; i++)
chip->ecc.layout->oobavail += chip->ecc.layout->oobavail +=
chip->ecc.layout->oobfree[i].length; chip->ecc.layout->oobfree[i].length;
mtd->oobavail = chip->ecc.layout->oobavail;
/* /*
* Set the number of read / write steps for one page depending on ECC * Set the number of read / write steps for one page depending on ECC
......
...@@ -2367,6 +2367,7 @@ int onenand_scan(struct mtd_info *mtd, int maxchips) ...@@ -2367,6 +2367,7 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
for (i = 0; this->ecclayout->oobfree[i].length; i++) for (i = 0; this->ecclayout->oobfree[i].length; i++)
this->ecclayout->oobavail += this->ecclayout->oobavail +=
this->ecclayout->oobfree[i].length; this->ecclayout->oobfree[i].length;
mtd->oobavail = this->ecclayout->oobavail;
mtd->ecclayout = this->ecclayout; mtd->ecclayout = this->ecclayout;
......
...@@ -121,6 +121,7 @@ struct mtd_info { ...@@ -121,6 +121,7 @@ struct mtd_info {
u_int32_t writesize; u_int32_t writesize;
u_int32_t oobsize; // Amount of OOB data per block (e.g. 16) u_int32_t oobsize; // Amount of OOB data per block (e.g. 16)
u_int32_t oobavail; // Available OOB bytes per block
// Kernel-only stuff starts here. // Kernel-only stuff starts here.
char *name; char *name;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册