Lines Matching refs:mtd

119 	struct mtd_info		mtd;  member
183 static void atmel_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, unsigned int ctrl) in atmel_nand_cmd_ctrl() argument
185 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_cmd_ctrl()
206 static int atmel_nand_device_ready(struct mtd_info *mtd) in atmel_nand_device_ready() argument
208 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_device_ready()
216 static int atmel_nand_set_enable_ready_pins(struct mtd_info *mtd) in atmel_nand_set_enable_ready_pins() argument
218 struct nand_chip *chip = mtd->priv; in atmel_nand_set_enable_ready_pins()
268 static void atmel_read_buf8(struct mtd_info *mtd, u8 *buf, int len) in atmel_read_buf8() argument
270 struct nand_chip *nand_chip = mtd->priv; in atmel_read_buf8()
281 static void atmel_read_buf16(struct mtd_info *mtd, u8 *buf, int len) in atmel_read_buf16() argument
283 struct nand_chip *nand_chip = mtd->priv; in atmel_read_buf16()
294 static void atmel_write_buf8(struct mtd_info *mtd, const u8 *buf, int len) in atmel_write_buf8() argument
296 struct nand_chip *nand_chip = mtd->priv; in atmel_write_buf8()
301 static void atmel_write_buf16(struct mtd_info *mtd, const u8 *buf, int len) in atmel_write_buf16() argument
303 struct nand_chip *nand_chip = mtd->priv; in atmel_write_buf16()
321 if (host->mtd.writesize > 2048) in nfc_set_sram_bank()
347 static int atmel_nand_dma_op(struct mtd_info *mtd, void *buf, int len, in atmel_nand_dma_op() argument
355 struct nand_chip *chip = mtd->priv; in atmel_nand_dma_op()
426 static void atmel_read_buf(struct mtd_info *mtd, u8 *buf, int len) in atmel_read_buf() argument
428 struct nand_chip *chip = mtd->priv; in atmel_read_buf()
431 if (use_dma && len > mtd->oobsize) in atmel_read_buf()
433 if (atmel_nand_dma_op(mtd, buf, len, 1) == 0) in atmel_read_buf()
437 atmel_read_buf16(mtd, buf, len); in atmel_read_buf()
439 atmel_read_buf8(mtd, buf, len); in atmel_read_buf()
442 static void atmel_write_buf(struct mtd_info *mtd, const u8 *buf, int len) in atmel_write_buf() argument
444 struct nand_chip *chip = mtd->priv; in atmel_write_buf()
447 if (use_dma && len > mtd->oobsize) in atmel_write_buf()
449 if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) == 0) in atmel_write_buf()
453 atmel_write_buf16(mtd, buf, len); in atmel_write_buf()
455 atmel_write_buf8(mtd, buf, len); in atmel_write_buf()
534 static void pmecc_gen_syndrome(struct mtd_info *mtd, int sector) in pmecc_gen_syndrome() argument
536 struct nand_chip *nand_chip = mtd->priv; in pmecc_gen_syndrome()
551 static void pmecc_substitute(struct mtd_info *mtd) in pmecc_substitute() argument
553 struct nand_chip *nand_chip = mtd->priv; in pmecc_substitute()
593 static void pmecc_get_sigma(struct mtd_info *mtd) in pmecc_get_sigma() argument
595 struct nand_chip *nand_chip = mtd->priv; in pmecc_get_sigma()
751 static int pmecc_err_location(struct mtd_info *mtd) in pmecc_err_location() argument
753 struct nand_chip *nand_chip = mtd->priv; in pmecc_err_location()
802 static void pmecc_correct_data(struct mtd_info *mtd, uint8_t *buf, uint8_t *ecc, in pmecc_correct_data() argument
805 struct nand_chip *nand_chip = mtd->priv; in pmecc_correct_data()
848 static int pmecc_correction(struct mtd_info *mtd, u32 pmecc_stat, uint8_t *buf, in pmecc_correction() argument
851 struct nand_chip *nand_chip = mtd->priv; in pmecc_correction()
873 pmecc_gen_syndrome(mtd, i); in pmecc_correction()
874 pmecc_substitute(mtd); in pmecc_correction()
875 pmecc_get_sigma(mtd); in pmecc_correction()
877 err_nbr = pmecc_err_location(mtd); in pmecc_correction()
880 mtd->ecc_stats.failed++; in pmecc_correction()
883 pmecc_correct_data(mtd, buf_pos, ecc, i, in pmecc_correction()
885 mtd->ecc_stats.corrected += err_nbr; in pmecc_correction()
919 static int atmel_nand_pmecc_read_page(struct mtd_info *mtd, in atmel_nand_pmecc_read_page() argument
933 chip->read_buf(mtd, buf, eccsize); in atmel_nand_pmecc_read_page()
934 chip->read_buf(mtd, oob, mtd->oobsize); in atmel_nand_pmecc_read_page()
947 bitflips = pmecc_correction(mtd, stat, buf, &oob[eccpos[0]]); in atmel_nand_pmecc_read_page()
956 static int atmel_nand_pmecc_write_page(struct mtd_info *mtd, in atmel_nand_pmecc_write_page() argument
967 chip->write_buf(mtd, (u8 *)buf, mtd->writesize); in atmel_nand_pmecc_write_page()
988 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in atmel_nand_pmecc_write_page()
993 static void atmel_pmecc_core_init(struct mtd_info *mtd) in atmel_pmecc_core_init() argument
995 struct nand_chip *nand_chip = mtd->priv; in atmel_pmecc_core_init()
1046 pmecc_writel(host->ecc, SAREA, mtd->oobsize - 1); in atmel_pmecc_core_init()
1162 struct mtd_info *mtd = &host->mtd; in atmel_pmecc_nand_init_params() local
1234 switch (mtd->writesize) { in atmel_pmecc_nand_init_params()
1240 if (sector_size > mtd->writesize) { in atmel_pmecc_nand_init_params()
1255 nand_chip->ecc.steps = mtd->writesize / sector_size; in atmel_pmecc_nand_init_params()
1259 mtd->oobsize - PMECC_OOB_RESERVED_BYTES) { in atmel_pmecc_nand_init_params()
1265 mtd->oobsize, in atmel_pmecc_nand_init_params()
1291 atmel_pmecc_core_init(mtd); in atmel_pmecc_nand_init_params()
1308 static int atmel_nand_calculate(struct mtd_info *mtd, in atmel_nand_calculate() argument
1311 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_calculate()
1338 static int atmel_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip, in atmel_nand_read_page() argument
1363 chip->read_buf(mtd, p, eccsize); in atmel_nand_read_page()
1373 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, in atmel_nand_read_page()
1374 mtd->writesize + eccpos[0], -1); in atmel_nand_read_page()
1379 chip->read_buf(mtd, ecc_pos, eccbytes); in atmel_nand_read_page()
1382 stat = chip->ecc.correct(mtd, p, oob, NULL); in atmel_nand_read_page()
1385 mtd->ecc_stats.failed++; in atmel_nand_read_page()
1387 mtd->ecc_stats.corrected += stat; in atmel_nand_read_page()
1392 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, mtd->writesize, -1); in atmel_nand_read_page()
1395 chip->read_buf(mtd, oob, mtd->oobsize); in atmel_nand_read_page()
1412 static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat, in atmel_nand_correct() argument
1415 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_correct()
1479 static void atmel_nand_hwctl(struct mtd_info *mtd, int mode) in atmel_nand_hwctl() argument
1481 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_hwctl()
1589 struct mtd_info *mtd = &host->mtd; in atmel_hw_nand_init_params() local
1606 nand_chip->ecc.size = mtd->writesize; in atmel_hw_nand_init_params()
1609 switch (mtd->writesize) { in atmel_hw_nand_init_params()
1771 static int nfc_device_ready(struct mtd_info *mtd) in nfc_device_ready() argument
1774 struct nand_chip *nand_chip = mtd->priv; in nfc_device_ready()
1788 static void nfc_select_chip(struct mtd_info *mtd, int chip) in nfc_select_chip() argument
1790 struct nand_chip *nand_chip = mtd->priv; in nfc_select_chip()
1799 static int nfc_make_addr(struct mtd_info *mtd, int command, int column, in nfc_make_addr() argument
1802 struct nand_chip *chip = mtd->priv; in nfc_make_addr()
1818 if (mtd->writesize > 512) in nfc_make_addr()
1839 static void nfc_nand_command(struct mtd_info *mtd, unsigned int command, in nfc_nand_command() argument
1842 struct nand_chip *chip = mtd->priv; in nfc_nand_command()
1870 nfc_nand_command(mtd, NAND_CMD_STATUS, -1, -1); in nfc_nand_command()
1872 while (!(chip->read_byte(mtd) & NAND_STATUS_READY)) { in nfc_nand_command()
1897 column += mtd->writesize; in nfc_nand_command()
1928 acycle = nfc_make_addr(mtd, command, column, page_addr, in nfc_nand_command()
1963 static int nfc_sram_write_page(struct mtd_info *mtd, struct nand_chip *chip, in nfc_sram_write_page() argument
1973 if (offset || (data_len < mtd->writesize)) in nfc_sram_write_page()
1976 len = mtd->writesize; in nfc_sram_write_page()
1979 if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) != 0) in nfc_sram_write_page()
1988 memcpy(sram + len, chip->oob_poi, mtd->oobsize); in nfc_sram_write_page()
1989 len += mtd->oobsize; in nfc_sram_write_page()
2004 chip->cmdfunc(mtd, NAND_CMD_SEQIN, 0x00, page); in nfc_sram_write_page()
2009 status = chip->ecc.write_page(mtd, chip, buf, oob_required, in nfc_sram_write_page()
2015 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in nfc_sram_write_page()
2016 status = chip->waitfunc(mtd, chip); in nfc_sram_write_page()
2019 status = chip->errstat(mtd, chip, FL_WRITING, status, page); in nfc_sram_write_page()
2027 static int nfc_sram_init(struct mtd_info *mtd) in nfc_sram_init() argument
2029 struct nand_chip *chip = mtd->priv; in nfc_sram_init()
2037 switch (mtd->writesize) { in nfc_sram_init()
2061 cfg_nfc |= (((mtd->oobsize / 4) - 1) << NFC_CFG_NFC_SPARESIZE_BIT_POS in nfc_sram_init()
2093 struct mtd_info *mtd; in atmel_nand_probe() local
2116 mtd = &host->mtd; in atmel_nand_probe()
2130 mtd->priv = nand_chip; in atmel_nand_probe()
2131 mtd->dev.parent = &pdev->dev; in atmel_nand_probe()
2161 res = atmel_nand_set_enable_ready_pins(mtd); in atmel_nand_probe()
2231 if (nand_scan_ident(mtd, 1, NULL)) { in atmel_nand_probe()
2248 res = nfc_sram_init(mtd); in atmel_nand_probe()
2256 if (nand_scan_tail(mtd)) { in atmel_nand_probe()
2261 mtd->name = "atmel_nand"; in atmel_nand_probe()
2263 res = mtd_device_parse_register(mtd, NULL, &ppdata, in atmel_nand_probe()
2287 struct mtd_info *mtd = &host->mtd; in atmel_nand_remove() local
2289 nand_release(mtd); in atmel_nand_remove()