Lines Matching refs:mtd
182 struct mtd_info mtd; member
907 static void brcmnand_wp(struct mtd_info *mtd, int wp) in brcmnand_wp() argument
909 struct nand_chip *chip = mtd->priv; in brcmnand_wp()
1067 static void brcmnand_cmd_ctrl(struct mtd_info *mtd, int dat, in brcmnand_cmd_ctrl() argument
1073 static int brcmnand_waitfunc(struct mtd_info *mtd, struct nand_chip *this) in brcmnand_waitfunc() argument
1075 struct nand_chip *chip = mtd->priv; in brcmnand_waitfunc()
1110 struct mtd_info *mtd = &host->mtd; in brcmnand_low_level_op() local
1143 return brcmnand_waitfunc(mtd, chip); in brcmnand_low_level_op()
1146 static void brcmnand_cmdfunc(struct mtd_info *mtd, unsigned command, in brcmnand_cmdfunc() argument
1149 struct nand_chip *chip = mtd->priv; in brcmnand_cmdfunc()
1184 brcmnand_wp(mtd, 0); in brcmnand_cmdfunc()
1219 brcmnand_waitfunc(mtd, chip); in brcmnand_cmdfunc()
1244 brcmnand_wp(mtd, 1); in brcmnand_cmdfunc()
1247 static uint8_t brcmnand_read_byte(struct mtd_info *mtd) in brcmnand_read_byte() argument
1249 struct nand_chip *chip = mtd->priv; in brcmnand_read_byte()
1283 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, addr, -1); in brcmnand_read_byte()
1305 static void brcmnand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len) in brcmnand_read_buf() argument
1310 *buf = brcmnand_read_byte(mtd); in brcmnand_read_buf()
1313 static void brcmnand_write_buf(struct mtd_info *mtd, const uint8_t *buf, in brcmnand_write_buf() argument
1317 struct nand_chip *chip = mtd->priv; in brcmnand_write_buf()
1424 static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read_by_pio() argument
1446 brcmnand_waitfunc(mtd, chip); in brcmnand_read_by_pio()
1459 mtd->oobsize / trans, in brcmnand_read_by_pio()
1486 static int brcmnand_read(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read() argument
1509 memset(oob, 0x99, mtd->oobsize); in brcmnand_read()
1511 err = brcmnand_read_by_pio(mtd, chip, addr, trans, buf, in brcmnand_read()
1518 mtd->ecc_stats.failed++; in brcmnand_read()
1528 mtd->ecc_stats.corrected += corrected; in brcmnand_read()
1530 return max(mtd->bitflip_threshold, corrected); in brcmnand_read()
1536 static int brcmnand_read_page(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read_page() argument
1542 return brcmnand_read(mtd, chip, host->last_addr, in brcmnand_read_page()
1543 mtd->writesize >> FC_SHIFT, (u32 *)buf, oob); in brcmnand_read_page()
1546 static int brcmnand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read_page_raw() argument
1554 ret = brcmnand_read(mtd, chip, host->last_addr, in brcmnand_read_page_raw()
1555 mtd->writesize >> FC_SHIFT, (u32 *)buf, oob); in brcmnand_read_page_raw()
1560 static int brcmnand_read_oob(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read_oob() argument
1563 return brcmnand_read(mtd, chip, (u64)page << chip->page_shift, in brcmnand_read_oob()
1564 mtd->writesize >> FC_SHIFT, in brcmnand_read_oob()
1568 static int brcmnand_read_oob_raw(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read_oob_raw() argument
1574 brcmnand_read(mtd, chip, (u64)page << chip->page_shift, in brcmnand_read_oob_raw()
1575 mtd->writesize >> FC_SHIFT, in brcmnand_read_oob_raw()
1581 static int brcmnand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_read_subpage() argument
1587 return brcmnand_read(mtd, chip, host->last_addr + data_offs, in brcmnand_read_subpage()
1591 static int brcmnand_write(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_write() argument
1596 unsigned int i, j, trans = mtd->writesize >> FC_SHIFT; in brcmnand_write()
1606 brcmnand_wp(mtd, 0); in brcmnand_write()
1613 mtd->writesize, CMD_PROGRAM_PAGE)) in brcmnand_write()
1642 mtd->oobsize / trans, in brcmnand_write()
1648 status = brcmnand_waitfunc(mtd, chip); in brcmnand_write()
1658 brcmnand_wp(mtd, 1); in brcmnand_write()
1662 static int brcmnand_write_page(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_write_page() argument
1668 brcmnand_write(mtd, chip, host->last_addr, (const u32 *)buf, oob); in brcmnand_write_page()
1672 static int brcmnand_write_page_raw(struct mtd_info *mtd, in brcmnand_write_page_raw() argument
1680 brcmnand_write(mtd, chip, host->last_addr, (const u32 *)buf, oob); in brcmnand_write_page_raw()
1685 static int brcmnand_write_oob(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_write_oob() argument
1688 return brcmnand_write(mtd, chip, (u64)page << chip->page_shift, in brcmnand_write_oob()
1692 static int brcmnand_write_oob_raw(struct mtd_info *mtd, struct nand_chip *chip, in brcmnand_write_oob_raw() argument
1699 ret = brcmnand_write(mtd, chip, (u64)page << chip->page_shift, NULL, in brcmnand_write_oob_raw()
1841 struct mtd_info *mtd = &host->mtd; in brcmnand_setup_dev() local
1856 cfg->spare_area_size = mtd->oobsize / in brcmnand_setup_dev()
1857 (mtd->writesize >> FC_SHIFT); in brcmnand_setup_dev()
1867 mtd->oobsize = cfg->spare_area_size * (mtd->writesize >> FC_SHIFT); in brcmnand_setup_dev()
1869 cfg->device_size = mtd->size; in brcmnand_setup_dev()
1870 cfg->block_size = mtd->erasesize; in brcmnand_setup_dev()
1871 cfg->page_size = mtd->writesize; in brcmnand_setup_dev()
1874 cfg->blk_adr_bytes = get_blk_adr_bytes(mtd->size, mtd->writesize); in brcmnand_setup_dev()
1905 if (mtd->writesize > 512) in brcmnand_setup_dev()
1945 struct mtd_info *mtd; in brcmnand_init_cs() local
1957 mtd = &host->mtd; in brcmnand_init_cs()
1962 mtd->priv = chip; in brcmnand_init_cs()
1963 mtd->name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "brcmnand.%d", in brcmnand_init_cs()
1965 mtd->owner = THIS_MODULE; in brcmnand_init_cs()
1966 mtd->dev.parent = &pdev->dev; in brcmnand_init_cs()
2000 if (nand_scan_ident(mtd, 1, NULL)) in brcmnand_init_cs()
2019 mtd->bitflip_threshold = 1; in brcmnand_init_cs()
2025 if (nand_scan_tail(mtd)) in brcmnand_init_cs()
2028 return mtd_device_parse_register(mtd, NULL, &ppdata, NULL, 0); in brcmnand_init_cs()
2102 struct mtd_info *mtd = &host->mtd; in brcmnand_resume() local
2103 struct nand_chip *chip = mtd->priv; in brcmnand_resume()
2108 chip->cmdfunc(mtd, NAND_CMD_RESET, -1, -1); in brcmnand_resume()
2301 nand_release(&host->mtd); in brcmnand_remove()