Lines Matching refs:mtd
207 struct mtd_info mtd; member
259 static void lpc32xx_nand_cmd_ctrl(struct mtd_info *mtd, int cmd, in lpc32xx_nand_cmd_ctrl() argument
263 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_cmd_ctrl()
285 static int lpc32xx_nand_device_ready(struct mtd_info *mtd) in lpc32xx_nand_device_ready() argument
287 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_device_ready()
318 static void lpc32xx_nand_ecc_enable(struct mtd_info *mtd, int mode) in lpc32xx_nand_ecc_enable() argument
326 static int lpc32xx_nand_ecc_calculate(struct mtd_info *mtd, in lpc32xx_nand_ecc_calculate() argument
340 static uint8_t lpc32xx_nand_read_byte(struct mtd_info *mtd) in lpc32xx_nand_read_byte() argument
342 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_read_byte()
351 static void lpc32xx_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len) in lpc32xx_nand_read_buf() argument
353 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_read_buf()
364 static void lpc32xx_nand_write_buf(struct mtd_info *mtd, const uint8_t *buf, int len) in lpc32xx_nand_write_buf() argument
366 struct nand_chip *chip = mtd->priv; in lpc32xx_nand_write_buf()
377 static int lpc32xx_nand_read_oob_syndrome(struct mtd_info *mtd, in lpc32xx_nand_read_oob_syndrome() argument
380 chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page); in lpc32xx_nand_read_oob_syndrome()
381 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_read_oob_syndrome()
389 static int lpc32xx_nand_write_oob_syndrome(struct mtd_info *mtd, in lpc32xx_nand_write_oob_syndrome() argument
394 chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page); in lpc32xx_nand_write_oob_syndrome()
395 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_write_oob_syndrome()
398 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in lpc32xx_nand_write_oob_syndrome()
400 status = chip->waitfunc(mtd, chip); in lpc32xx_nand_write_oob_syndrome()
428 static int lpc32xx_xmit_dma(struct mtd_info *mtd, dma_addr_t dma, in lpc32xx_xmit_dma() argument
431 struct nand_chip *chip = mtd->priv; in lpc32xx_xmit_dma()
447 dev_err(mtd->dev.parent, "Failed to setup DMA slave\n"); in lpc32xx_xmit_dma()
456 dev_err(mtd->dev.parent, "Failed to map sg list\n"); in lpc32xx_xmit_dma()
462 dev_err(mtd->dev.parent, "Failed to prepare slave sg\n"); in lpc32xx_xmit_dma()
488 static int lpc32xx_xfer(struct mtd_info *mtd, uint8_t *buf, int eccsubpages, in lpc32xx_xfer() argument
491 struct nand_chip *chip = mtd->priv; in lpc32xx_xfer()
508 memcpy(host->data_buf, buf, mtd->writesize); in lpc32xx_xfer()
526 writel(mtd->writesize, SLC_TC(host->io_base)); in lpc32xx_xfer()
534 res = lpc32xx_xmit_dma(mtd, SLC_DMA_DATA(host->io_base_dma), in lpc32xx_xfer()
536 mtd->writesize / chip->ecc.steps, dir); in lpc32xx_xfer()
545 res = lpc32xx_xmit_dma(mtd, SLC_ECC(host->io_base_dma), in lpc32xx_xfer()
559 dev_warn(mtd->dev.parent, "FIFO not empty!\n"); in lpc32xx_xfer()
565 dev_err(mtd->dev.parent, "FIFO held data too long\n"); in lpc32xx_xfer()
582 dev_err(mtd->dev.parent, "DMA FIFO failure\n"); in lpc32xx_xfer()
594 memcpy(buf, host->data_buf, mtd->writesize); in lpc32xx_xfer()
603 static int lpc32xx_nand_read_page_syndrome(struct mtd_info *mtd, in lpc32xx_nand_read_page_syndrome() argument
612 chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page); in lpc32xx_nand_read_page_syndrome()
615 status = lpc32xx_xfer(mtd, buf, chip->ecc.steps, 1); in lpc32xx_nand_read_page_syndrome()
618 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_read_page_syndrome()
627 stat = chip->ecc.correct(mtd, buf, oobecc, in lpc32xx_nand_read_page_syndrome()
630 mtd->ecc_stats.failed++; in lpc32xx_nand_read_page_syndrome()
632 mtd->ecc_stats.corrected += stat; in lpc32xx_nand_read_page_syndrome()
645 static int lpc32xx_nand_read_page_raw_syndrome(struct mtd_info *mtd, in lpc32xx_nand_read_page_raw_syndrome() argument
651 chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page); in lpc32xx_nand_read_page_raw_syndrome()
654 chip->read_buf(mtd, buf, chip->ecc.size * chip->ecc.steps); in lpc32xx_nand_read_page_raw_syndrome()
655 chip->read_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_read_page_raw_syndrome()
664 static int lpc32xx_nand_write_page_syndrome(struct mtd_info *mtd, in lpc32xx_nand_write_page_syndrome() argument
674 error = lpc32xx_xfer(mtd, (uint8_t *)buf, chip->ecc.steps, 0); in lpc32xx_nand_write_page_syndrome()
685 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_write_page_syndrome()
693 static int lpc32xx_nand_write_page_raw_syndrome(struct mtd_info *mtd, in lpc32xx_nand_write_page_raw_syndrome() argument
699 chip->write_buf(mtd, buf, chip->ecc.size * chip->ecc.steps); in lpc32xx_nand_write_page_raw_syndrome()
700 chip->write_buf(mtd, chip->oob_poi, mtd->oobsize); in lpc32xx_nand_write_page_raw_syndrome()
706 struct mtd_info *mtd = &host->mtd; in lpc32xx_nand_dma_setup() local
710 dev_err(mtd->dev.parent, "no DMA platform data\n"); in lpc32xx_nand_dma_setup()
719 dev_err(mtd->dev.parent, "Failed to request DMA channel\n"); in lpc32xx_nand_dma_setup()
763 struct mtd_info *mtd; in lpc32xx_nand_probe() local
803 mtd = &host->mtd; in lpc32xx_nand_probe()
806 mtd->priv = chip; in lpc32xx_nand_probe()
807 mtd->owner = THIS_MODULE; in lpc32xx_nand_probe()
808 mtd->dev.parent = &pdev->dev; in lpc32xx_nand_probe()
866 if (nand_scan_ident(mtd, 1, NULL)) { in lpc32xx_nand_probe()
879 if (mtd->writesize <= 512) in lpc32xx_nand_probe()
896 if (mtd->writesize <= 512) { in lpc32xx_nand_probe()
905 if (nand_scan_tail(mtd)) { in lpc32xx_nand_probe()
910 mtd->name = "nxp_lpc3220_slc"; in lpc32xx_nand_probe()
912 res = mtd_device_parse_register(mtd, NULL, &ppdata, host->ncfg->parts, in lpc32xx_nand_probe()
917 nand_release(mtd); in lpc32xx_nand_probe()
936 struct mtd_info *mtd = &host->mtd; in lpc32xx_nand_remove() local
938 nand_release(mtd); in lpc32xx_nand_remove()