if (extp->MinorVersion >= '4') {
                        struct cfi_intelext_programming_regioninfo *prinfo;
                        prinfo = (struct cfi_intelext_programming_regioninfo *)&extp->extra[offs];
-                       MTD_PROGREGION_SIZE(mtd) = cfi->interleave << prinfo->ProgRegShift;
+                       mtd->writesize = cfi->interleave << prinfo->ProgRegShift;
                        MTD_PROGREGION_CTRLMODE_VALID(mtd) = cfi->interleave * prinfo->ControlValid;
                        MTD_PROGREGION_CTRLMODE_INVALID(mtd) = cfi->interleave * prinfo->ControlInvalid;
                        mtd->flags |= MTD_PROGRAM_REGIONS;
                        printk(KERN_DEBUG "%s: program region size/ctrl_valid/ctrl_inval = %d/%d/%d\n",
-                              map->name, MTD_PROGREGION_SIZE(mtd),
+                              map->name, mtd->writesize,
                               MTD_PROGREGION_CTRLMODE_VALID(mtd),
                               MTD_PROGREGION_CTRLMODE_INVALID(mtd));
                }
 
        mtd->ecctype = MTD_ECC_RS_DiskOnChip;
        mtd->size = 0;
        mtd->erasesize = 0;
-       mtd->oobblock = 512;
+       mtd->writesize = 512;
        mtd->oobsize = 16;
        mtd->owner = THIS_MODULE;
        mtd->erase = doc_erase;
 
        /* FIXME: erase size is not always 8KiB */
        mtd->erasesize = 0x2000;
 
-       mtd->oobblock = 512;
+       mtd->writesize = 512;
        mtd->oobsize = 16;
        mtd->owner = THIS_MODULE;
        mtd->erase = doc_erase;
 
        mtd->size = 0;
 
        mtd->erasesize = 0;
-       mtd->oobblock = 512;
+       mtd->writesize = 512;
        mtd->oobsize = 16;
        mtd->owner = THIS_MODULE;
        mtd->erase = doc_erase;
 
                return -EINVAL;
 
        /* Check alignment */
-       if (mtd->oobblock > 1) {
+       if (mtd->writesize > 1) {
                loff_t __to = to;
-               if (do_div(__to, mtd->oobblock) || (total_len % mtd->oobblock))
+               if (do_div(__to, mtd->writesize) || (total_len % mtd->writesize))
                        return -EINVAL;
        }
 
                *retlen += retsize;
                total_len -= wsize;
                if (concat->mtd.type == MTD_NANDFLASH && eccbuf)
-                       eccbuf += mtd->oobavail * (wsize / mtd->oobblock);
+                       eccbuf += mtd->oobavail * (wsize / mtd->writesize);
 
                if (total_len == 0)
                        break;
        concat->mtd.flags = subdev[0]->flags;
        concat->mtd.size = subdev[0]->size;
        concat->mtd.erasesize = subdev[0]->erasesize;
-       concat->mtd.oobblock = subdev[0]->oobblock;
+       concat->mtd.writesize = subdev[0]->writesize;
        concat->mtd.oobsize = subdev[0]->oobsize;
        concat->mtd.ecctype = subdev[0]->ecctype;
        concat->mtd.eccsize = subdev[0]->eccsize;
                                    subdev[i]->flags & MTD_WRITEABLE;
                }
                concat->mtd.size += subdev[i]->size;
