diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2017-03-22 16:07:17 -0400 |
---|---|---|
committer | Boris Brezillon <boris.brezillon@free-electrons.com> | 2017-03-27 10:06:44 -0400 |
commit | 1394a7265f88e1fbd001048113f28fb090e5eff5 (patch) | |
tree | 32b1d5b2ef6ef246507880ea970b3d451dac9780 /drivers/mtd/nand | |
parent | c5d664aa5a4c4b257a54eb35045031630d105f49 (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.c | 68 |
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 | ||
1406 | int denali_init(struct denali_nand_info *denali) | 1406 | int 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) |