Lines Matching refs:mtd

155 static void set_addr(struct mtd_info *mtd, int column, int page_addr, int oob)  in set_addr()  argument
157 struct nand_chip *chip = mtd_to_nand(mtd); in set_addr()
195 static int fsl_elbc_run_command(struct mtd_info *mtd) in fsl_elbc_run_command() argument
197 struct nand_chip *chip = mtd_to_nand(mtd); in fsl_elbc_run_command()
279 static void fsl_elbc_cmdfunc(struct mtd_info *mtd, unsigned int command, in fsl_elbc_cmdfunc() argument
282 struct nand_chip *chip = mtd_to_nand(mtd); in fsl_elbc_cmdfunc()
305 set_addr(mtd, 0, page_addr, 0); in fsl_elbc_cmdfunc()
307 ctrl->read_bytes = mtd->writesize + mtd->oobsize; in fsl_elbc_cmdfunc()
311 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
319 out_be32(&lbc->fbcr, mtd->oobsize - column); in fsl_elbc_cmdfunc()
320 set_addr(mtd, column, page_addr, 1); in fsl_elbc_cmdfunc()
322 ctrl->read_bytes = mtd->writesize + mtd->oobsize; in fsl_elbc_cmdfunc()
325 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
346 set_addr(mtd, 0, 0, 0); in fsl_elbc_cmdfunc()
347 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
354 set_addr(mtd, 0, page_addr, 0); in fsl_elbc_cmdfunc()
373 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
408 if (column >= mtd->writesize) { in fsl_elbc_cmdfunc()
410 column -= mtd->writesize; in fsl_elbc_cmdfunc()
423 set_addr(mtd, column, page_addr, ctrl->oob); in fsl_elbc_cmdfunc()
437 ctrl->index != mtd->writesize + mtd->oobsize) in fsl_elbc_cmdfunc()
442 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
455 set_addr(mtd, 0, 0, 0); in fsl_elbc_cmdfunc()
458 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
471 fsl_elbc_run_command(mtd); in fsl_elbc_cmdfunc()
480 static void fsl_elbc_select_chip(struct mtd_info *mtd, int chip) in fsl_elbc_select_chip() argument
490 static void fsl_elbc_write_buf(struct mtd_info *mtd, const u8 *buf, int len) in fsl_elbc_write_buf() argument
492 struct nand_chip *chip = mtd_to_nand(mtd); in fsl_elbc_write_buf()
495 unsigned int bufsize = mtd->writesize + mtd->oobsize; in fsl_elbc_write_buf()
527 static u8 fsl_elbc_read_byte(struct mtd_info *mtd) in fsl_elbc_read_byte() argument
529 struct nand_chip *chip = mtd_to_nand(mtd); in fsl_elbc_read_byte()
544 static void fsl_elbc_read_buf(struct mtd_info *mtd, u8 *buf, int len) in fsl_elbc_read_buf() argument
546 struct nand_chip *chip = mtd_to_nand(mtd); in fsl_elbc_read_buf()
567 static int fsl_elbc_wait(struct mtd_info *mtd, struct nand_chip *chip) in fsl_elbc_wait() argument
583 set_addr(mtd, 0, 0, 0); in fsl_elbc_wait()
586 fsl_elbc_run_command(mtd); in fsl_elbc_wait()
595 return fsl_elbc_read_byte(mtd); in fsl_elbc_wait()
598 static int fsl_elbc_read_page(struct mtd_info *mtd, struct nand_chip *chip, in fsl_elbc_read_page() argument
601 fsl_elbc_read_buf(mtd, buf, mtd->writesize); in fsl_elbc_read_page()
602 fsl_elbc_read_buf(mtd, chip->oob_poi, mtd->oobsize); in fsl_elbc_read_page()
604 if (fsl_elbc_wait(mtd, chip) & NAND_STATUS_FAIL) in fsl_elbc_read_page()
605 mtd->ecc_stats.failed++; in fsl_elbc_read_page()
613 static int fsl_elbc_write_page(struct mtd_info *mtd, struct nand_chip *chip, in fsl_elbc_write_page() argument
617 fsl_elbc_write_buf(mtd, buf, mtd->writesize); in fsl_elbc_write_page()
618 fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize); in fsl_elbc_write_page()
628 static int fsl_elbc_write_subpage(struct mtd_info *mtd, struct nand_chip *chip, in fsl_elbc_write_subpage() argument
632 fsl_elbc_write_buf(mtd, buf, mtd->writesize); in fsl_elbc_write_subpage()
633 fsl_elbc_write_buf(mtd, chip->oob_poi, mtd->oobsize); in fsl_elbc_write_subpage()
660 struct mtd_info *mtd; in fsl_elbc_chip_init() local
701 mtd = nand_to_mtd(nand); in fsl_elbc_chip_init()
752 ret = nand_scan_ident(mtd, 1, NULL); in fsl_elbc_chip_init()
757 if (mtd->writesize == 2048) { in fsl_elbc_chip_init()
779 } else if (mtd->writesize == 512) { in fsl_elbc_chip_init()
787 ret = nand_scan_tail(mtd); in fsl_elbc_chip_init()
791 ret = nand_register(devnum, mtd); in fsl_elbc_chip_init()