}
 
        /* Invalidate the page cache, if we write to the cached page */
-       if (page == chip->pagebuf)
-               chip->pagebuf = -1;
+       if (page == chip->pagecache.page)
+               chip->pagecache.page = -1;
 
        nand_fill_oob(chip, ops->oobbuf, ops->ooblen, ops);
 
                        use_bufpoi = 0;
 
                /* Is the current page in the buffer? */
-               if (realpage != chip->pagebuf || oob) {
+               if (realpage != chip->pagecache.page || oob) {
                        bufpoi = use_bufpoi ? chip->data_buf : buf;
 
                        if (use_bufpoi && aligned)
                        if (ret < 0) {
                                if (use_bufpoi)
                                        /* Invalidate page cache */
-                                       chip->pagebuf = -1;
+                                       chip->pagecache.page = -1;
                                break;
                        }
 
                                if (!NAND_HAS_SUBPAGE_READ(chip) && !oob &&
                                    !(mtd->ecc_stats.failed - ecc_failures) &&
                                    (ops->mode != MTD_OPS_RAW)) {
-                                       chip->pagebuf = realpage;
-                                       chip->pagebuf_bitflips = ret;
+                                       chip->pagecache.page = realpage;
+                                       chip->pagecache.bitflips = ret;
                                } else {
                                        /* Invalidate page cache */
-                                       chip->pagebuf = -1;
+                                       chip->pagecache.page = -1;
                                }
                                memcpy(buf, chip->data_buf + col, bytes);
                        }
                        memcpy(buf, chip->data_buf + col, bytes);
                        buf += bytes;
                        max_bitflips = max_t(unsigned int, max_bitflips,
-                                            chip->pagebuf_bitflips);
+                                            chip->pagecache.bitflips);
                }
 
                readlen -= bytes;
        page = realpage & chip->pagemask;
 
        /* Invalidate the page cache, when we write to the cached page */
-       if (to <= ((loff_t)chip->pagebuf << chip->page_shift) &&
-           ((loff_t)chip->pagebuf << chip->page_shift) < (to + ops->len))
-               chip->pagebuf = -1;
+       if (to <= ((loff_t)chip->pagecache.page << chip->page_shift) &&
+           ((loff_t)chip->pagecache.page << chip->page_shift) < (to + ops->len))
+               chip->pagecache.page = -1;
 
        /* Don't allow multipage oob writes with offset */
        if (oob && ops->ooboffs && (ops->ooboffs + ops->ooblen > oobmaxlen)) {
                 * Invalidate the page cache, if we erase the block which
                 * contains the current cached page.
                 */
-               if (page <= chip->pagebuf && chip->pagebuf <
+               if (page <= chip->pagecache.page && chip->pagecache.page <
                    (page + pages_per_block))
-                       chip->pagebuf = -1;
+                       chip->pagecache.page = -1;
 
                ret = nand_erase_op(chip, (page & chip->pagemask) >>
                                    (chip->phys_erase_shift - chip->page_shift));
        chip->subpagesize = mtd->writesize >> mtd->subpage_sft;
 
        /* Invalidate the pagebuffer reference */
-       chip->pagebuf = -1;
+       chip->pagecache.page = -1;
 
        /* Large page NAND with SOFT_ECC should support subpage reads */
        switch (ecc->mode) {
 
  * @chipsize:          [INTERN] the size of one chip for multichip arrays
  * @pagemask:          [INTERN] page number mask = number of (pages / chip) - 1
  * @data_buf:          [INTERN] buffer for data, size is (page size + oobsize).
- * @pagebuf:           [INTERN] holds the pagenumber which is currently in
- *                     data_buf.
- * @pagebuf_bitflips:  [INTERN] holds the bitflip count for the page which is
- *                     currently in data_buf.
+ * @pagecache:         Structure containing page cache related fields
+ * @pagecache.bitflips:        Number of bitflips of the cached page
+ * @pagecache.page:    Page number currently in the cache. -1 means no page is
+ *                     currently cached
  * @subpagesize:       [INTERN] holds the subpagesize
  * @id:                        [INTERN] holds NAND ID
  * @parameters:                [INTERN] holds generic parameters under an easily
        uint64_t chipsize;
        int pagemask;
        u8 *data_buf;
-       int pagebuf;
-       unsigned int pagebuf_bitflips;
+
+       struct {
+               unsigned int bitflips;
+               int page;
+       } pagecache;
+
        int subpagesize;
        uint8_t bits_per_cell;
        uint16_t ecc_strength_ds;
  */
 static inline void *nand_get_data_buf(struct nand_chip *chip)
 {
-       chip->pagebuf = -1;
+       chip->pagecache.page = -1;
 
        return chip->data_buf;
 }