* bit flips(s) are not reported in stats.
                 */
 
-               if (doc->oob_buf[15]) {
+               if (nand->oob_poi[15]) {
                        int bit, numsetbits = 0;
-                       unsigned long written_flag = doc->oob_buf[15];
+                       unsigned long written_flag = nand->oob_poi[15];
                        for_each_set_bit(bit, &written_flag, 8)
                                numsetbits++;
                        if (numsetbits > 4) { /* assume blank */
                /* if error within oob area preceeding ecc bytes... */
                if (errpos[i] > DOCG4_PAGE_SIZE * 8)
                        change_bit(errpos[i] - DOCG4_PAGE_SIZE * 8,
-                                  (unsigned long *)doc->oob_buf);
+                                  (unsigned long *)nand->oob_poi);
 
                else    /* error in page data */
                        change_bit(errpos[i], (unsigned long *)buf);
 
        docg4_read_buf(mtd, buf, DOCG4_PAGE_SIZE); /* read the page data */
 
-       /*
-        * Diskonchips read oob immediately after a page read.  Mtd
-        * infrastructure issues a separate command for reading oob after the
-        * page is read.  So we save the oob bytes in a local buffer and just
-        * copy it if the next command reads oob from the same page.
-        */
-
+       /* this device always reads oob after page data */
        /* first 14 oob bytes read from I/O reg */
-       docg4_read_buf(mtd, doc->oob_buf, 14);
+       docg4_read_buf(mtd, nand->oob_poi, 14);
 
        /* last 2 read from another reg */
-       buf16 = (uint16_t *)(doc->oob_buf + 14);
+       buf16 = (uint16_t *)(nand->oob_poi + 14);
        *buf16 = readw(docptr + DOCG4_MYSTERY_REG);
 
        write_nop(docptr);
 
        dev_dbg(doc->dev, "%s: page %x\n", __func__, page);
 
-       /*
-        * Oob bytes are read as part of a normal page read.  If the previous
-        * nand command was a read of the page whose oob is now being read, just
-        * copy the oob bytes that we saved in a local buffer and avoid a
-        * separate oob read.
-        */
-       if (doc->last_command.command == NAND_CMD_READ0 &&
-           doc->last_command.page == page) {
-               memcpy(nand->oob_poi, doc->oob_buf, 16);
-               return 0;
-       }
-
-       /*
-        * Separate read of oob data only.
-        */
        docg4_command(mtd, NAND_CMD_READ0, nand->ecc.size, page);
 
        writew(DOC_ECCCONF0_READ_MODE | DOCG4_OOB_SIZE, docptr + DOC_ECCCONF0);