off = last + nand->writesize;
last = off;
-#ifndef CONFIG_NAND_AM33XX
+
datbuf = malloc(nand->writesize);
-#else
- datbuf = malloc(nand->writesize + nand->oobsize);
-#endif
oobbuf = malloc(nand->oobsize);
if (!datbuf || !oobbuf) {
puts("No memory for page buffer\n");
}
puts("OOB:\n");
i = nand->oobsize >> 3;
-#ifndef CONFIG_NAND_AM33XX
p = oobbuf;
-#endif
while (i--) {
printf("\t%02x %02x %02x %02x %02x %02x %02x %02x\n",
p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);
int ret = 0;
uint32_t readlen = ops->len;
uint32_t oobreadlen = ops->ooblen;
+ uint32_t max_oobsize = ops->mode == MTD_OOB_AUTO ?
+ mtd->oobavail : mtd->oobsize;
+
uint8_t *bufpoi, *oob, *buf;
stats = mtd->ecc_stats;
buf += bytes;
if (unlikely(oob)) {
- /* Raw mode does data:oob:data:oob */
- if (ops->mode != MTD_OOB_RAW) {
- int toread = min(oobreadlen,
- chip->ecc.layout->oobavail);
+
+ int toread = min(oobreadlen, max_oobsize);
+
if (toread) {
oob = nand_transfer_oob(chip,
oob, ops, toread);
oobreadlen -= toread;
}
- } else
- buf = nand_transfer_oob(chip,
- buf, ops, mtd->oobsize);
}
if (!(chip->options & NAND_NO_READRDY)) {