Lines Matching refs:mtd

23 #include <linux/mtd/mtd.h>
24 #include <linux/mtd/rawnand.h>
25 #include <linux/mtd/partitions.h>
902 static void brcmnand_set_cmd_addr(struct mtd_info *mtd, u64 addr)
904 struct nand_chip *chip = mtd_to_nand(mtd);
1247 * Set mtd->ooblayout to the appropriate mtd_ooblayout_ops given
1251 static int brcmnand_hamming_ooblayout_ecc(struct mtd_info *mtd, int section,
1254 struct nand_chip *chip = mtd_to_nand(mtd);
1269 static int brcmnand_hamming_ooblayout_free(struct mtd_info *mtd, int section,
1272 struct nand_chip *chip = mtd_to_nand(mtd);
1309 static int brcmnand_bch_ooblayout_ecc(struct mtd_info *mtd, int section,
1312 struct nand_chip *chip = mtd_to_nand(mtd);
1327 static int brcmnand_bch_ooblayout_free_lp(struct mtd_info *mtd, int section,
1330 struct nand_chip *chip = mtd_to_nand(mtd);
1353 static int brcmnand_bch_ooblayout_free_sp(struct mtd_info *mtd, int section,
1356 struct nand_chip *chip = mtd_to_nand(mtd);
1389 struct mtd_info *mtd = nand_to_mtd(&host->chip);
1400 mtd_set_ooblayout(mtd, &brcmnand_hamming_ooblayout_ops);
1412 mtd_set_ooblayout(mtd, &brcmnand_bch_sp_ooblayout_ops);
1414 mtd_set_ooblayout(mtd, &brcmnand_bch_lp_ooblayout_ops);
1426 static void brcmnand_wp(struct mtd_info *mtd, int wp)
1428 struct nand_chip *chip = mtd_to_nand(mtd);
1714 struct mtd_info *mtd = nand_to_mtd(chip);
1718 if (mtd->oops_panic_write || ctrl->irq < 0) {
1763 struct mtd_info *mtd = nand_to_mtd(chip);
1765 brcmnand_set_cmd_addr(mtd, 0);
2039 static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip,
2050 brcmnand_set_cmd_addr(mtd, addr);
2066 mtd->oobsize / trans,
2101 static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd,
2123 mtd_ooblayout_ecc(mtd, i, &ecc);
2139 static int brcmnand_read(struct mtd_info *mtd, struct nand_chip *chip,
2172 memset(oob, 0x99, mtd->oobsize);
2174 err = brcmnand_read_by_pio(mtd, chip, addr, trans, buf,
2200 err = brcmstb_nand_verify_erased_page(mtd, chip, buf,
2209 mtd->ecc_stats.failed++;
2219 err = brcmnand_read_by_pio(mtd, chip, addr, trans, buf,
2224 mtd->ecc_stats.corrected += corrected;
2226 return max(mtd->bitflip_threshold, corrected);
2235 struct mtd_info *mtd = nand_to_mtd(chip);
2242 return brcmnand_read(mtd, chip, host->last_addr,
2243 mtd->writesize >> FC_SHIFT, (u32 *)buf, oob);
2250 struct mtd_info *mtd = nand_to_mtd(chip);
2258 ret = brcmnand_read(mtd, chip, host->last_addr,
2259 mtd->writesize >> FC_SHIFT, (u32 *)buf, oob);
2266 struct mtd_info *mtd = nand_to_mtd(chip);
2268 return brcmnand_read(mtd, chip, (u64)page << chip->page_shift,
2269 mtd->writesize >> FC_SHIFT,
2275 struct mtd_info *mtd = nand_to_mtd(chip);
2279 brcmnand_read(mtd, chip, (u64)page << chip->page_shift,
2280 mtd->writesize >> FC_SHIFT,
2286 static int brcmnand_write(struct mtd_info *mtd, struct nand_chip *chip,
2291 unsigned int i, j, trans = mtd->writesize >> FC_SHIFT;
2301 brcmnand_wp(mtd, 0);
2306 if (mtd->oops_panic_write)
2311 if (ctrl->dma_trans(host, addr, (u32 *)buf, oob, mtd->writesize,
2321 brcmnand_set_cmd_addr(mtd, addr);
2337 mtd->oobsize / trans,
2353 brcmnand_wp(mtd, 1);
2360 struct mtd_info *mtd = nand_to_mtd(chip);
2367 return brcmnand_write(mtd, chip, host->last_addr, (const u32 *)buf, oob);
2373 struct mtd_info *mtd = nand_to_mtd(chip);
2381 ret = brcmnand_write(mtd, chip, host->last_addr, (const u32 *)buf, oob);
2396 struct mtd_info *mtd = nand_to_mtd(chip);
2401 ret = brcmnand_write(mtd, chip, (u64)page << chip->page_shift, NULL,
2493 struct mtd_info *mtd = nand_to_mtd(chip);
2515 brcmnand_wp(mtd, 1);
2521 brcmnand_wp(mtd, 0);
2530 brcmnand_wp(mtd, 1);
2673 struct mtd_info *mtd = nand_to_mtd(&host->chip);
2710 cfg->spare_area_size = mtd->oobsize /
2711 (mtd->writesize >> FC_SHIFT);
2718 * Set mtd and memorg oobsize to be consistent with controller's
2721 mtd->oobsize = cfg->spare_area_size * (mtd->writesize >> FC_SHIFT);
2722 memorg->oobsize = mtd->oobsize;
2724 cfg->device_size = mtd->size;
2725 cfg->block_size = mtd->erasesize;
2726 cfg->page_size = mtd->writesize;
2729 cfg->blk_adr_bytes = get_blk_adr_bytes(mtd->size, mtd->writesize);
2793 if (mtd->writesize > 512)
2827 struct mtd_info *mtd = nand_to_mtd(chip);
2848 mtd->bitflip_threshold = 1;
2871 struct mtd_info *mtd;
2876 mtd = nand_to_mtd(&host->chip);
2880 mtd->name = devm_kasprintf(dev, GFP_KERNEL, "brcmnand.%d",
2882 if (!mtd->name)
2885 mtd->owner = THIS_MODULE;
2886 mtd->dev.parent = dev;
2914 ret = mtd_device_parse_register(mtd, part_probe_types, NULL, NULL, 0);