|
@@ -1328,18 +1328,19 @@ static int gpmi_ecc_read_oob(struct mtd_info *mtd, struct nand_chip *chip,
|
|
|
static int
|
|
|
gpmi_ecc_write_oob(struct mtd_info *mtd, struct nand_chip *chip, int page)
|
|
|
{
|
|
|
- struct nand_oobfree *of = mtd->ecclayout->oobfree;
|
|
|
+ struct mtd_oob_region of = { };
|
|
|
int status = 0;
|
|
|
|
|
|
/* Do we have available oob area? */
|
|
|
- if (!of->length)
|
|
|
+ mtd_ooblayout_free(mtd, 0, &of);
|
|
|
+ if (!of.length)
|
|
|
return -EPERM;
|
|
|
|
|
|
if (!nand_is_slc(chip))
|
|
|
return -EPERM;
|
|
|
|
|
|
- chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize + of->offset, page);
|
|
|
- chip->write_buf(mtd, chip->oob_poi + of->offset, of->length);
|
|
|
+ chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize + of.offset, page);
|
|
|
+ chip->write_buf(mtd, chip->oob_poi + of.offset, of.length);
|
|
|
chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1);
|
|
|
|
|
|
status = chip->waitfunc(mtd, chip);
|