Lines Matching defs:mtd

16 #include <linux/mtd/partitions.h>
17 #include <linux/mtd/rawnand.h>
203 static int tegra_nand_ooblayout_rs_ecc(struct mtd_info *mtd, int section,
206 struct nand_chip *chip = mtd_to_nand(mtd);
219 static int tegra_nand_ooblayout_no_free(struct mtd_info *mtd, int section,
230 static int tegra_nand_ooblayout_bch_ecc(struct mtd_info *mtd, int section,
233 struct nand_chip *chip = mtd_to_nand(mtd);
496 static int tegra_nand_page_xfer(struct mtd_info *mtd, struct nand_chip *chip,
521 addr1 |= mtd->writesize;
532 dma_addr = dma_map_single(ctrl->dev, buf, mtd->writesize, dir);
539 writel_relaxed(mtd->writesize - 1, ctrl->regs + DMA_CFG_A);
544 dma_addr_oob = dma_map_single(ctrl->dev, oob_buf, mtd->oobsize,
611 dma_unmap_single(ctrl->dev, dma_addr_oob, mtd->oobsize, dir);
614 dma_unmap_single(ctrl->dev, dma_addr, mtd->writesize, dir);
622 struct mtd_info *mtd = nand_to_mtd(chip);
625 return tegra_nand_page_xfer(mtd, chip, buf, oob_buf,
626 mtd->oobsize, page, true);
632 struct mtd_info *mtd = nand_to_mtd(chip);
635 return tegra_nand_page_xfer(mtd, chip, (void *)buf, oob_buf,
636 mtd->oobsize, page, false);
641 struct mtd_info *mtd = nand_to_mtd(chip);
643 return tegra_nand_page_xfer(mtd, chip, NULL, chip->oob_poi,
644 mtd->oobsize, page, true);
649 struct mtd_info *mtd = nand_to_mtd(chip);
651 return tegra_nand_page_xfer(mtd, chip, NULL, chip->oob_poi,
652 mtd->oobsize, page, false);
658 struct mtd_info *mtd = nand_to_mtd(chip);
667 ret = tegra_nand_page_xfer(mtd, chip, buf, oob_buf, 0, page, true);
711 mtd->ecc_stats.failed += hweight8(fail_sec_flag);
736 mtd->ecc_stats.failed++;
738 mtd->ecc_stats.corrected += ret;
759 mtd->ecc_stats.corrected += max_corr_cnt * hweight8(corr_sec_flag);
768 struct mtd_info *mtd = nand_to_mtd(chip);
774 ret = tegra_nand_page_xfer(mtd, chip, (void *)buf, oob_buf,
920 struct mtd_info *mtd = nand_to_mtd(chip);
929 chip->ecc.steps = mtd->writesize / chip->ecc.size;
947 if (mtd->writesize < 2048)
953 if (chip->ecc.algo == NAND_ECC_ALGO_BCH && mtd->writesize < 2048) {
959 ret = tegra_nand_select_strength(chip, mtd->oobsize);
976 mtd_set_ooblayout(mtd, &tegra_nand_oob_rs_ops);
997 mtd_set_ooblayout(mtd, &tegra_nand_oob_bch_ops);
1029 switch (mtd->writesize) {
1047 mtd->writesize);
1055 nand->config |= CONFIG_TAG_BYTE_SIZE(mtd->oobsize - 1);
1074 struct mtd_info *mtd;
1116 mtd = nand_to_mtd(chip);
1118 mtd->dev.parent = dev;
1119 mtd->owner = THIS_MODULE;
1123 if (!mtd->name)
1124 mtd->name = "tegra_nand";
1132 mtd_ooblayout_ecc(mtd, 0, &nand->ecc);
1134 ret = mtd_device_register(mtd, NULL, 0);
1136 dev_err(dev, "Failed to register mtd device: %d\n", ret);
1231 struct mtd_info *mtd = nand_to_mtd(chip);
1233 WARN_ON(mtd_device_unregister(mtd));