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
966 chip->write_buf(mtd, (u8 *)buf, mtd->writesize); in atmel_nand_pmecc_write_page()
987 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in atmel_nand_pmecc_write_page()
992 static void atmel_pmecc_core_init(struct mtd_info *mtd) in atmel_pmecc_core_init() argument
994 struct nand_chip *nand_chip = mtd->priv; in atmel_pmecc_core_init()
1045 pmecc_writel(host->ecc, SAREA, mtd->oobsize - 1); in atmel_pmecc_core_init()
1161 struct mtd_info *mtd = &host->mtd; in atmel_pmecc_nand_init_params() local
1233 switch (mtd->writesize) { in atmel_pmecc_nand_init_params()
1239 if (sector_size > mtd->writesize) { in atmel_pmecc_nand_init_params()
1254 nand_chip->ecc.steps = mtd->writesize / sector_size; in atmel_pmecc_nand_init_params()
1258 mtd->oobsize - PMECC_OOB_RESERVED_BYTES) { in atmel_pmecc_nand_init_params()
1264 mtd->oobsize, in atmel_pmecc_nand_init_params()
1290 atmel_pmecc_core_init(mtd); in atmel_pmecc_nand_init_params()
1307 static int atmel_nand_calculate(struct mtd_info *mtd, in atmel_nand_calculate() argument
1310 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_calculate()
1337 static int atmel_nand_read_page(struct mtd_info *mtd, struct nand_chip *chip, in atmel_nand_read_page() argument
1362 chip->read_buf(mtd, p, eccsize); in atmel_nand_read_page()
1372 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, in atmel_nand_read_page()
1373 mtd->writesize + eccpos[0], -1); in atmel_nand_read_page()
1378 chip->read_buf(mtd, ecc_pos, eccbytes); in atmel_nand_read_page()
1381 stat = chip->ecc.correct(mtd, p, oob, NULL); in atmel_nand_read_page()
1384 mtd->ecc_stats.failed++; in atmel_nand_read_page()
1386 mtd->ecc_stats.corrected += stat; in atmel_nand_read_page()
1391 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, mtd->writesize, -1); in atmel_nand_read_page()
1394 chip->read_buf(mtd, oob, mtd->oobsize); in atmel_nand_read_page()
1411 static int atmel_nand_correct(struct mtd_info *mtd, u_char *dat, in atmel_nand_correct() argument
1414 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_correct()
1478 static void atmel_nand_hwctl(struct mtd_info *mtd, int mode) in atmel_nand_hwctl() argument
1480 struct nand_chip *nand_chip = mtd->priv; in atmel_nand_hwctl()
1588 struct mtd_info *mtd = &host->mtd; in atmel_hw_nand_init_params() local
1605 nand_chip->ecc.size = mtd->writesize; in atmel_hw_nand_init_params()
1608 switch (mtd->writesize) { in atmel_hw_nand_init_params()
1770 static int nfc_device_ready(struct mtd_info *mtd) in nfc_device_ready() argument
1773 struct nand_chip *nand_chip = mtd->priv; in nfc_device_ready()
1787 static void nfc_select_chip(struct mtd_info *mtd, int chip) in nfc_select_chip() argument
1789 struct nand_chip *nand_chip = mtd->priv; in nfc_select_chip()
1798 static int nfc_make_addr(struct mtd_info *mtd, int command, int column, in nfc_make_addr() argument
1801 struct nand_chip *chip = mtd->priv; in nfc_make_addr()
1817 if (mtd->writesize > 512) in nfc_make_addr()
1838 static void nfc_nand_command(struct mtd_info *mtd, unsigned int command, in nfc_nand_command() argument
1841 struct nand_chip *chip = mtd->priv; in nfc_nand_command()
1869 nfc_nand_command(mtd, NAND_CMD_STATUS, -1, -1); in nfc_nand_command()
1871 while (!(chip->read_byte(mtd) & NAND_STATUS_READY)) { in nfc_nand_command()
1896 column += mtd->writesize; in nfc_nand_command()
1927 acycle = nfc_make_addr(mtd, command, column, page_addr, in nfc_nand_command()
1962 static int nfc_sram_write_page(struct mtd_info *mtd, struct nand_chip *chip, in nfc_sram_write_page() argument
1972 if (offset || (data_len < mtd->writesize)) in nfc_sram_write_page()
1975 len = mtd->writesize; in nfc_sram_write_page()
1978 if (atmel_nand_dma_op(mtd, (void *)buf, len, 0) != 0) in nfc_sram_write_page()
1987 memcpy(sram + len, chip->oob_poi, mtd->oobsize); in nfc_sram_write_page()
1988 len += mtd->oobsize; in nfc_sram_write_page()
2003 chip->cmdfunc(mtd, NAND_CMD_SEQIN, 0x00, page); in nfc_sram_write_page()
2008 status = chip->ecc.write_page(mtd, chip, buf, oob_required); in nfc_sram_write_page()
2013 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in nfc_sram_write_page()
2014 status = chip->waitfunc(mtd, chip); in nfc_sram_write_page()
2017 status = chip->errstat(mtd, chip, FL_WRITING, status, page); in nfc_sram_write_page()
2025 static int nfc_sram_init(struct mtd_info *mtd) in nfc_sram_init() argument
2027 struct nand_chip *chip = mtd->priv; in nfc_sram_init()
2035 switch (mtd->writesize) { in nfc_sram_init()
2059 cfg_nfc |= (((mtd->oobsize / 4) - 1) << NFC_CFG_NFC_SPARESIZE_BIT_POS in nfc_sram_init()
2091 struct mtd_info *mtd; in atmel_nand_probe() local
2114 mtd = &host->mtd; in atmel_nand_probe()
2128 mtd->priv = nand_chip; in atmel_nand_probe()
2129 mtd->owner = THIS_MODULE; in atmel_nand_probe()
2159 res = atmel_nand_set_enable_ready_pins(mtd); in atmel_nand_probe()
2229 if (nand_scan_ident(mtd, 1, NULL)) { in atmel_nand_probe()
2246 res = nfc_sram_init(mtd); in atmel_nand_probe()
2254 if (nand_scan_tail(mtd)) { in atmel_nand_probe()
2259 mtd->name = "atmel_nand"; in atmel_nand_probe()
2261 res = mtd_device_parse_register(mtd, NULL, &ppdata, in atmel_nand_probe()
2285 struct mtd_info *mtd = &host->mtd; in atmel_nand_remove() local
2287 nand_release(mtd); in atmel_nand_remove()