Lines Matching refs:mtd

153 	void (*select_chip)(struct mtd_info *mtd, int chip);
154 int (*correct_data)(struct mtd_info *mtd, u_char *dat,
176 struct mtd_info mtd; member
500 static void send_page_v3(struct mtd_info *mtd, unsigned int ops) in send_page_v3() argument
502 struct nand_chip *nand_chip = mtd->priv; in send_page_v3()
516 static void send_page_v2(struct mtd_info *mtd, unsigned int ops) in send_page_v2() argument
518 struct nand_chip *nand_chip = mtd->priv; in send_page_v2()
530 static void send_page_v1(struct mtd_info *mtd, unsigned int ops) in send_page_v1() argument
532 struct nand_chip *nand_chip = mtd->priv; in send_page_v1()
536 if (mtd->writesize > 512) in send_page_v1()
613 static int mxc_nand_dev_ready(struct mtd_info *mtd) in mxc_nand_dev_ready() argument
622 static void mxc_nand_enable_hwecc(struct mtd_info *mtd, int mode) in mxc_nand_enable_hwecc() argument
630 static int mxc_nand_correct_data_v1(struct mtd_info *mtd, u_char *dat, in mxc_nand_correct_data_v1() argument
633 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_correct_data_v1()
651 static int mxc_nand_correct_data_v2_v3(struct mtd_info *mtd, u_char *dat, in mxc_nand_correct_data_v2_v3() argument
654 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_correct_data_v2_v3()
664 no_subpages = mtd->writesize >> 9; in mxc_nand_correct_data_v2_v3()
684 static int mxc_nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat, in mxc_nand_calculate_ecc() argument
690 static u_char mxc_nand_read_byte(struct mtd_info *mtd) in mxc_nand_read_byte() argument
692 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_read_byte()
714 static uint16_t mxc_nand_read_word(struct mtd_info *mtd) in mxc_nand_read_word() argument
716 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_read_word()
729 static void mxc_nand_write_buf(struct mtd_info *mtd, in mxc_nand_write_buf() argument
732 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_write_buf()
735 int n = mtd->oobsize + mtd->writesize - col; in mxc_nand_write_buf()
748 static void mxc_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len) in mxc_nand_read_buf() argument
750 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_read_buf()
753 int n = mtd->oobsize + mtd->writesize - col; in mxc_nand_read_buf()
764 static void mxc_nand_select_chip_v1_v3(struct mtd_info *mtd, int chip) in mxc_nand_select_chip_v1_v3() argument
766 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_select_chip_v1_v3()
785 static void mxc_nand_select_chip_v2(struct mtd_info *mtd, int chip) in mxc_nand_select_chip_v2() argument
787 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_select_chip_v2()
812 static void copy_spare(struct mtd_info *mtd, bool bfrom) in copy_spare() argument
814 struct nand_chip *this = mtd->priv; in copy_spare()
817 u16 n = mtd->writesize >> 9; in copy_spare()
818 u8 *d = host->data_buf + mtd->writesize; in copy_spare()
822 j = (mtd->oobsize / n >> 1) << 1; in copy_spare()
829 memcpy32_fromio(d + i * j, s + i * t, mtd->oobsize - i * j); in copy_spare()
835 memcpy32_toio(&s[i * t], &d[i * j], mtd->oobsize - i * j); in copy_spare()
845 static void mxc_do_addr_cycle(struct mtd_info *mtd, int column, int page_addr) in mxc_do_addr_cycle() argument
847 struct nand_chip *nand_chip = mtd->priv; in mxc_do_addr_cycle()
854 if (mtd->writesize > 512) in mxc_do_addr_cycle()
866 if (mtd->writesize > 512) { in mxc_do_addr_cycle()
867 if (mtd->size >= 0x10000000) { in mxc_do_addr_cycle()
881 if (mtd->size >= 0x4000000) { in mxc_do_addr_cycle()
902 static int get_eccsize(struct mtd_info *mtd) in get_eccsize() argument
906 oobbytes_per_512 = mtd->oobsize * 512 / mtd->writesize; in get_eccsize()
914 static void preset_v1(struct mtd_info *mtd) in preset_v1() argument
916 struct nand_chip *nand_chip = mtd->priv; in preset_v1()
920 if (nand_chip->ecc.mode == NAND_ECC_HW && mtd->writesize) in preset_v1()
942 static void preset_v2(struct mtd_info *mtd) in preset_v2() argument
944 struct nand_chip *nand_chip = mtd->priv; in preset_v2()
953 if (mtd->writesize) { in preset_v2()
954 uint16_t pages_per_block = mtd->erasesize / mtd->writesize; in preset_v2()
959 host->eccsize = get_eccsize(mtd); in preset_v2()
988 static void preset_v3(struct mtd_info *mtd) in preset_v3() argument
990 struct nand_chip *chip = mtd->priv; in preset_v3()
1011 NFC_V3_CONFIG2_SPAS(mtd->oobsize >> 1) | in preset_v3()
1018 if (mtd->writesize == 2048) { in preset_v3()
1021 } else if (mtd->writesize == 4096) { in preset_v3()
1029 if (mtd->writesize) { in preset_v3()
1034 ffs(mtd->erasesize / mtd->writesize) - 6, in preset_v3()
1036 host->eccsize = get_eccsize(mtd); in preset_v3()
1059 static void mxc_nand_command(struct mtd_info *mtd, unsigned command, in mxc_nand_command() argument
1062 struct nand_chip *nand_chip = mtd->priv; in mxc_nand_command()
1074 host->devtype_data->preset(mtd); in mxc_nand_command()
1086 mxc_do_addr_cycle(mtd, column, page_addr); in mxc_nand_command()
1094 host->buf_start = column + mtd->writesize; in mxc_nand_command()
1102 mxc_do_addr_cycle(mtd, 0, page_addr); in mxc_nand_command()
1104 if (mtd->writesize > 512) in mxc_nand_command()
1108 host->devtype_data->send_page(mtd, NFC_OUTPUT); in mxc_nand_command()
1111 mtd->writesize); in mxc_nand_command()
1112 copy_spare(mtd, true); in mxc_nand_command()
1116 if (column >= mtd->writesize) in mxc_nand_command()
1118 mxc_nand_command(mtd, NAND_CMD_READ0, 0, page_addr); in mxc_nand_command()
1126 mxc_do_addr_cycle(mtd, 0, page_addr); in mxc_nand_command()
1130 memcpy32_toio(host->main_area0, host->data_buf, mtd->writesize); in mxc_nand_command()
1131 copy_spare(mtd, false); in mxc_nand_command()
1132 host->devtype_data->send_page(mtd, NFC_INPUT); in mxc_nand_command()
1137 mxc_do_addr_cycle(mtd, column, page_addr); in mxc_nand_command()
1142 mxc_do_addr_cycle(mtd, column, page_addr); in mxc_nand_command()
1153 mxc_do_addr_cycle(mtd, column, page_addr); in mxc_nand_command()
1158 mxc_do_addr_cycle(mtd, column, page_addr); in mxc_nand_command()
1159 host->devtype_data->send_page(mtd, NFC_OUTPUT); in mxc_nand_command()
1432 struct mtd_info *mtd; in mxcnd_probe() local
1451 mtd = &host->mtd; in mxcnd_probe()
1452 mtd->priv = this; in mxcnd_probe()
1453 mtd->owner = THIS_MODULE; in mxcnd_probe()
1454 mtd->dev.parent = &pdev->dev; in mxcnd_probe()
1455 mtd->name = DRIVER_NAME; in mxcnd_probe()
1571 if (nand_scan_ident(mtd, is_imx25_nfc(host) ? 4 : 1, NULL)) { in mxcnd_probe()
1578 host->data_buf = devm_kzalloc(&pdev->dev, mtd->writesize + mtd->oobsize, in mxcnd_probe()
1586 host->devtype_data->preset(mtd); in mxcnd_probe()
1588 if (mtd->writesize == 2048) in mxcnd_probe()
1590 else if (mtd->writesize == 4096) in mxcnd_probe()
1601 if (nand_scan_tail(mtd)) { in mxcnd_probe()
1607 mtd_device_parse_register(mtd, part_probes, in mxcnd_probe()
1629 nand_release(&host->mtd); in mxcnd_remove()