Lines Matching refs:mtd

51 	struct mtd_info mtd;  member
145 static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob) in set_addr() argument
147 struct nand_chip *chip = mtd->priv; in set_addr()
196 static int fsl_elbc_run_command(struct mtd_info *mtd) in fsl_elbc_run_command() argument
198 struct nand_chip *chip = mtd->priv; in fsl_elbc_run_command()
245 if (elbc_fcm_ctrl->read_bytes == mtd->writesize + mtd->oobsize) { in fsl_elbc_run_command()
261 mtd->ecc_stats.corrected++; in fsl_elbc_run_command()
300 static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command, in fsl_elbc_cmdfunc() argument
303 struct nand_chip *chip = mtd->priv; in fsl_elbc_cmdfunc()
329 set_addr(mtd, 0, page_addr, 0); in fsl_elbc_cmdfunc()
331 elbc_fcm_ctrl->read_bytes = mtd->writesize + mtd->oobsize; in fsl_elbc_cmdfunc()
335 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
344 out_be32(&lbc->fbcr, mtd->oobsize - column); in fsl_elbc_cmdfunc()
345 set_addr(mtd, column, page_addr, 1); in fsl_elbc_cmdfunc()
347 elbc_fcm_ctrl->read_bytes = mtd->writesize + mtd->oobsize; in fsl_elbc_cmdfunc()
350 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
369 set_addr(mtd, 0, 0, 0); in fsl_elbc_cmdfunc()
370 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
378 set_addr(mtd, 0, page_addr, 0); in fsl_elbc_cmdfunc()
401 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
415 if (column >= mtd->writesize) { in fsl_elbc_cmdfunc()
417 column -= mtd->writesize; in fsl_elbc_cmdfunc()
457 set_addr(mtd, column, page_addr, elbc_fcm_ctrl->oob); in fsl_elbc_cmdfunc()
472 elbc_fcm_ctrl->index != mtd->writesize + mtd->oobsize) in fsl_elbc_cmdfunc()
478 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
490 set_addr(mtd, 0, 0, 0); in fsl_elbc_cmdfunc()
493 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
506 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
516 static void fsl_elbc_select_chip(struct mtd_info *mtd, int chip) in fsl_elbc_select_chip() argument
526 static void fsl_elbc_write_buf(struct mtd_info *mtd, const u8 *buf, int len) in fsl_elbc_write_buf() argument
528 struct nand_chip *chip = mtd->priv; in fsl_elbc_write_buf()
531 unsigned int bufsize = mtd->writesize + mtd->oobsize; in fsl_elbc_write_buf()
564 static u8 fsl_elbc_read_byte(struct mtd_info *mtd) in fsl_elbc_read_byte() argument
566 struct nand_chip *chip = mtd->priv; in fsl_elbc_read_byte()
581 static void fsl_elbc_read_buf(struct mtd_info *mtd, u8 *buf, int len) in fsl_elbc_read_buf() argument
583 struct nand_chip *chip = mtd->priv; in fsl_elbc_read_buf()
606 static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *chip) in fsl_elbc_wait() argument
620 static int fsl_elbc_chip_init_tail(struct mtd_info *mtd) in fsl_elbc_chip_init_tail() argument
622 struct nand_chip *chip = mtd->priv; in fsl_elbc_chip_init_tail()
663 dev_dbg(priv->dev, "fsl_elbc_init: mtd->flags = %08x\n", mtd->flags); in fsl_elbc_chip_init_tail()
664 dev_dbg(priv->dev, "fsl_elbc_init: mtd->size = %lld\n", mtd->size); in fsl_elbc_chip_init_tail()
666 mtd->erasesize); in fsl_elbc_chip_init_tail()
668 mtd->writesize); in fsl_elbc_chip_init_tail()
670 mtd->oobsize); in fsl_elbc_chip_init_tail()
673 if (mtd->writesize == 512) { in fsl_elbc_chip_init_tail()
676 } else if (mtd->writesize == 2048) { in fsl_elbc_chip_init_tail()
690 mtd->writesize); in fsl_elbc_chip_init_tail()
697 static int fsl_elbc_read_page(struct mtd_info *mtd, struct nand_chip *chip, in fsl_elbc_read_page() argument
704 fsl_elbc_read_buf(mtd, buf, mtd->writesize); in fsl_elbc_read_page()
706 fsl_elbc_read_buf(mtd, chip->oob_poi, mtd->oobsize); in fsl_elbc_read_page()
708 if (fsl_elbc_wait(mtd, chip) & NAND_STATUS_FAIL) in fsl_elbc_read_page()
709 mtd->ecc_stats.failed++; in fsl_elbc_read_page()
717 static int fsl_elbc_write_page(struct mtd_info *mtd, struct nand_chip *chip, in fsl_elbc_write_page() argument
720 fsl_elbc_write_buf(mtd, buf, mtd->writesize); in fsl_elbc_write_page()
721 fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize); in fsl_elbc_write_page()
729 static int fsl_elbc_write_subpage(struct mtd_info *mtd, struct nand_chip *chip, in fsl_elbc_write_subpage() argument
733 fsl_elbc_write_buf(mtd, buf, mtd->writesize); in fsl_elbc_write_subpage()
734 fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize); in fsl_elbc_write_subpage()
749 priv->mtd.priv = chip; in fsl_elbc_chip_init()
750 priv->mtd.dev.parent = priv->dev; in fsl_elbc_chip_init()
800 nand_release(&priv->mtd); in fsl_elbc_chip_remove()
802 kfree(priv->mtd.name); in fsl_elbc_chip_remove()
890 priv->mtd.name = kasprintf(GFP_KERNEL, "%llx.flash", (u64)res.start); in fsl_elbc_nand_probe()
891 if (!priv->mtd.name) { in fsl_elbc_nand_probe()
900 ret = nand_scan_ident(&priv->mtd, 1, NULL); in fsl_elbc_nand_probe()
904 ret = fsl_elbc_chip_init_tail(&priv->mtd); in fsl_elbc_nand_probe()
908 ret = nand_scan_tail(&priv->mtd); in fsl_elbc_nand_probe()
914 mtd_device_parse_register(&priv->mtd, part_probe_types, &ppdata, in fsl_elbc_nand_probe()