-               if (concat->mtd.oobblock   !=  subdev[i]->oobblock ||
+               if (concat->mtd.writesize   !=  subdev[i]->writesize ||
                    concat->mtd.oobsize    !=  subdev[i]->oobsize ||
                    concat->mtd.ecctype    !=  subdev[i]->ecctype ||
                    concat->mtd.eccsize    !=  subdev[i]->eccsize ||
 
                slave->mtd.type = master->type;
                slave->mtd.flags = master->flags & ~parts[i].mask_flags;
                slave->mtd.size = parts[i].size;
-               slave->mtd.oobblock = master->oobblock;
+               slave->mtd.writesize = master->writesize;
                slave->mtd.oobsize = master->oobsize;
                slave->mtd.oobavail = master->oobavail;
                slave->mtd.ecctype = master->ecctype;
 
        if (command == NAND_CMD_SEQIN) {
                int readcmd;
 
-               if (column >= mtd->oobblock) {
+               if (column >= mtd->writesize) {
                        /* OOB area */
-                       column -= mtd->oobblock;
+                       column -= mtd->writesize;
                        readcmd = NAND_CMD_READOOB;
                } else if (column < 256) {
                        /* First 256 bytes --> READ0 */
 
        if (command == NAND_CMD_SEQIN) {
                int readcmd;
 
-               if (column >= mtd->oobblock) {
+               if (column >= mtd->writesize) {
                        /* OOB area */
-                       column -= mtd->oobblock;
+                       column -= mtd->writesize;
                        readcmd = NAND_CMD_READOOB;
                } else if (column < 256) {
                        /* First 256 bytes --> READ0 */
        size_t retlen;
 
        for (offs = 0; offs < mtd->size; offs += mtd->erasesize) {
-               ret = mtd->read(mtd, offs, mtd->oobblock, &retlen, buf);
-               if (retlen != mtd->oobblock)
+               ret = mtd->read(mtd, offs, mtd->writesize, &retlen, buf);
+               if (retlen != mtd->writesize)
                        continue;
                if (ret) {
                        printk(KERN_WARNING "ECC error scanning DOC at 0x%x\n", offs);
        /* Only one mediaheader was found.  We want buf to contain a
           mediaheader on return, so we'll have to re-read the one we found. */
        offs = doc->mh0_page << this->page_shift;
-       ret = mtd->read(mtd, offs, mtd->oobblock, &retlen, buf);
-       if (retlen != mtd->oobblock) {
+       ret = mtd->read(mtd, offs, mtd->writesize, &retlen, buf);
+       if (retlen != mtd->writesize) {
                /* Insanity.  Give up. */
                printk(KERN_ERR "Read DiskOnChip Media Header once, but can't reread it???\n");
                return 0;
        unsigned blocks, maxblocks;
        int offs, numheaders;
 
-       buf = kmalloc(mtd->oobblock, GFP_KERNEL);
+       buf = kmalloc(mtd->writesize, GFP_KERNEL);
        if (!buf) {
                printk(KERN_ERR "DiskOnChip mediaheader kmalloc failed!\n");
                return 0;
        if (inftl_bbt_write)
                end -= (INFTL_BBT_RESERVED_BLOCKS << this->phys_erase_shift);
 
-       buf = kmalloc(mtd->oobblock, GFP_KERNEL);
+       buf = kmalloc(mtd->writesize, GFP_KERNEL);
        if (!buf) {
                printk(KERN_ERR "DiskOnChip mediaheader kmalloc failed!\n");
                return 0;
 
        if (command == NAND_CMD_SEQIN) {
                int readcmd;
 
-               if (column >= mtd->oobblock) {
+               if (column >= mtd->writesize) {
                        /* OOB area */
-                       column -= mtd->oobblock;
+                       column -= mtd->writesize;
                        readcmd = NAND_CMD_READOOB;
                } else if (column < 256) {
                        /* First 256 bytes --> READ0 */
 
        /* Emulate NAND_CMD_READOOB */
        if (command == NAND_CMD_READOOB) {
-               column += mtd->oobblock;
+               column += mtd->writesize;
                command = NAND_CMD_READ0;
        }
 
                /* No ecc, write all */
        case NAND_ECC_NONE:
                printk(KERN_WARNING "Writing data without ECC to NAND-FLASH is not recommended\n");
-               this->write_buf(mtd, this->data_poi, mtd->oobblock);
+               this->write_buf(mtd, this->data_poi, mtd->writesize);
                break;
 
                /* Software ecc 3/256, write all */
                                oob_buf[oob_config[eccidx]] = ecc_code[i];
                        datidx += this->eccsize;
                }
-               this->write_buf(mtd, this->data_poi, mtd->oobblock);
+               this->write_buf(mtd, this->data_poi, mtd->writesize);
                break;
        default:
                eccbytes = this->eccbytes;
        page = realpage & this->pagemask;
 
        /* Get raw starting column */
-       col = from & (mtd->oobblock - 1);
+       col = from & (mtd->writesize - 1);
 
-       end = mtd->oobblock;
+       end = mtd->writesize;
        ecc = this->eccsize;
        eccbytes = this->eccbytes;
 
                                buf[read++] = data_poi[j];
                        this->pagebuf = realpage;
                } else
-                       read += mtd->oobblock;
+                       read += mtd->writesize;
 
                /* Apply delay or wait for ready/busy pin
                 * Do this before the AUTOINCR check, so no problems
        int chip = (int)(from >> this->chip_shift);
        int sndcmd = 1;
        int cnt = 0;
-       int pagesize = mtd->oobblock + mtd->oobsize;
+       int pagesize = mtd->writesize + mtd->oobsize;
        int blockcheck = (1 << (this->phys_erase_shift - this->page_shift)) - 1;
 
        /* Do not allow reads past end of device */
        return this->oob_buf;
 }
 
-#define NOTALIGNED(x) (x & (mtd->oobblock-1)) != 0
+#define NOTALIGNED(x) (x & (mtd->writesize-1)) != 0
 
 /**
  * nand_write - [MTD Interface] compability function for nand_write_ecc
                /* Next oob page */
                oob += mtd->oobsize;
                /* Update written bytes count */
-               written += mtd->oobblock;
+               written += mtd->writesize;
                if (written == len)
                        goto cmp;
 
 
        if (NAND_MUST_PAD(this)) {
                /* Write out desired data */
-               this->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->oobblock, page & this->pagemask);
+               this->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page & this->pagemask);
                /* prepad 0xff for partial programming */
                this->write_buf(mtd, ffchars, column);
                /* write data */
                this->write_buf(mtd, ffchars, mtd->oobsize - (len + column));
        } else {
                /* Write out desired data */
-               this->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->oobblock + column, page & this->pagemask);
+               this->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize + column, page & this->pagemask);
                /* write data */
                this->write_buf(mtd, buf, len);
        }
                /* If the given tuple is >= pagesize then
                 * write it out from the iov
                 */
-               if ((vecs->iov_len - len) >= mtd->oobblock) {
+               if ((vecs->iov_len - len) >= mtd->writesize) {
                        /* Calc number of pages we can write
                         * out of this iov in one go */
                        numpages = (vecs->iov_len - len) >> this->page_shift;
                                                      &oobbuf[oob], oobsel, i != numpages);
                                if (ret)
                                        goto out;
-                               this->data_poi += mtd->oobblock;
-                               len += mtd->oobblock;
+                               this->data_poi += mtd->writesize;
+                               len += mtd->writesize;
                                oob += mtd->oobsize;
                                page++;
                        }
                         * tuple until we have a full page to write
                         */
                        int cnt = 0;
-                       while (cnt < mtd->oobblock) {
+                       while (cnt < mtd->writesize) {
                                if (vecs->iov_base != NULL && vecs->iov_len)
                                        this->data_buf[cnt++] = ((u_char *) vecs->iov_base)[len++];
                                /* Check, if we have to switch to the next tuple */
                if (ret)
                        goto out;
 
-               written += mtd->oobblock * numpages;
+               written += mtd->writesize * numpages;
                /* All done ? */
                if (!count)
                        break;
                        /* The 4th id byte is the important one */
                        extid = this->read_byte(mtd);
                        /* Calc pagesize */
-                       mtd->oobblock = 1024 << (extid & 0x3);
+                       mtd->writesize = 1024 << (extid & 0x3);
                        extid >>= 2;
                        /* Calc oobsize */
-                       mtd->oobsize = (8 << (extid & 0x01)) * (mtd->oobblock >> 9);
+                       mtd->oobsize = (8 << (extid & 0x01)) * (mtd->writesize >> 9);
                        extid >>= 2;
                        /* Calc blocksize. Blocksize is multiples of 64KiB */
                        mtd->erasesize = (64 * 1024) << (extid & 0x03);
                        /* Old devices have this data hardcoded in the
                         * device id table */
                        mtd->erasesize = nand_flash_ids[i].erasesize;
-                       mtd->oobblock = nand_flash_ids[i].pagesize;
-                       mtd->oobsize = mtd->oobblock / 32;
+                       mtd->writesize = nand_flash_ids[i].pagesize;
+                       mtd->oobsize = mtd->writesize / 32;
                        busw = nand_flash_ids[i].options & NAND_BUSWIDTH_16;
                }
 
                }
 
                /* Calculate the address shift from the page size */
-               this->page_shift = ffs(mtd->oobblock) - 1;
+               this->page_shift = ffs(mtd->writesize) - 1;
                this->bbt_erase_shift = this->phys_erase_shift = ffs(mtd->erasesize) - 1;
                this->chip_shift = ffs(this->chipsize) - 1;
 
                /* Set the bad block position */
-               this->badblockpos = mtd->oobblock > 512 ? NAND_LARGE_BADBLOCK_POS : NAND_SMALL_BADBLOCK_POS;
+               this->badblockpos = mtd->writesize > 512 ? NAND_LARGE_BADBLOCK_POS : NAND_SMALL_BADBLOCK_POS;
 
                /* Get chip options, preserve non chip based options */
                this->options &= ~NAND_CHIPOPTIONS_MSK;
                        this->erase_cmd = single_erase_cmd;
 
                /* Do not replace user supplied command function ! */
-               if (mtd->oobblock > 512 && this->cmdfunc == nand_command)
+               if (mtd->writesize > 512 && this->cmdfunc == nand_command)
                        this->cmdfunc = nand_command_lp;
 
                printk(KERN_INFO "NAND device: Manufacturer ID:"
 
        if (!this->data_buf) {
                size_t len;
-               len = mtd->oobblock + mtd->oobsize;
+               len = mtd->writesize + mtd->oobsize;
                this->data_buf = kmalloc(len, GFP_KERNEL);
                if (!this->data_buf) {
                        if (this->options & NAND_OOBBUF_ALLOC)
 
        switch (this->eccmode) {
        case NAND_ECC_HW12_2048:
-               if (mtd->oobblock < 2048) {
+               if (mtd->writesize < 2048) {
                        printk(KERN_WARNING "2048 byte HW ECC not possible on %d byte page size, fallback to SW ECC\n",
-                              mtd->oobblock);
+                              mtd->writesize);
                        this->eccmode = NAND_ECC_SOFT;
                        this->calculate_ecc = nand_calculate_ecc;
                        this->correct_data = nand_correct_data;
        case NAND_ECC_HW3_512:
        case NAND_ECC_HW6_512:
        case NAND_ECC_HW8_512:
-               if (mtd->oobblock == 256) {
+               if (mtd->writesize == 256) {
                        printk(KERN_WARNING "512 byte HW ECC not possible on 256 Byte pagesize, fallback to SW ECC \n");
                        this->eccmode = NAND_ECC_SOFT;
                        this->calculate_ecc = nand_calculate_ecc;
        /* Set the number of read / write steps for one page to ensure ECC generation */
        switch (this->eccmode) {
        case NAND_ECC_HW12_2048:
-               this->eccsteps = mtd->oobblock / 2048;
+               this->eccsteps = mtd->writesize / 2048;
                break;
        case NAND_ECC_HW3_512:
        case NAND_ECC_HW6_512:
        case NAND_ECC_HW8_512:
-               this->eccsteps = mtd->oobblock / 512;
+               this->eccsteps = mtd->writesize / 512;
                break;
        case NAND_ECC_HW3_256:
        case NAND_ECC_SOFT:
-               this->eccsteps = mtd->oobblock / 256;
+               this->eccsteps = mtd->writesize / 256;
                break;
 
        case NAND_ECC_NONE:
 
 
        /* Read the primary version, if available */
        if (td->options & NAND_BBT_VERSION) {
-               nand_read_raw(mtd, buf, td->pages[0] << this->page_shift, mtd->oobblock, mtd->oobsize);
-               td->version[0] = buf[mtd->oobblock + td->veroffs];
+               nand_read_raw(mtd, buf, td->pages[0] << this->page_shift, mtd->writesize, mtd->oobsize);
+               td->version[0] = buf[mtd->writesize + td->veroffs];
                printk(KERN_DEBUG "Bad block table at page %d, version 0x%02X\n", td->pages[0], td->version[0]);
        }
 
        /* Read the mirror version, if available */
        if (md && (md->options & NAND_BBT_VERSION)) {
-               nand_read_raw(mtd, buf, md->pages[0] << this->page_shift, mtd->oobblock, mtd->oobsize);
-               md->version[0] = buf[mtd->oobblock + md->veroffs];
+               nand_read_raw(mtd, buf, md->pages[0] << this->page_shift, mtd->writesize, mtd->oobsize);
+               md->version[0] = buf[mtd->writesize + md->veroffs];
                printk(KERN_DEBUG "Bad block table at page %d, version 0x%02X\n", md->pages[0], md->version[0]);
        }
 
                readlen = bd->len;
        } else {
                /* Full page content should be read */
-               scanlen = mtd->oobblock + mtd->oobsize;
-               readlen = len * mtd->oobblock;
+               scanlen = mtd->writesize + mtd->oobsize;
+               readlen = len * mtd->writesize;
                ooblen = len * mtd->oobsize;
        }
 
 
                                /* Read the full oob until read_oob is fixed to
                                 * handle single byte reads for 16 bit buswidth */
-                               ret = mtd->read_oob(mtd, from + j * mtd->oobblock, mtd->oobsize, &retlen, buf);
+                               ret = mtd->read_oob(mtd, from + j * mtd->writesize, mtd->oobsize, &retlen, buf);
                                if (ret)
                                        return ret;
 
                                        break;
                                }
                        } else {
-                               if (check_pattern(&buf[j * scanlen], scanlen, mtd->oobblock, bd)) {
+                               if (check_pattern(&buf[j * scanlen], scanlen, mtd->writesize, bd)) {
                                        this->bbt[i >> 3] |= 0x03 << (i & 0x6);
                                        printk(KERN_WARNING "Bad eraseblock %d at 0x%08x\n",
                                               i >> 1, (unsigned int)from);
        struct nand_chip *this = mtd->priv;
        int i, chips;
        int bits, startblock, block, dir;
-       int scanlen = mtd->oobblock + mtd->oobsize;
+       int scanlen = mtd->writesize + mtd->oobsize;
        int bbtblocks;
 
        /* Search direction top -> down ? */
                for (block = 0; block < td->maxblocks; block++) {
                        int actblock = startblock + dir * block;
                        /* Read first page */
-                       nand_read_raw(mtd, buf, actblock << this->bbt_erase_shift, mtd->oobblock, mtd->oobsize);
-                       if (!check_pattern(buf, scanlen, mtd->oobblock, td)) {
+                       nand_read_raw(mtd, buf, actblock << this->bbt_erase_shift, mtd->writesize, mtd->oobsize);
+                       if (!check_pattern(buf, scanlen, mtd->writesize, td)) {
                                td->pages[i] = actblock << (this->bbt_erase_shift - this->page_shift);
                                if (td->options & NAND_BBT_VERSION) {
-                                       td->version[i] = buf[mtd->oobblock + td->veroffs];
+                                       td->version[i] = buf[mtd->writesize + td->veroffs];
                                }
                                break;
                        }
                        /* Calc length */
                        len = (size_t) (numblocks >> sft);
                        /* Make it page aligned ! */
-                       len = (len + (mtd->oobblock - 1)) & ~(mtd->oobblock - 1);
+                       len = (len + (mtd->writesize - 1)) & ~(mtd->writesize - 1);
                        /* Preset the buffer with 0xff */
                        memset(buf, 0xff, len + (len >> this->page_shift) * mtd->oobsize);
                        offs = 0;
                        this->bbt_md = &bbt_mirror_descr;
                }
                if (!this->badblock_pattern) {
-                       this->badblock_pattern = (mtd->oobblock > 512) ? &largepage_flashbased : &smallpage_flashbased;
+                       this->badblock_pattern = (mtd->writesize > 512) ? &largepage_flashbased : &smallpage_flashbased;
                }
        } else {
                this->bbt_td = NULL;
                this->bbt_md = NULL;
                if (!this->badblock_pattern) {
-                       this->badblock_pattern = (mtd->oobblock > 512) ?
+                       this->badblock_pattern = (mtd->writesize > 512) ?
                            &largepage_memorybased : &smallpage_memorybased;
                }
        }
 
        /* Initialize the NAND flash parameters */
        ns->busw = chip->options & NAND_BUSWIDTH_16 ? 16 : 8;
        ns->geom.totsz    = mtd->size;
-       ns->geom.pgsz     = mtd->oobblock;
+       ns->geom.pgsz     = mtd->writesize;
        ns->geom.oobsz    = mtd->oobsize;
        ns->geom.secsz    = mtd->erasesize;
        ns->geom.pgszoob  = ns->geom.pgsz + ns->geom.oobsz;
 
                if (!(rtn & ERR_STAT_ECC_AVAILABLE)) {
                        er_stat |= 1 << 1;      /* err_ecc_not_avail */
                } else {
-                       len = mtd->oobblock;
+                       len = mtd->writesize;
                        buf = kmalloc(len, GFP_KERNEL);
                        if (!buf) {
                                printk(KERN_ERR "rtc_from4_errstat: Out of memory!\n");
 
 
        if (ONENAND_CURRENT_BUFFERRAM(this)) {
                if (area == ONENAND_DATARAM)
-                       return mtd->oobblock;
+                       return mtd->writesize;
                if (area == ONENAND_SPARERAM)
                        return mtd->oobsize;
        }
        /* TODO handling oob */
 
        while (read < len) {
-               thislen = min_t(int, mtd->oobblock, len - read);
+               thislen = min_t(int, mtd->writesize, len - read);
 
-               column = from & (mtd->oobblock - 1);
-               if (column + thislen > mtd->oobblock)
-                       thislen = mtd->oobblock - column;
+               column = from & (mtd->writesize - 1);
+               if (column + thislen > mtd->writesize)
+                       thislen = mtd->writesize - column;
 
                if (!onenand_check_bufferram(mtd, from)) {
-                       this->command(mtd, ONENAND_CMD_READ, from, mtd->oobblock);
+                       this->command(mtd, ONENAND_CMD_READ, from, mtd->writesize);
 
                        ret = this->wait(mtd, FL_READING);
                        /* First copy data and check return value for ECC handling */
                /* Read more? */
                if (read < len) {
                        /* Page size */
-                       from += mtd->oobblock;
+                       from += mtd->writesize;
                        column = 0;
                }
        }
        void __iomem *dataram0, *dataram1;
        int ret = 0;
 
-       this->command(mtd, ONENAND_CMD_READ, addr, mtd->oobblock);
+       this->command(mtd, ONENAND_CMD_READ, addr, mtd->writesize);
 
        ret = this->wait(mtd, FL_READING);
        if (ret)
 
        /* Check, if the two dataram areas are same */
        dataram0 = this->base + ONENAND_DATARAM;
-       dataram1 = dataram0 + mtd->oobblock;
+       dataram1 = dataram0 + mtd->writesize;
 
-       if (memcmp(dataram0, dataram1, mtd->oobblock))
+       if (memcmp(dataram0, dataram1, mtd->writesize))
                return -EBADMSG;
 
        return 0;
 #define onenand_verify_oob(...)                (0)
 #endif
 
-#define NOTALIGNED(x)  ((x & (mtd->oobblock - 1)) != 0)
+#define NOTALIGNED(x)  ((x & (mtd->writesize - 1)) != 0)
 
 /**
  * onenand_write_ecc - [MTD Interface] OneNAND write with ECC
 
        /* Loop until all data write */
        while (written < len) {
-               int thislen = min_t(int, mtd->oobblock, len - written);
+               int thislen = min_t(int, mtd->writesize, len - written);
 
-               this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->oobblock);
+               this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->writesize);
 
                this->write_bufferram(mtd, ONENAND_DATARAM, buf, 0, thislen);
                this->write_bufferram(mtd, ONENAND_SPARERAM, ffchars, 0, mtd->oobsize);
 
-               this->command(mtd, ONENAND_CMD_PROG, to, mtd->oobblock);
+               this->command(mtd, ONENAND_CMD_PROG, to, mtd->writesize);
 
                onenand_update_bufferram(mtd, to, 1);
 
                 * If the given tuple is >= pagesize then
                 * write it out from the iov
                 */
-               if ((vecs->iov_len - len) >= mtd->oobblock) {
+               if ((vecs->iov_len - len) >= mtd->writesize) {
                        pbuf = vecs->iov_base + len;
 
-                       len += mtd->oobblock;
+                       len += mtd->writesize;
 
                        /* Check, if we have to switch to the next tuple */
                        if (len >= (int) vecs->iov_len) {
                        }
                } else {
                        int cnt = 0, thislen;
-                       while (cnt < mtd->oobblock) {
-                               thislen = min_t(int, mtd->oobblock - cnt, vecs->iov_len - len);
+                       while (cnt < mtd->writesize) {
+                               thislen = min_t(int, mtd->writesize - cnt, vecs->iov_len - len);
                                memcpy(this->page_buf + cnt, vecs->iov_base + len, thislen);
                                cnt += thislen;
                                len += thislen;
                        }
                }
 
-               this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->oobblock);
+               this->command(mtd, ONENAND_CMD_BUFFERRAM, to, mtd->writesize);
 
-               this->write_bufferram(mtd, ONENAND_DATARAM, pbuf, 0, mtd->oobblock);
+               this->write_bufferram(mtd, ONENAND_DATARAM, pbuf, 0, mtd->writesize);
                this->write_bufferram(mtd, ONENAND_SPARERAM, ffchars, 0, mtd->oobsize);
 
-               this->command(mtd, ONENAND_CMD_PROG, to, mtd->oobblock);
+               this->command(mtd, ONENAND_CMD_PROG, to, mtd->writesize);
 
                onenand_update_bufferram(mtd, to, 1);
 
                        goto out;
                }
 
-               written += mtd->oobblock;
+               written += mtd->writesize;
 
-               to += mtd->oobblock;
+               to += mtd->writesize;
        }
 
 out:
        int ret;
 
        /* Force buffer page aligned */
-       if (len < mtd->oobblock) {
+       if (len < mtd->writesize) {
                memcpy(this->page_buf, buf, len);
-               memset(this->page_buf + len, 0xff, mtd->oobblock - len);
+               memset(this->page_buf + len, 0xff, mtd->writesize - len);
                pbuf = this->page_buf;
-               len = mtd->oobblock;
+               len = mtd->writesize;
        }
 
        /* Enter OTP access mode */
                otp_pages = 10;
 
        if (mode == MTD_OTP_FACTORY) {
-               from += mtd->oobblock * otp_pages;
+               from += mtd->writesize * otp_pages;
                otp_pages = 64 - otp_pages;
        }
 
        /* Check User/Factory boundary */
-       if (((mtd->oobblock * otp_pages) - (from + len)) < 0)
+       if (((mtd->writesize * otp_pages) - (from + len)) < 0)
                return 0;
 
        while (len > 0 && otp_pages > 0) {
 
                        otpinfo = (struct otp_info *) buf;
                        otpinfo->start = from;
-                       otpinfo->length = mtd->oobblock;
+                       otpinfo->length = mtd->writesize;
                        otpinfo->locked = 0;
 
-                       from += mtd->oobblock;
+                       from += mtd->writesize;
                        buf += sizeof(struct otp_info);
                        *retlen += sizeof(struct otp_info);
                } else {
 
        /* OneNAND page size & block size */
        /* The data buffer size is equal to page size */
-       mtd->oobblock = this->read_word(this->base + ONENAND_REG_DATA_BUFFER_SIZE);
-       mtd->oobsize = mtd->oobblock >> 5;
+       mtd->writesize = this->read_word(this->base + ONENAND_REG_DATA_BUFFER_SIZE);
+       mtd->oobsize = mtd->writesize >> 5;
        /* Pagers per block is always 64 in OneNAND */
-       mtd->erasesize = mtd->oobblock << 6;
+       mtd->erasesize = mtd->writesize << 6;
 
        this->erase_shift = ffs(mtd->erasesize) - 1;
-       this->page_shift = ffs(mtd->oobblock) - 1;
+       this->page_shift = ffs(mtd->writesize) - 1;
        this->ppb_shift = (this->erase_shift - this->page_shift);
-       this->page_mask = (mtd->erasesize / mtd->oobblock) - 1;
+       this->page_mask = (mtd->erasesize / mtd->writesize) - 1;
 
        /* REVIST: Multichip handling */
 
        /* Allocate buffers, if necessary */
        if (!this->page_buf) {
                size_t len;
-               len = mtd->oobblock + mtd->oobsize;
+               len = mtd->writesize + mtd->oobsize;
                this->page_buf = kmalloc(len, GFP_KERNEL);
                if (!this->page_buf) {
                        printk(KERN_ERR "onenand_scan(): Can't allocate page_buf\n");
 
 
                        /* No need to read pages fully,
                         * just read required OOB bytes */
-                       ret = mtd->read_oob(mtd, from + j * mtd->oobblock + bd->offs,
+                       ret = mtd->read_oob(mtd, from + j * mtd->writesize + bd->offs,
                                                readlen, &retlen, &buf[0]);
 
                        if (ret)
                                return ret;
 
-                       if (check_short_pattern(&buf[j * scanlen], scanlen, mtd->oobblock, bd)) {
+                       if (check_short_pattern(&buf[j * scanlen], scanlen, mtd->writesize, bd)) {
                                bbm->bbt[i >> 3] |= 0x03 << (i & 0x6);
                                printk(KERN_WARNING "Bad eraseblock %d at 0x%08x\n",
                                        i >> 1, (unsigned int) from);
 
 
        /* Initialise write buffer */
        init_rwsem(&c->wbuf_sem);
-       c->wbuf_pagesize = c->mtd->oobblock;
+       c->wbuf_pagesize = c->mtd->writesize;
        c->wbuf_ofs = 0xFFFFFFFF;
 
        c->wbuf = kmalloc(c->wbuf_pagesize, GFP_KERNEL);
 
 int jffs2_nor_wbuf_flash_setup(struct jffs2_sb_info *c) {
        /* Cleanmarker currently occupies a whole programming region */
-       c->cleanmarker_size = MTD_PROGREGION_SIZE(c->mtd);
+       c->cleanmarker_size = c->mtd->writesize;
 
        /* Initialize write buffer */
        init_rwsem(&c->wbuf_sem);
-       c->wbuf_pagesize = MTD_PROGREGION_SIZE(c->mtd);
+       c->wbuf_pagesize = c->mtd->writesize;
        c->wbuf_ofs = 0xFFFFFFFF;
 
        c->wbuf = kmalloc(c->wbuf_pagesize, GFP_KERNEL);
 
         * information below if they desire
         */
        u_int32_t erasesize;
+       /* Smallest availlable size for writing to the device.  For NAND,
+        * this is the page size, for some NOR chips, the size of ECC
+        * covered blocks.
+        */
+       u_int32_t writesize;
 
-       u_int32_t oobblock;  // Size of OOB blocks (e.g. 512)
        u_int32_t oobsize;   // Amount of OOB data per block (e.g. 16)
        u_int32_t ecctype;
        u_int32_t eccsize;
         * MTD_PROGRAM_REGIONS flag is set.
         * (Maybe we should have an union for those?)
         */
-#define MTD_PROGREGION_SIZE(mtd)  (mtd)->oobblock
 #define MTD_PROGREGION_CTRLMODE_VALID(mtd)  (mtd)->oobsize
 #define MTD_PROGREGION_CTRLMODE_INVALID(mtd)  (mtd)->ecctype
 
 
        uint32_t flags;
        uint32_t size;   // Total size of the MTD
        uint32_t erasesize;
-       uint32_t oobblock;  // Size of OOB blocks (e.g. 512)
+       uint32_t writesize;
        uint32_t oobsize;   // Amount of OOB data per block (e.g. 16)
        uint32_t ecctype;
        uint32_t eccsize;