static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd,
                  struct nand_chip *chip, void *buf, u64 addr)
 {
-       int i, sas;
-       void *oob = chip->oob_poi;
+       struct mtd_oob_region ecc;
+       int i;
        int bitflips = 0;
        int page = addr >> chip->page_shift;
        int ret;
+       void *ecc_bytes;
        void *ecc_chunk;
 
        if (!buf)
                buf = nand_get_data_buf(chip);
 
-       sas = mtd->oobsize / chip->ecc.steps;
-
        /* read without ecc for verification */
        ret = chip->ecc.read_page_raw(chip, buf, true, page);
        if (ret)
                return ret;
 
-       for (i = 0; i < chip->ecc.steps; i++, oob += sas) {
+       for (i = 0; i < chip->ecc.steps; i++) {
                ecc_chunk = buf + chip->ecc.size * i;
-               ret = nand_check_erased_ecc_chunk(ecc_chunk,
-                                                 chip->ecc.size,
-                                                 oob, sas, NULL, 0,
+
+               mtd_ooblayout_ecc(mtd, i, &ecc);
+               ecc_bytes = chip->oob_poi + ecc.offset;
+
+               ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size,
+                                                 ecc_bytes, ecc.length,
+                                                 NULL, 0,
                                                  chip->ecc.strength);
                if (ret < 0)
                        return ret;