Lines Matching refs:chip

423 static int zynq_nand_read_oob(struct mtd_info *mtd, struct nand_chip *chip,  in zynq_nand_read_oob()  argument
430 chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page); in zynq_nand_read_oob()
432 p = chip->oob_poi; in zynq_nand_read_oob()
433 chip->read_buf(mtd, p, (mtd->oobsize - data_width)); in zynq_nand_read_oob()
436 data_phase_addr = (unsigned long)chip->IO_ADDR_R; in zynq_nand_read_oob()
438 chip->IO_ADDR_R = (void __iomem *)data_phase_addr; in zynq_nand_read_oob()
439 chip->read_buf(mtd, p, data_width); in zynq_nand_read_oob()
450 static int zynq_nand_write_oob(struct mtd_info *mtd, struct nand_chip *chip, in zynq_nand_write_oob() argument
454 const u8 *buf = chip->oob_poi; in zynq_nand_write_oob()
457 chip->cmdfunc(mtd, NAND_CMD_SEQIN, mtd->writesize, page); in zynq_nand_write_oob()
459 chip->write_buf(mtd, buf, (mtd->oobsize - data_width)); in zynq_nand_write_oob()
462 data_phase_addr = (unsigned long)chip->IO_ADDR_W; in zynq_nand_write_oob()
465 chip->IO_ADDR_W = (void __iomem *)data_phase_addr; in zynq_nand_write_oob()
466 chip->write_buf(mtd, buf, data_width); in zynq_nand_write_oob()
469 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in zynq_nand_write_oob()
470 status = chip->waitfunc(mtd, chip); in zynq_nand_write_oob()
483 static int zynq_nand_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip, in zynq_nand_read_page_raw() argument
490 chip->read_buf(mtd, buf, mtd->writesize); in zynq_nand_read_page_raw()
492 p = chip->oob_poi; in zynq_nand_read_page_raw()
493 chip->read_buf(mtd, p, (mtd->oobsize - data_width)); in zynq_nand_read_page_raw()
496 data_phase_addr = (unsigned long)chip->IO_ADDR_R; in zynq_nand_read_page_raw()
498 chip->IO_ADDR_R = (void __iomem *)data_phase_addr; in zynq_nand_read_page_raw()
500 chip->read_buf(mtd, p, data_width); in zynq_nand_read_page_raw()
505 struct nand_chip *chip, u8 *buf, int oob_required, int page) in zynq_nand_read_page_raw_nooob() argument
507 chip->read_buf(mtd, buf, mtd->writesize); in zynq_nand_read_page_raw_nooob()
512 struct nand_chip *chip, u32 data_offs, in zynq_nand_read_subpage_raw() argument
516 chip->cmdfunc(mtd, NAND_CMD_RNDOUT, data_offs, -1); in zynq_nand_read_subpage_raw()
519 chip->read_buf(mtd, buf, readlen); in zynq_nand_read_subpage_raw()
532 struct nand_chip *chip, const u8 *buf, int oob_required, int page) in zynq_nand_write_page_raw() argument
538 chip->write_buf(mtd, buf, mtd->writesize); in zynq_nand_write_page_raw()
540 p = chip->oob_poi; in zynq_nand_write_page_raw()
541 chip->write_buf(mtd, p, (mtd->oobsize - data_width)); in zynq_nand_write_page_raw()
544 data_phase_addr = (unsigned long)chip->IO_ADDR_W; in zynq_nand_write_page_raw()
547 chip->IO_ADDR_W = (void __iomem *)data_phase_addr; in zynq_nand_write_page_raw()
549 chip->write_buf(mtd, p, data_width); in zynq_nand_write_page_raw()
564 struct nand_chip *chip, const u8 *buf, int oob_required, int page) in zynq_nand_write_page_hwecc() argument
566 int i, eccsteps, eccsize = chip->ecc.size; in zynq_nand_write_page_hwecc()
567 u8 *ecc_calc = chip->buffers->ecccalc; in zynq_nand_write_page_hwecc()
569 u32 *eccpos = chip->ecc.layout->eccpos; in zynq_nand_write_page_hwecc()
574 for (eccsteps = chip->ecc.steps; (eccsteps - 1); eccsteps--) { in zynq_nand_write_page_hwecc()
575 chip->write_buf(mtd, p, eccsize); in zynq_nand_write_page_hwecc()
578 chip->write_buf(mtd, p, (eccsize - data_width)); in zynq_nand_write_page_hwecc()
582 data_phase_addr = (unsigned long) chip->IO_ADDR_W; in zynq_nand_write_page_hwecc()
584 chip->IO_ADDR_W = (void __iomem *)data_phase_addr; in zynq_nand_write_page_hwecc()
585 chip->write_buf(mtd, p, data_width); in zynq_nand_write_page_hwecc()
589 chip->ecc.calculate(mtd, p, &ecc_calc[0]); in zynq_nand_write_page_hwecc()
591 for (i = 0; i < chip->ecc.total; i++) in zynq_nand_write_page_hwecc()
592 chip->oob_poi[eccpos[i]] = ~(ecc_calc[i]); in zynq_nand_write_page_hwecc()
595 data_phase_addr = (unsigned long)chip->IO_ADDR_W; in zynq_nand_write_page_hwecc()
597 chip->IO_ADDR_W = (void __iomem *)data_phase_addr; in zynq_nand_write_page_hwecc()
600 oob_ptr = chip->oob_poi; in zynq_nand_write_page_hwecc()
601 chip->write_buf(mtd, oob_ptr, (mtd->oobsize - data_width)); in zynq_nand_write_page_hwecc()
603 data_phase_addr = (unsigned long)chip->IO_ADDR_W; in zynq_nand_write_page_hwecc()
606 chip->IO_ADDR_W = (void __iomem *)data_phase_addr; in zynq_nand_write_page_hwecc()
608 chip->write_buf(mtd, oob_ptr, data_width); in zynq_nand_write_page_hwecc()
622 struct nand_chip *chip, const u8 *buf, int oob_required, int page) in zynq_nand_write_page_swecc() argument
624 int i, eccsize = chip->ecc.size; in zynq_nand_write_page_swecc()
625 int eccbytes = chip->ecc.bytes; in zynq_nand_write_page_swecc()
626 int eccsteps = chip->ecc.steps; in zynq_nand_write_page_swecc()
627 u8 *ecc_calc = chip->buffers->ecccalc; in zynq_nand_write_page_swecc()
629 u32 *eccpos = chip->ecc.layout->eccpos; in zynq_nand_write_page_swecc()
633 chip->ecc.calculate(mtd, p, &ecc_calc[i]); in zynq_nand_write_page_swecc()
635 for (i = 0; i < chip->ecc.total; i++) in zynq_nand_write_page_swecc()
636 chip->oob_poi[eccpos[i]] = ecc_calc[i]; in zynq_nand_write_page_swecc()
638 return chip->ecc.write_page_raw(mtd, chip, buf, 1, page); in zynq_nand_write_page_swecc()
655 struct nand_chip *chip, u8 *buf, int oob_required, int page) in zynq_nand_read_page_hwecc() argument
657 int i, stat, eccsteps, eccsize = chip->ecc.size; in zynq_nand_read_page_hwecc()
658 int eccbytes = chip->ecc.bytes; in zynq_nand_read_page_hwecc()
660 u8 *ecc_calc = chip->buffers->ecccalc; in zynq_nand_read_page_hwecc()
661 u8 *ecc_code = chip->buffers->ecccode; in zynq_nand_read_page_hwecc()
662 u32 *eccpos = chip->ecc.layout->eccpos; in zynq_nand_read_page_hwecc()
667 for (eccsteps = chip->ecc.steps; (eccsteps - 1); eccsteps--) { in zynq_nand_read_page_hwecc()
668 chip->read_buf(mtd, p, eccsize); in zynq_nand_read_page_hwecc()
671 chip->read_buf(mtd, p, (eccsize - data_width)); in zynq_nand_read_page_hwecc()
675 data_phase_addr = (unsigned long)chip->IO_ADDR_R; in zynq_nand_read_page_hwecc()
677 chip->IO_ADDR_R = (void __iomem *)data_phase_addr; in zynq_nand_read_page_hwecc()
678 chip->read_buf(mtd, p, data_width); in zynq_nand_read_page_hwecc()
682 chip->ecc.calculate(mtd, p, &ecc_calc[0]); in zynq_nand_read_page_hwecc()
685 data_phase_addr = (unsigned long)chip->IO_ADDR_R; in zynq_nand_read_page_hwecc()
687 chip->IO_ADDR_R = (void __iomem *)data_phase_addr; in zynq_nand_read_page_hwecc()
690 oob_ptr = chip->oob_poi; in zynq_nand_read_page_hwecc()
691 chip->read_buf(mtd, oob_ptr, (mtd->oobsize - data_width)); in zynq_nand_read_page_hwecc()
694 data_phase_addr = (unsigned long)chip->IO_ADDR_R; in zynq_nand_read_page_hwecc()
696 chip->IO_ADDR_R = (void __iomem *)data_phase_addr; in zynq_nand_read_page_hwecc()
699 chip->read_buf(mtd, oob_ptr, data_width); in zynq_nand_read_page_hwecc()
701 for (i = 0; i < chip->ecc.total; i++) in zynq_nand_read_page_hwecc()
702 ecc_code[i] = ~(chip->oob_poi[eccpos[i]]); in zynq_nand_read_page_hwecc()
704 eccsteps = chip->ecc.steps; in zynq_nand_read_page_hwecc()
709 stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); in zynq_nand_read_page_hwecc()
727 struct nand_chip *chip, u8 *buf, int oob_required, int page) in zynq_nand_read_page_swecc() argument
729 int i, eccsize = chip->ecc.size; in zynq_nand_read_page_swecc()
730 int eccbytes = chip->ecc.bytes; in zynq_nand_read_page_swecc()
731 int eccsteps = chip->ecc.steps; in zynq_nand_read_page_swecc()
733 u8 *ecc_calc = chip->buffers->ecccalc; in zynq_nand_read_page_swecc()
734 u8 *ecc_code = chip->buffers->ecccode; in zynq_nand_read_page_swecc()
735 u32 *eccpos = chip->ecc.layout->eccpos; in zynq_nand_read_page_swecc()
737 chip->ecc.read_page_raw(mtd, chip, buf, 1, page); in zynq_nand_read_page_swecc()
740 chip->ecc.calculate(mtd, p, &ecc_calc[i]); in zynq_nand_read_page_swecc()
742 for (i = 0; i < chip->ecc.total; i++) in zynq_nand_read_page_swecc()
743 ecc_code[i] = chip->oob_poi[eccpos[i]]; in zynq_nand_read_page_swecc()
745 eccsteps = chip->ecc.steps; in zynq_nand_read_page_swecc()
751 stat = chip->ecc.correct(mtd, p, &ecc_code[i], &ecc_calc[i]); in zynq_nand_read_page_swecc()
768 static void zynq_nand_select_chip(struct mtd_info *mtd, int chip) in zynq_nand_select_chip() argument
783 struct nand_chip *chip = mtd->priv; in zynq_nand_cmd_function() local
786 struct zynq_nand_info *xnand = (struct zynq_nand_info *)chip->priv; in zynq_nand_cmd_function()
838 addr_cycles = chip->onfi_params.addr_cycles & in zynq_nand_cmd_function()
840 addr_cycles += ((chip->onfi_params.addr_cycles & in zynq_nand_cmd_function()
865 chip->IO_ADDR_R = (void __iomem *)data_phase_addr; in zynq_nand_cmd_function()
866 chip->IO_ADDR_W = chip->IO_ADDR_R; in zynq_nand_cmd_function()
871 if (chip->options & NAND_BUSWIDTH_16) in zynq_nand_cmd_function()
877 if (chip->chipsize > (128 << 20)) { in zynq_nand_cmd_function()
888 if ((chip->options & NAND_BUSWIDTH_16) && in zynq_nand_cmd_function()
922 struct nand_chip *chip = mtd->priv; in zynq_nand_read_buf() local
928 *buf = readb(chip->IO_ADDR_R); in zynq_nand_read_buf()
936 *(u16 *)buf = readw(chip->IO_ADDR_R); in zynq_nand_read_buf()
945 *(u32 *)buf = readl(chip->IO_ADDR_R); in zynq_nand_read_buf()
953 *(u16 *)buf = readw(chip->IO_ADDR_R); in zynq_nand_read_buf()
958 *buf = readb(chip->IO_ADDR_R); in zynq_nand_read_buf()
970 struct nand_chip *chip = mtd->priv; in zynq_nand_write_buf() local
971 const u32 *nand = chip->IO_ADDR_W; in zynq_nand_write_buf()