Lines Matching refs:nand

32 #include <nand.h>
234 * @nand: base NAND chip structure
244 struct nand_chip nand;
257 static inline struct sunxi_nand_chip *to_sunxi_nand(struct nand_chip *nand)
259 return container_of(nand, struct sunxi_nand_chip, nand);
313 /* gate on nand clock */
388 struct nand_chip *nand = mtd_to_nand(mtd);
389 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand);
390 struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller);
392 unsigned long timeo = (sunxi_nand->nand.state == FL_ERASING ? 400 : 20);
426 struct nand_chip *nand = mtd_to_nand(mtd);
427 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand);
428 struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller);
445 NFC_PAGE_SHIFT(nand->page_shift - 10);
447 nand->dev_ready = NULL;
449 nand->dev_ready = sunxi_nfc_dev_ready;
471 struct nand_chip *nand = mtd_to_nand(mtd);
472 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand);
473 struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller);
504 struct nand_chip *nand = mtd_to_nand(mtd);
505 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand);
506 struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller);
545 struct nand_chip *nand = mtd_to_nand(mtd);
546 struct sunxi_nand_chip *sunxi_nand = to_sunxi_nand(nand);
547 struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller);
712 struct nand_chip *nand = mtd_to_nand(mtd);
713 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
717 if (!(nand->options & NAND_NEED_SCRAMBLING))
728 struct nand_chip *nand = mtd_to_nand(mtd);
729 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
731 if (!(nand->options & NAND_NEED_SCRAMBLING))
740 struct nand_chip *nand = mtd_to_nand(mtd);
741 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
743 if (!(nand->options & NAND_NEED_SCRAMBLING))
779 struct nand_chip *nand = mtd_to_nand(mtd);
780 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
781 struct sunxi_nand_hw_ecc *data = nand->ecc.priv;
789 if (nand->ecc.size == 512)
797 struct nand_chip *nand = mtd_to_nand(mtd);
798 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
819 struct nand_chip *nand = mtd_to_nand(mtd);
820 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
821 struct nand_ecc_ctrl *ecc = &nand->ecc;
827 nand->cmdfunc(mtd, NAND_CMD_RNDOUT, data_off, -1);
832 nand->cmdfunc(mtd, NAND_CMD_RNDOUT, oob_off, -1);
866 nand->cmdfunc(mtd, NAND_CMD_RNDOUT, oob_off, -1);
874 if (nand->options & NAND_NEED_SCRAMBLING) {
875 nand->cmdfunc(mtd, NAND_CMD_RNDOUT, data_off, -1);
876 nand->read_buf(mtd, data, ecc->size);
877 nand->cmdfunc(mtd, NAND_CMD_RNDOUT, oob_off, -1);
878 nand->read_buf(mtd, oob, ecc->bytes + 4);
896 if (bbm && nand->options & NAND_NEED_SCRAMBLING)
914 struct nand_chip *nand = mtd_to_nand(mtd);
915 struct nand_ecc_ctrl *ecc = &nand->ecc;
923 nand->cmdfunc(mtd, NAND_CMD_RNDOUT,
946 struct nand_chip *nand = mtd_to_nand(mtd);
947 struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller);
948 struct nand_ecc_ctrl *ecc = &nand->ecc;
952 nand->cmdfunc(mtd, NAND_CMD_RNDIN, data_off, -1);
957 if ((nand->options & NAND_NEED_SCRAMBLING) && bbm) {
970 nand->cmdfunc(mtd, NAND_CMD_RNDIN, oob_off, -1);
995 struct nand_chip *nand = mtd_to_nand(mtd);
996 struct nand_ecc_ctrl *ecc = &nand->ecc;
1004 nand->cmdfunc(mtd, NAND_CMD_RNDIN,
1347 * nand clk_rate = min_clk_rate
1357 struct mtd_info *mtd = nand_to_mtd(&chip->nand);
1362 mode = onfi_get_async_timing_mode(&chip->nand);
1364 mode = chip->nand.onfi_timing_mode_default;
1375 chip->nand.select_chip(mtd, i);
1376 ret = chip->nand.onfi_set_features(mtd,
1377 &chip->nand,
1380 chip->nand.select_chip(mtd, -1);
1570 struct nand_chip *nand = mtd_to_nand(mtd);
1574 ecc->size = nand->ecc_step_ds;
1575 ecc->strength = nand->ecc_strength_ds;
1614 struct nand_chip *nand;
1691 nand = &chip->nand;
1693 nand->chip_delay = 200;
1694 nand->controller = &nfc->controller;
1699 nand->ecc.mode = NAND_ECC_HW;
1700 nand->flash_node = np;
1701 nand->select_chip = sunxi_nfc_select_chip;
1702 nand->cmd_ctrl = sunxi_nfc_cmd_ctrl;
1703 nand->read_buf = sunxi_nfc_read_buf;
1704 nand->write_buf = sunxi_nfc_write_buf;
1705 nand->read_byte = sunxi_nfc_read_byte;
1707 mtd = nand_to_mtd(nand);
1712 if (nand->bbt_options & NAND_BBT_USE_FLASH)
1713 nand->bbt_options |= NAND_BBT_NO_OOB;
1715 if (nand->options & NAND_NEED_SCRAMBLING)
1716 nand->options |= NAND_NO_SUBPAGE_WRITE;
1718 nand->options |= NAND_SUBPAGE_READ;
1726 ret = sunxi_nand_ecc_init(mtd, &nand->ecc);
1772 sunxi_nand_ecc_cleanup(&chip->nand.ecc);
1809 dev_err(dev, "failed to init nand chips\n");
1818 .compatible = "allwinner,sun4i-a10-nand",