mtd: nand: denali: use nand_chip to hold frequently accessed data
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 22 Mar 2017 20:07:17 +0000 (05:07 +0900)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Mon, 27 Mar 2017 14:06:44 +0000 (16:06 +0200)
The denali_init() needs to setup a bunch of parameters of nand_chip.
Replace denali->nand.(member) with chip->(member) for shorter code.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
drivers/mtd/nand/denali.c

index 2c59eb3c117e62a2a4142c66a4059c0978ac1c50..4b907a5bdb25bc24318b2d29f6d3a37027bfd407 100644 (file)
@@ -1405,7 +1405,8 @@ static void denali_drv_init(struct denali_nand_info *denali)
 
 int denali_init(struct denali_nand_info *denali)
 {
-       struct mtd_info *mtd = nand_to_mtd(&denali->nand);
+       struct nand_chip *chip = &denali->nand;
+       struct mtd_info *mtd = nand_to_mtd(chip);
        int ret;
 
        if (denali->platform == INTEL_CE4100) {
@@ -1442,10 +1443,10 @@ int denali_init(struct denali_nand_info *denali)
        mtd->name = "denali-nand";
 
        /* register the driver with the NAND core subsystem */
-       denali->nand.select_chip = denali_select_chip;
-       denali->nand.cmdfunc = denali_cmdfunc;
-       denali->nand.read_byte = denali_read_byte;
-       denali->nand.waitfunc = denali_waitfunc;
+       chip->select_chip = denali_select_chip;
+       chip->cmdfunc = denali_cmdfunc;
+       chip->read_byte = denali_read_byte;
+       chip->waitfunc = denali_waitfunc;
 
        /*
         * scan for NAND devices attached to the controller
@@ -1488,17 +1489,16 @@ int denali_init(struct denali_nand_info *denali)
         * the real pagesize and anything necessery
         */
        denali->devnum = ioread32(denali->flash_reg + DEVICES_CONNECTED);
-       denali->nand.chipsize <<= denali->devnum - 1;
-       denali->nand.page_shift += denali->devnum - 1;
-       denali->nand.pagemask = (denali->nand.chipsize >>
-                                               denali->nand.page_shift) - 1;
-       denali->nand.bbt_erase_shift += denali->devnum - 1;
-       denali->nand.phys_erase_shift = denali->nand.bbt_erase_shift;
-       denali->nand.chip_shift += denali->devnum - 1;
+       chip->chipsize <<= denali->devnum - 1;
+       chip->page_shift += denali->devnum - 1;
+       chip->pagemask = (chip->chipsize >> chip->page_shift) - 1;
+       chip->bbt_erase_shift += denali->devnum - 1;
+       chip->phys_erase_shift = chip->bbt_erase_shift;
+       chip->chip_shift += denali->devnum - 1;
        mtd->writesize <<= denali->devnum - 1;
        mtd->oobsize <<= denali->devnum - 1;
        mtd->erasesize <<= denali->devnum - 1;
-       mtd->size = denali->nand.numchips * denali->nand.chipsize;
+       mtd->size = chip->numchips * chip->chipsize;
        denali->bbtskipbytes *= denali->devnum;
 
        /*
@@ -1508,29 +1508,29 @@ int denali_init(struct denali_nand_info *denali)
         */
 
        /* Bad block management */
-       denali->nand.bbt_td = &bbt_main_descr;
-       denali->nand.bbt_md = &bbt_mirror_descr;
+       chip->bbt_td = &bbt_main_descr;
+       chip->bbt_md = &bbt_mirror_descr;
 
        /* skip the scan for now until we have OOB read and write support */
-       denali->nand.bbt_options |= NAND_BBT_USE_FLASH;
-       denali->nand.options |= NAND_SKIP_BBTSCAN;
-       denali->nand.ecc.mode = NAND_ECC_HW_SYNDROME;
+       chip->bbt_options |= NAND_BBT_USE_FLASH;
+       chip->options |= NAND_SKIP_BBTSCAN;
+       chip->ecc.mode = NAND_ECC_HW_SYNDROME;
 
        /* no subpage writes on denali */
-       denali->nand.options |= NAND_NO_SUBPAGE_WRITE;
+       chip->options |= NAND_NO_SUBPAGE_WRITE;
 
        /*
         * Denali Controller only support 15bit and 8bit ECC in MRST,
         * so just let controller do 15bit ECC for MLC and 8bit ECC for
         * SLC if possible.
         * */
-       if (!nand_is_slc(&denali->nand) &&
+       if (!nand_is_slc(chip) &&
                        (mtd->oobsize > (denali->bbtskipbytes +
                        ECC_15BITS * (mtd->writesize /
                        ECC_SECTOR_SIZE)))) {
                /* if MLC OOB size is large enough, use 15bit ECC*/
-               denali->nand.ecc.strength = 15;
-               denali->nand.ecc.bytes = ECC_15BITS;
+               chip->ecc.strength = 15;
+               chip->ecc.bytes = ECC_15BITS;
                iowrite32(15, denali->flash_reg + ECC_CORRECTION);
        } else if (mtd->oobsize < (denali->bbtskipbytes +
                        ECC_8BITS * (mtd->writesize /
@@ -1538,24 +1538,24 @@ int denali_init(struct denali_nand_info *denali)
                pr_err("Your NAND chip OOB is not large enough to contain 8bit ECC correction codes");
                goto failed_req_irq;
        } else {
-               denali->nand.ecc.strength = 8;
-               denali->nand.ecc.bytes = ECC_8BITS;
+               chip->ecc.strength = 8;
+               chip->ecc.bytes = ECC_8BITS;
                iowrite32(8, denali->flash_reg + ECC_CORRECTION);
        }
 
        mtd_set_ooblayout(mtd, &denali_ooblayout_ops);
-       denali->nand.ecc.bytes *= denali->devnum;
-       denali->nand.ecc.strength *= denali->devnum;
+       chip->ecc.bytes *= denali->devnum;
+       chip->ecc.strength *= denali->devnum;
 
        /* override the default read operations */
-       denali->nand.ecc.size = ECC_SECTOR_SIZE * denali->devnum;
-       denali->nand.ecc.read_page = denali_read_page;
-       denali->nand.ecc.read_page_raw = denali_read_page_raw;
-       denali->nand.ecc.write_page = denali_write_page;
-       denali->nand.ecc.write_page_raw = denali_write_page_raw;
-       denali->nand.ecc.read_oob = denali_read_oob;
-       denali->nand.ecc.write_oob = denali_write_oob;
-       denali->nand.erase = denali_erase;
+       chip->ecc.size = ECC_SECTOR_SIZE * denali->devnum;
+       chip->ecc.read_page = denali_read_page;
+       chip->ecc.read_page_raw = denali_read_page_raw;
+       chip->ecc.write_page = denali_write_page;
+       chip->ecc.write_page_raw = denali_write_page_raw;
+       chip->ecc.read_oob = denali_read_oob;
+       chip->ecc.write_oob = denali_write_oob;
+       chip->erase = denali_erase;
 
        ret = nand_scan_tail(mtd);
        if (ret)