Lines Matching refs:mtd

204 	struct mtd_info		mtd;  member
256 static void lpc32xx_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, in lpc32xx_nand_cmd_ctrl() argument
260 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_cmd_ctrl()
282 static int lpc32xx_nand_device_ready(struct mtd_info *mtd) in lpc32xx_nand_device_ready() argument
284 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_device_ready()
315 static void lpc32xx_nand_ecc_enable(struct mtd_info *mtd, int mode) in lpc32xx_nand_ecc_enable() argument
323 static int lpc32xx_nand_ecc_calculate(struct mtd_info *mtd, in lpc32xx_nand_ecc_calculate() argument
337 static uint8_t lpc32xx_nand_read_byte(struct mtd_info *mtd) in lpc32xx_nand_read_byte() argument
339 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_read_byte()
348 static void lpc32xx_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len) in lpc32xx_nand_read_buf() argument
350 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_read_buf()
361 static void lpc32xx_nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len) in lpc32xx_nand_write_buf() argument
363 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_write_buf()
374 static int lpc32xx_nand_read_oob_syndrome(struct mtd_info *mtd, in lpc32xx_nand_read_oob_syndrome() argument
377 chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page); in lpc32xx_nand_read_oob_syndrome()
378 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_read_oob_syndrome()
386 static int lpc32xx_nand_write_oob_syndrome(struct mtd_info *mtd, in lpc32xx_nand_write_oob_syndrome() argument
391 chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page); in lpc32xx_nand_write_oob_syndrome()
392 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_write_oob_syndrome()
395 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in lpc32xx_nand_write_oob_syndrome()
397 status = chip->waitfunc(mtd, chip); in lpc32xx_nand_write_oob_syndrome()
425 static int lpc32xx_xmit_dma(struct mtd_info *mtd, dma_addr_t dma, in lpc32xx_xmit_dma() argument
428 struct nand_chip *chip = mtd->priv; in lpc32xx_xmit_dma()
444 dev_err(mtd->dev.parent, "Failed to setup DMA slave\n"); in lpc32xx_xmit_dma()
453 dev_err(mtd->dev.parent, "Failed to map sg list\n"); in lpc32xx_xmit_dma()
459 dev_err(mtd->dev.parent, "Failed to prepare slave sg\n"); in lpc32xx_xmit_dma()
485 static int lpc32xx_xfer(struct mtd_info *mtd, uint8_t *buf, int eccsubpages, in lpc32xx_xfer() argument
488 struct nand_chip *chip = mtd->priv; in lpc32xx_xfer()
505 memcpy(host->data_buf, buf, mtd->writesize); in lpc32xx_xfer()
523 writel(mtd->writesize, SLC_TC(host->io_base)); in lpc32xx_xfer()
531 res = lpc32xx_xmit_dma(mtd, SLC_DMA_DATA(host->io_base_dma), in lpc32xx_xfer()
533 mtd->writesize / chip->ecc.steps, dir); in lpc32xx_xfer()
542 res = lpc32xx_xmit_dma(mtd, SLC_ECC(host->io_base_dma), in lpc32xx_xfer()
556 dev_warn(mtd->dev.parent, "FIFO not empty!\n"); in lpc32xx_xfer()
562 dev_err(mtd->dev.parent, "FIFO held data too long\n"); in lpc32xx_xfer()
579 dev_err(mtd->dev.parent, "DMA FIFO failure\n"); in lpc32xx_xfer()
591 memcpy(buf, host->data_buf, mtd->writesize); in lpc32xx_xfer()
600 static int lpc32xx_nand_read_page_syndrome(struct mtd_info *mtd, in lpc32xx_nand_read_page_syndrome() argument
609 chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page); in lpc32xx_nand_read_page_syndrome()
612 status = lpc32xx_xfer(mtd, buf, chip->ecc.steps, 1); in lpc32xx_nand_read_page_syndrome()
615 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_read_page_syndrome()
624 stat = chip->ecc.correct(mtd, buf, oobecc, in lpc32xx_nand_read_page_syndrome()
627 mtd->ecc_stats.failed++; in lpc32xx_nand_read_page_syndrome()
629 mtd->ecc_stats.corrected += stat; in lpc32xx_nand_read_page_syndrome()
642 static int lpc32xx_nand_read_page_raw_syndrome(struct mtd_info *mtd, in lpc32xx_nand_read_page_raw_syndrome() argument
648 chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page); in lpc32xx_nand_read_page_raw_syndrome()
651 chip->read_buf(mtd, buf, chip->ecc.size * chip->ecc.steps); in lpc32xx_nand_read_page_raw_syndrome()
652 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_read_page_raw_syndrome()
661 static int lpc32xx_nand_write_page_syndrome(struct mtd_info *mtd, in lpc32xx_nand_write_page_syndrome() argument
670 error = lpc32xx_xfer(mtd, (uint8_t *)buf, chip->ecc.steps, 0); in lpc32xx_nand_write_page_syndrome()
681 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_write_page_syndrome()
689 static int lpc32xx_nand_write_page_raw_syndrome(struct mtd_info *mtd, in lpc32xx_nand_write_page_raw_syndrome() argument
695 chip->write_buf(mtd, buf, chip->ecc.size * chip->ecc.steps); in lpc32xx_nand_write_page_raw_syndrome()
696 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_write_page_raw_syndrome()
702 struct mtd_info *mtd = &host->mtd; in lpc32xx_nand_dma_setup() local
706 dev_err(mtd->dev.parent, "no DMA platform data\n"); in lpc32xx_nand_dma_setup()
715 dev_err(mtd->dev.parent, "Failed to request DMA channel\n"); in lpc32xx_nand_dma_setup()
759 struct mtd_info *mtd; in lpc32xx_nand_probe() local
799 mtd = &host->mtd; in lpc32xx_nand_probe()
802 mtd->priv = chip; in lpc32xx_nand_probe()
803 mtd->owner = THIS_MODULE; in lpc32xx_nand_probe()
804 mtd->dev.parent = &pdev->dev; in lpc32xx_nand_probe()
862 if (nand_scan_ident(mtd, 1, NULL)) { in lpc32xx_nand_probe()
875 if (mtd->writesize <= 512) in lpc32xx_nand_probe()
892 if (mtd->writesize <= 512) { in lpc32xx_nand_probe()
901 if (nand_scan_tail(mtd)) { in lpc32xx_nand_probe()
906 mtd->name = "nxp_lpc3220_slc"; in lpc32xx_nand_probe()
908 res = mtd_device_parse_register(mtd, NULL, &ppdata, host->ncfg->parts, in lpc32xx_nand_probe()
913 nand_release(mtd); in lpc32xx_nand_probe()
932 struct mtd_info *mtd = &host->mtd; in lpc32xx_nand_remove() local
934 nand_release(mtd); in lpc32xx_nand_remove()