summaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2017-03-22 16:07:17 -0400
committerBoris Brezillon <boris.brezillon@free-electrons.com>2017-03-27 10:06:44 -0400
commit1394a7265f88e1fbd001048113f28fb090e5eff5 (patch)
tree32b1d5b2ef6ef246507880ea970b3d451dac9780 /drivers/mtd/nand
parentc5d664aa5a4c4b257a54eb35045031630d105f49 (diff)
mtd: nand: denali: use nand_chip to hold frequently accessed data
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>
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r--drivers/mtd/nand/denali.c68
1 files changed, 34 insertions, 34 deletions
diff --git a/drivers/mtd/nand/denali.c b/drivers/mtd/nand/denali.c
index 2c59eb3c117e..4b907a5bdb25 100644
--- a/drivers/mtd/nand/denali.c
+++ b/drivers/mtd/nand/denali.c
@@ -1405,7 +1405,8 @@ static void denali_drv_init(struct denali_nand_info *denali)
1405 1405
1406int denali_init(struct denali_nand_info *denali) 1406int denali_init(struct denali_nand_info *denali)
1407{ 1407{
1408 struct mtd_info *mtd = nand_to_mtd(&denali->nand); 1408 struct nand_chip *chip = &denali->nand;
1409 struct mtd_info *mtd = nand_to_mtd(chip);
1409 int ret; 1410 int ret;
1410 1411
1411 if (denali->platform == INTEL_CE4100) { 1412 if (denali->platform == INTEL_CE4100) {
@@ -1442,10 +1443,10 @@ int denali_init(struct denali_nand_info *denali)
1442 mtd->name = "denali-nand"; 1443 mtd->name = "denali-nand";
1443 1444
1444 /* register the driver with the NAND core subsystem */ 1445 /* register the driver with the NAND core subsystem */
1445 denali->nand.select_chip = denali_select_chip; 1446 chip->select_chip = denali_select_chip;
1446 denali->nand.cmdfunc = denali_cmdfunc; 1447 chip->cmdfunc = denali_cmdfunc;
1447 denali->nand.read_byte = denali_read_byte; 1448 chip->read_byte = denali_read_byte;
1448 denali->nand.waitfunc = denali_waitfunc; 1449 chip->waitfunc = denali_waitfunc;
1449 1450
1450 /* 1451 /*
1451 * scan for NAND devices attached to the controller 1452 * scan for NAND devices attached to the controller
@@ -1488,17 +1489,16 @@ int denali_init(struct denali_nand_info *denali)
1488 * the real pagesize and anything necessery 1489 * the real pagesize and anything necessery
1489 */ 1490 */
1490 denali->devnum = ioread32(denali->flash_reg + DEVICES_CONNECTED); 1491 denali->devnum = ioread32(denali->flash_reg + DEVICES_CONNECTED);
1491 denali->nand.chipsize <<= denali->devnum - 1; 1492 chip->chipsize <<= denali->devnum - 1;
1492 denali->nand.page_shift += denali->devnum - 1; 1493 chip->page_shift += denali->devnum - 1;
1493 denali->nand.pagemask = (denali->nand.chipsize >> 1494 chip->pagemask = (chip->chipsize >> chip->page_shift) - 1;
1494 denali->nand.page_shift) - 1; 1495 chip->bbt_erase_shift += denali->devnum - 1;
1495 denali->nand.bbt_erase_shift += denali->devnum - 1; 1496 chip->phys_erase_shift = chip->bbt_erase_shift;
1496 denali->nand.phys_erase_shift = denali->nand.bbt_erase_shift; 1497 chip->chip_shift += denali->devnum - 1;
1497 denali->nand.chip_shift += denali->devnum - 1;
1498 mtd->writesize <<= denali->devnum - 1; 1498 mtd->writesize <<= denali->devnum - 1;
1499 mtd->oobsize <<= denali->devnum - 1; 1499 mtd->oobsize <<= denali->devnum - 1;
1500 mtd->erasesize <<= denali->devnum - 1; 1500 mtd->erasesize <<= denali->devnum - 1;
1501 mtd->size = denali->nand.numchips * denali->nand.chipsize; 1501 mtd->size = chip->numchips * chip->chipsize;
1502 denali->bbtskipbytes *= denali->devnum; 1502 denali->bbtskipbytes *= denali->devnum;
1503 1503
1504 /* 1504 /*
@@ -1508,29 +1508,29 @@ int denali_init(struct denali_nand_info *denali)
1508 */ 1508 */
1509 1509
1510 /* Bad block management */ 1510 /* Bad block management */
1511 denali->nand.bbt_td = &bbt_main_descr; 1511 chip->bbt_td = &bbt_main_descr;
1512 denali->nand.bbt_md = &bbt_mirror_descr; 1512 chip->bbt_md = &bbt_mirror_descr;
1513 1513
1514 /* skip the scan for now until we have OOB read and write support */ 1514 /* skip the scan for now until we have OOB read and write support */
1515 denali->nand.bbt_options |= NAND_BBT_USE_FLASH; 1515 chip->bbt_options |= NAND_BBT_USE_FLASH;
1516 denali->nand.options |= NAND_SKIP_BBTSCAN; 1516 chip->options |= NAND_SKIP_BBTSCAN;
1517 denali->nand.ecc.mode = NAND_ECC_HW_SYNDROME; 1517 chip->ecc.mode = NAND_ECC_HW_SYNDROME;
1518 1518
1519 /* no subpage writes on denali */ 1519 /* no subpage writes on denali */
1520 denali->nand.options |= NAND_NO_SUBPAGE_WRITE; 1520 chip->options |= NAND_NO_SUBPAGE_WRITE;
1521 1521
1522 /* 1522 /*
1523 * Denali Controller only support 15bit and 8bit ECC in MRST, 1523 * Denali Controller only support 15bit and 8bit ECC in MRST,
1524 * so just let controller do 15bit ECC for MLC and 8bit ECC for 1524 * so just let controller do 15bit ECC for MLC and 8bit ECC for
1525 * SLC if possible. 1525 * SLC if possible.
1526 * */ 1526 * */
1527 if (!nand_is_slc(&denali->nand) && 1527 if (!nand_is_slc(chip) &&
1528 (mtd->oobsize > (denali->bbtskipbytes + 1528 (mtd->oobsize > (denali->bbtskipbytes +
1529 ECC_15BITS * (mtd->writesize / 1529 ECC_15BITS * (mtd->writesize /
1530 ECC_SECTOR_SIZE)))) { 1530 ECC_SECTOR_SIZE)))) {
1531 /* if MLC OOB size is large enough, use 15bit ECC*/ 1531 /* if MLC OOB size is large enough, use 15bit ECC*/
1532 denali->nand.ecc.strength = 15; 1532 chip->ecc.strength = 15;
1533 denali->nand.ecc.bytes = ECC_15BITS; 1533 chip->ecc.bytes = ECC_15BITS;
1534 iowrite32(15, denali->flash_reg + ECC_CORRECTION); 1534 iowrite32(15, denali->flash_reg + ECC_CORRECTION);
1535 } else if (mtd->oobsize < (denali->bbtskipbytes + 1535 } else if (mtd->oobsize < (denali->bbtskipbytes +
1536 ECC_8BITS * (mtd->writesize / 1536 ECC_8BITS * (mtd->writesize /
@@ -1538,24 +1538,24 @@ int denali_init(struct denali_nand_info *denali)
1538 pr_err("Your NAND chip OOB is not large enough to contain 8bit ECC correction codes"); 1538 pr_err("Your NAND chip OOB is not large enough to contain 8bit ECC correction codes");
1539 goto failed_req_irq; 1539 goto failed_req_irq;
1540 } else { 1540 } else {
1541 denali->nand.ecc.strength = 8; 1541 chip->ecc.strength = 8;
1542 denali->nand.ecc.bytes = ECC_8BITS; 1542 chip->ecc.bytes = ECC_8BITS;
1543 iowrite32(8, denali->flash_reg + ECC_CORRECTION); 1543 iowrite32(8, denali->flash_reg + ECC_CORRECTION);
1544 } 1544 }
1545 1545
1546 mtd_set_ooblayout(mtd, &denali_ooblayout_ops); 1546 mtd_set_ooblayout(mtd, &denali_ooblayout_ops);
1547 denali->nand.ecc.bytes *= denali->devnum; 1547 chip->ecc.bytes *= denali->devnum;
1548 denali->nand.ecc.strength *= denali->devnum; 1548 chip->ecc.strength *= denali->devnum;
1549 1549
1550 /* override the default read operations */ 1550 /* override the default read operations */
1551 denali->nand.ecc.size = ECC_SECTOR_SIZE * denali->devnum; 1551 chip->ecc.size = ECC_SECTOR_SIZE * denali->devnum;
1552 denali->nand.ecc.read_page = denali_read_page; 1552 chip->ecc.read_page = denali_read_page;
1553 denali->nand.ecc.read_page_raw = denali_read_page_raw; 1553 chip->ecc.read_page_raw = denali_read_page_raw;
1554 denali->nand.ecc.write_page = denali_write_page; 1554 chip->ecc.write_page = denali_write_page;
1555 denali->nand.ecc.write_page_raw = denali_write_page_raw; 1555 chip->ecc.write_page_raw = denali_write_page_raw;
1556 denali->nand.ecc.read_oob = denali_read_oob; 1556 chip->ecc.read_oob = denali_read_oob;
1557 denali->nand.ecc.write_oob = denali_write_oob; 1557 chip->ecc.write_oob = denali_write_oob;
1558 denali->nand.erase = denali_erase; 1558 chip->erase = denali_erase;
1559 1559
1560 ret = nand_scan_tail(mtd); 1560 ret = nand_scan_tail(mtd);
1561 if (ret) 1561 if (ret)