flctl 115 drivers/mtd/nand/raw/sh_flctl.c static void empty_fifo(struct sh_flctl *flctl) flctl 117 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->flintdmacr_base | AC1CLR | AC0CLR, FLINTDMACR(flctl)); flctl 118 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->flintdmacr_base, FLINTDMACR(flctl)); flctl 121 drivers/mtd/nand/raw/sh_flctl.c static void start_translation(struct sh_flctl *flctl) flctl 123 drivers/mtd/nand/raw/sh_flctl.c writeb(TRSTRT, FLTRCR(flctl)); flctl 126 drivers/mtd/nand/raw/sh_flctl.c static void timeout_error(struct sh_flctl *flctl, const char *str) flctl 128 drivers/mtd/nand/raw/sh_flctl.c dev_err(&flctl->pdev->dev, "Timeout occurred in %s\n", str); flctl 131 drivers/mtd/nand/raw/sh_flctl.c static void wait_completion(struct sh_flctl *flctl) flctl 136 drivers/mtd/nand/raw/sh_flctl.c if (readb(FLTRCR(flctl)) & TREND) { flctl 137 drivers/mtd/nand/raw/sh_flctl.c writeb(0x0, FLTRCR(flctl)); flctl 143 drivers/mtd/nand/raw/sh_flctl.c timeout_error(flctl, __func__); flctl 144 drivers/mtd/nand/raw/sh_flctl.c writeb(0x0, FLTRCR(flctl)); flctl 149 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = param; flctl 151 drivers/mtd/nand/raw/sh_flctl.c complete(&flctl->dma_complete); flctl 154 drivers/mtd/nand/raw/sh_flctl.c static void flctl_release_dma(struct sh_flctl *flctl) flctl 156 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chan_fifo0_rx) { flctl 157 drivers/mtd/nand/raw/sh_flctl.c dma_release_channel(flctl->chan_fifo0_rx); flctl 158 drivers/mtd/nand/raw/sh_flctl.c flctl->chan_fifo0_rx = NULL; flctl 160 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chan_fifo0_tx) { flctl 161 drivers/mtd/nand/raw/sh_flctl.c dma_release_channel(flctl->chan_fifo0_tx); flctl 162 drivers/mtd/nand/raw/sh_flctl.c flctl->chan_fifo0_tx = NULL; flctl 166 drivers/mtd/nand/raw/sh_flctl.c static void flctl_setup_dma(struct sh_flctl *flctl) flctl 170 drivers/mtd/nand/raw/sh_flctl.c struct platform_device *pdev = flctl->pdev; flctl 184 drivers/mtd/nand/raw/sh_flctl.c flctl->chan_fifo0_tx = dma_request_channel(mask, shdma_chan_filter, flctl 187 drivers/mtd/nand/raw/sh_flctl.c flctl->chan_fifo0_tx); flctl 189 drivers/mtd/nand/raw/sh_flctl.c if (!flctl->chan_fifo0_tx) flctl 194 drivers/mtd/nand/raw/sh_flctl.c cfg.dst_addr = flctl->fifo; flctl 196 drivers/mtd/nand/raw/sh_flctl.c ret = dmaengine_slave_config(flctl->chan_fifo0_tx, &cfg); flctl 200 drivers/mtd/nand/raw/sh_flctl.c flctl->chan_fifo0_rx = dma_request_channel(mask, shdma_chan_filter, flctl 203 drivers/mtd/nand/raw/sh_flctl.c flctl->chan_fifo0_rx); flctl 205 drivers/mtd/nand/raw/sh_flctl.c if (!flctl->chan_fifo0_rx) flctl 210 drivers/mtd/nand/raw/sh_flctl.c cfg.src_addr = flctl->fifo; flctl 211 drivers/mtd/nand/raw/sh_flctl.c ret = dmaengine_slave_config(flctl->chan_fifo0_rx, &cfg); flctl 215 drivers/mtd/nand/raw/sh_flctl.c init_completion(&flctl->dma_complete); flctl 220 drivers/mtd/nand/raw/sh_flctl.c flctl_release_dma(flctl); flctl 225 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 232 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chip.options & NAND_BUSWIDTH_16) flctl 234 drivers/mtd/nand/raw/sh_flctl.c if (flctl->page_size) { flctl 239 drivers/mtd/nand/raw/sh_flctl.c if (flctl->rw_ADRCNT == ADRCNT2_E) { flctl 242 drivers/mtd/nand/raw/sh_flctl.c writel(addr2, FLADR2(flctl)); flctl 251 drivers/mtd/nand/raw/sh_flctl.c writel(addr, FLADR(flctl)); flctl 254 drivers/mtd/nand/raw/sh_flctl.c static void wait_rfifo_ready(struct sh_flctl *flctl) flctl 261 drivers/mtd/nand/raw/sh_flctl.c val = readl(FLDTCNTR(flctl)) >> 16; flctl 266 drivers/mtd/nand/raw/sh_flctl.c timeout_error(flctl, __func__); flctl 269 drivers/mtd/nand/raw/sh_flctl.c static void wait_wfifo_ready(struct sh_flctl *flctl) flctl 275 drivers/mtd/nand/raw/sh_flctl.c len = (readl(FLDTCNTR(flctl)) >> 16) & 0xFF; flctl 280 drivers/mtd/nand/raw/sh_flctl.c timeout_error(flctl, __func__); flctl 284 drivers/mtd/nand/raw/sh_flctl.c (struct sh_flctl *flctl, int sector_number) flctl 301 drivers/mtd/nand/raw/sh_flctl.c size = readl(FLDTCNTR(flctl)) >> 24; flctl 306 drivers/mtd/nand/raw/sh_flctl.c if (!(readl(FL4ECCCR(flctl)) & _4ECCEND)) { flctl 316 drivers/mtd/nand/raw/sh_flctl.c if (readl(FL4ECCCR(flctl)) & _4ECCFA) { flctl 319 drivers/mtd/nand/raw/sh_flctl.c if (flctl->done_buff[i] != 0xff) { flctl 326 drivers/mtd/nand/raw/sh_flctl.c dev_dbg(&flctl->pdev->dev, flctl 330 drivers/mtd/nand/raw/sh_flctl.c writel(0, FL4ECCCR(flctl)); flctl 335 drivers/mtd/nand/raw/sh_flctl.c ecc_reg[0] = FL4ECCRESULT0(flctl); flctl 336 drivers/mtd/nand/raw/sh_flctl.c ecc_reg[1] = FL4ECCRESULT1(flctl); flctl 337 drivers/mtd/nand/raw/sh_flctl.c ecc_reg[2] = FL4ECCRESULT2(flctl); flctl 338 drivers/mtd/nand/raw/sh_flctl.c ecc_reg[3] = FL4ECCRESULT3(flctl); flctl 346 drivers/mtd/nand/raw/sh_flctl.c if (flctl->page_size) flctl 352 drivers/mtd/nand/raw/sh_flctl.c org = flctl->done_buff[index]; flctl 353 drivers/mtd/nand/raw/sh_flctl.c flctl->done_buff[index] = org ^ (data & 0xFF); flctl 356 drivers/mtd/nand/raw/sh_flctl.c writel(0, FL4ECCCR(flctl)); flctl 359 drivers/mtd/nand/raw/sh_flctl.c timeout_error(flctl, __func__); flctl 363 drivers/mtd/nand/raw/sh_flctl.c static void wait_wecfifo_ready(struct sh_flctl *flctl) flctl 370 drivers/mtd/nand/raw/sh_flctl.c len = (readl(FLDTCNTR(flctl)) >> 24) & 0xFF; flctl 375 drivers/mtd/nand/raw/sh_flctl.c timeout_error(flctl, __func__); flctl 378 drivers/mtd/nand/raw/sh_flctl.c static int flctl_dma_fifo0_transfer(struct sh_flctl *flctl, unsigned long *buf, flctl 390 drivers/mtd/nand/raw/sh_flctl.c chan = flctl->chan_fifo0_rx; flctl 393 drivers/mtd/nand/raw/sh_flctl.c chan = flctl->chan_fifo0_tx; flctl 404 drivers/mtd/nand/raw/sh_flctl.c reg = readl(FLINTDMACR(flctl)); flctl 406 drivers/mtd/nand/raw/sh_flctl.c writel(reg, FLINTDMACR(flctl)); flctl 409 drivers/mtd/nand/raw/sh_flctl.c desc->callback_param = flctl; flctl 413 drivers/mtd/nand/raw/sh_flctl.c dev_warn(&flctl->pdev->dev, flctl 421 drivers/mtd/nand/raw/sh_flctl.c flctl_release_dma(flctl); flctl 422 drivers/mtd/nand/raw/sh_flctl.c dev_warn(&flctl->pdev->dev, flctl 429 drivers/mtd/nand/raw/sh_flctl.c wait_for_completion_timeout(&flctl->dma_complete, flctl 434 drivers/mtd/nand/raw/sh_flctl.c dev_err(&flctl->pdev->dev, "wait_for_completion_timeout\n"); flctl 438 drivers/mtd/nand/raw/sh_flctl.c reg = readl(FLINTDMACR(flctl)); flctl 440 drivers/mtd/nand/raw/sh_flctl.c writel(reg, FLINTDMACR(flctl)); flctl 448 drivers/mtd/nand/raw/sh_flctl.c static void read_datareg(struct sh_flctl *flctl, int offset) flctl 451 drivers/mtd/nand/raw/sh_flctl.c unsigned long *buf = (unsigned long *)&flctl->done_buff[offset]; flctl 453 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 455 drivers/mtd/nand/raw/sh_flctl.c data = readl(FLDATAR(flctl)); flctl 459 drivers/mtd/nand/raw/sh_flctl.c static void read_fiforeg(struct sh_flctl *flctl, int rlen, int offset) flctl 462 drivers/mtd/nand/raw/sh_flctl.c unsigned long *buf = (unsigned long *)&flctl->done_buff[offset]; flctl 467 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chan_fifo0_rx && rlen >= 32 && flctl 468 drivers/mtd/nand/raw/sh_flctl.c flctl_dma_fifo0_transfer(flctl, buf, rlen, DMA_FROM_DEVICE) > 0) flctl 473 drivers/mtd/nand/raw/sh_flctl.c wait_rfifo_ready(flctl); flctl 474 drivers/mtd/nand/raw/sh_flctl.c buf[i] = readl(FLDTFIFO(flctl)); flctl 483 drivers/mtd/nand/raw/sh_flctl.c (struct sh_flctl *flctl, uint8_t *buff, int sector) flctl 489 drivers/mtd/nand/raw/sh_flctl.c res = wait_recfifo_ready(flctl , sector); flctl 493 drivers/mtd/nand/raw/sh_flctl.c ecc_buf[i] = readl(FLECFIFO(flctl)); flctl 501 drivers/mtd/nand/raw/sh_flctl.c static void write_fiforeg(struct sh_flctl *flctl, int rlen, flctl 505 drivers/mtd/nand/raw/sh_flctl.c unsigned long *buf = (unsigned long *)&flctl->done_buff[offset]; flctl 509 drivers/mtd/nand/raw/sh_flctl.c wait_wfifo_ready(flctl); flctl 510 drivers/mtd/nand/raw/sh_flctl.c writel(cpu_to_be32(buf[i]), FLDTFIFO(flctl)); flctl 514 drivers/mtd/nand/raw/sh_flctl.c static void write_ec_fiforeg(struct sh_flctl *flctl, int rlen, flctl 518 drivers/mtd/nand/raw/sh_flctl.c unsigned long *buf = (unsigned long *)&flctl->done_buff[offset]; flctl 526 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chan_fifo0_tx && rlen >= 32 && flctl 527 drivers/mtd/nand/raw/sh_flctl.c flctl_dma_fifo0_transfer(flctl, buf, rlen, DMA_TO_DEVICE) > 0) flctl 532 drivers/mtd/nand/raw/sh_flctl.c wait_wecfifo_ready(flctl); flctl 533 drivers/mtd/nand/raw/sh_flctl.c writel(buf[i], FLECFIFO(flctl)); flctl 539 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 540 drivers/mtd/nand/raw/sh_flctl.c uint32_t flcmncr_val = flctl->flcmncr_base & ~SEL_16BIT; flctl 544 drivers/mtd/nand/raw/sh_flctl.c if (flctl->page_size) flctl 555 drivers/mtd/nand/raw/sh_flctl.c addr_len_bytes = flctl->erase_ADRCNT; flctl 561 drivers/mtd/nand/raw/sh_flctl.c addr_len_bytes = flctl->rw_ADRCNT; flctl 563 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chip.options & NAND_BUSWIDTH_16) flctl 571 drivers/mtd/nand/raw/sh_flctl.c addr_len_bytes = flctl->rw_ADRCNT; flctl 573 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chip.options & NAND_BUSWIDTH_16) flctl 594 drivers/mtd/nand/raw/sh_flctl.c writel(flcmncr_val, FLCMNCR(flctl)); flctl 595 drivers/mtd/nand/raw/sh_flctl.c writel(flcmdcr_val, FLCMDCR(flctl)); flctl 596 drivers/mtd/nand/raw/sh_flctl.c writel(flcmcdr_val, FLCMCDR(flctl)); flctl 622 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 626 drivers/mtd/nand/raw/sh_flctl.c page_sectors = flctl->page_size ? 4 : 1; flctl 631 drivers/mtd/nand/raw/sh_flctl.c writel(readl(FLCMNCR(flctl)) | ACM_SACCES_MODE | _4ECCCORRECT, flctl 632 drivers/mtd/nand/raw/sh_flctl.c FLCMNCR(flctl)); flctl 633 drivers/mtd/nand/raw/sh_flctl.c writel(readl(FLCMDCR(flctl)) | page_sectors, FLCMDCR(flctl)); flctl 634 drivers/mtd/nand/raw/sh_flctl.c writel(page_addr << 2, FLADR(flctl)); flctl 636 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 637 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 640 drivers/mtd/nand/raw/sh_flctl.c read_fiforeg(flctl, 512, 512 * sector); flctl 642 drivers/mtd/nand/raw/sh_flctl.c ecc_result = read_ecfiforeg(flctl, flctl 643 drivers/mtd/nand/raw/sh_flctl.c &flctl->done_buff[mtd->writesize + 16 * sector], flctl 648 drivers/mtd/nand/raw/sh_flctl.c dev_info(&flctl->pdev->dev, flctl 653 drivers/mtd/nand/raw/sh_flctl.c dev_warn(&flctl->pdev->dev, flctl 663 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 665 drivers/mtd/nand/raw/sh_flctl.c writel(readl(FLCMNCR(flctl)) & ~(ACM_SACCES_MODE | _4ECCCORRECT), flctl 666 drivers/mtd/nand/raw/sh_flctl.c FLCMNCR(flctl)); flctl 671 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 672 drivers/mtd/nand/raw/sh_flctl.c int page_sectors = flctl->page_size ? 4 : 1; flctl 678 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 682 drivers/mtd/nand/raw/sh_flctl.c writel(16, FLDTCNTR(flctl)); flctl 684 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 685 drivers/mtd/nand/raw/sh_flctl.c read_fiforeg(flctl, 16, 16 * i); flctl 686 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 692 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 693 drivers/mtd/nand/raw/sh_flctl.c int page_addr = flctl->seqin_page_addr; flctl 696 drivers/mtd/nand/raw/sh_flctl.c page_sectors = flctl->page_size ? 4 : 1; flctl 701 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 702 drivers/mtd/nand/raw/sh_flctl.c writel(readl(FLCMNCR(flctl)) | ACM_SACCES_MODE, FLCMNCR(flctl)); flctl 703 drivers/mtd/nand/raw/sh_flctl.c writel(readl(FLCMDCR(flctl)) | page_sectors, FLCMDCR(flctl)); flctl 704 drivers/mtd/nand/raw/sh_flctl.c writel(page_addr << 2, FLADR(flctl)); flctl 705 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 708 drivers/mtd/nand/raw/sh_flctl.c write_fiforeg(flctl, 512, 512 * sector); flctl 709 drivers/mtd/nand/raw/sh_flctl.c write_ec_fiforeg(flctl, 16, mtd->writesize + 16 * sector); flctl 712 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 713 drivers/mtd/nand/raw/sh_flctl.c writel(readl(FLCMNCR(flctl)) & ~ACM_SACCES_MODE, FLCMNCR(flctl)); flctl 718 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 719 drivers/mtd/nand/raw/sh_flctl.c int page_addr = flctl->seqin_page_addr; flctl 722 drivers/mtd/nand/raw/sh_flctl.c page_sectors = flctl->page_size ? 4 : 1; flctl 728 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 730 drivers/mtd/nand/raw/sh_flctl.c writel(16, FLDTCNTR(flctl)); /* set read size */ flctl 732 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 733 drivers/mtd/nand/raw/sh_flctl.c write_fiforeg(flctl, 16, 16 * sector); flctl 734 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 742 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 745 drivers/mtd/nand/raw/sh_flctl.c pm_runtime_get_sync(&flctl->pdev->dev); flctl 747 drivers/mtd/nand/raw/sh_flctl.c flctl->read_bytes = 0; flctl 749 drivers/mtd/nand/raw/sh_flctl.c flctl->index = 0; flctl 754 drivers/mtd/nand/raw/sh_flctl.c if (flctl->hwecc) { flctl 759 drivers/mtd/nand/raw/sh_flctl.c if (flctl->page_size) flctl 767 drivers/mtd/nand/raw/sh_flctl.c flctl->read_bytes = mtd->writesize + mtd->oobsize; flctl 768 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chip.options & NAND_BUSWIDTH_16) flctl 770 drivers/mtd/nand/raw/sh_flctl.c flctl->index += column; flctl 774 drivers/mtd/nand/raw/sh_flctl.c if (flctl->hwecc) { flctl 780 drivers/mtd/nand/raw/sh_flctl.c if (flctl->page_size) { flctl 788 drivers/mtd/nand/raw/sh_flctl.c flctl->read_bytes = mtd->oobsize; flctl 792 drivers/mtd/nand/raw/sh_flctl.c if (flctl->hwecc) flctl 795 drivers/mtd/nand/raw/sh_flctl.c if (flctl->page_size) flctl 803 drivers/mtd/nand/raw/sh_flctl.c flctl->read_bytes = mtd->writesize + mtd->oobsize - column; flctl 810 drivers/mtd/nand/raw/sh_flctl.c if (flctl->chip.options & NAND_BUSWIDTH_16) flctl 814 drivers/mtd/nand/raw/sh_flctl.c flctl->read_bytes = 8; flctl 815 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->read_bytes, FLDTCNTR(flctl)); /* set read size */ flctl 816 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 817 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 818 drivers/mtd/nand/raw/sh_flctl.c read_fiforeg(flctl, flctl->read_bytes, 0); flctl 819 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 823 drivers/mtd/nand/raw/sh_flctl.c flctl->erase1_page_addr = page_addr; flctl 829 drivers/mtd/nand/raw/sh_flctl.c set_addr(mtd, -1, flctl->erase1_page_addr); flctl 830 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 831 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 835 drivers/mtd/nand/raw/sh_flctl.c if (!flctl->page_size) { flctl 847 drivers/mtd/nand/raw/sh_flctl.c flctl->seqin_column = column; flctl 848 drivers/mtd/nand/raw/sh_flctl.c flctl->seqin_page_addr = page_addr; flctl 849 drivers/mtd/nand/raw/sh_flctl.c flctl->seqin_read_cmd = read_cmd; flctl 853 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 854 drivers/mtd/nand/raw/sh_flctl.c if (!flctl->page_size) { flctl 856 drivers/mtd/nand/raw/sh_flctl.c flctl->seqin_read_cmd); flctl 858 drivers/mtd/nand/raw/sh_flctl.c writel(0, FLDTCNTR(flctl)); /* set 0 size */ flctl 859 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 860 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 862 drivers/mtd/nand/raw/sh_flctl.c if (flctl->hwecc) { flctl 864 drivers/mtd/nand/raw/sh_flctl.c if (flctl->seqin_column == mtd->writesize) flctl 866 drivers/mtd/nand/raw/sh_flctl.c else if (!flctl->seqin_column) flctl 873 drivers/mtd/nand/raw/sh_flctl.c set_addr(mtd, flctl->seqin_column, flctl->seqin_page_addr); flctl 874 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->index, FLDTCNTR(flctl)); /* set write size */ flctl 875 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 876 drivers/mtd/nand/raw/sh_flctl.c write_fiforeg(flctl, flctl->index, 0); flctl 877 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 884 drivers/mtd/nand/raw/sh_flctl.c flctl->read_bytes = 1; flctl 885 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->read_bytes, FLDTCNTR(flctl)); /* set read size */ flctl 886 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 887 drivers/mtd/nand/raw/sh_flctl.c read_datareg(flctl, 0); /* read and end */ flctl 894 drivers/mtd/nand/raw/sh_flctl.c writel(0, FLDTCNTR(flctl)); /* set 0 size */ flctl 895 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 896 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 905 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->read_bytes, FLDTCNTR(flctl)); /* set read size */ flctl 906 drivers/mtd/nand/raw/sh_flctl.c empty_fifo(flctl); flctl 907 drivers/mtd/nand/raw/sh_flctl.c start_translation(flctl); flctl 908 drivers/mtd/nand/raw/sh_flctl.c read_fiforeg(flctl, flctl->read_bytes, 0); flctl 909 drivers/mtd/nand/raw/sh_flctl.c wait_completion(flctl); flctl 911 drivers/mtd/nand/raw/sh_flctl.c pm_runtime_put_sync(&flctl->pdev->dev); flctl 917 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(nand_to_mtd(chip)); flctl 922 drivers/mtd/nand/raw/sh_flctl.c flctl->flcmncr_base &= ~CE0_ENABLE; flctl 924 drivers/mtd/nand/raw/sh_flctl.c pm_runtime_get_sync(&flctl->pdev->dev); flctl 925 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->flcmncr_base, FLCMNCR(flctl)); flctl 927 drivers/mtd/nand/raw/sh_flctl.c if (flctl->qos_request) { flctl 928 drivers/mtd/nand/raw/sh_flctl.c dev_pm_qos_remove_request(&flctl->pm_qos); flctl 929 drivers/mtd/nand/raw/sh_flctl.c flctl->qos_request = 0; flctl 932 drivers/mtd/nand/raw/sh_flctl.c pm_runtime_put_sync(&flctl->pdev->dev); flctl 935 drivers/mtd/nand/raw/sh_flctl.c flctl->flcmncr_base |= CE0_ENABLE; flctl 937 drivers/mtd/nand/raw/sh_flctl.c if (!flctl->qos_request) { flctl 938 drivers/mtd/nand/raw/sh_flctl.c ret = dev_pm_qos_add_request(&flctl->pdev->dev, flctl 939 drivers/mtd/nand/raw/sh_flctl.c &flctl->pm_qos, flctl 943 drivers/mtd/nand/raw/sh_flctl.c dev_err(&flctl->pdev->dev, flctl 945 drivers/mtd/nand/raw/sh_flctl.c flctl->qos_request = 1; flctl 948 drivers/mtd/nand/raw/sh_flctl.c if (flctl->holden) { flctl 949 drivers/mtd/nand/raw/sh_flctl.c pm_runtime_get_sync(&flctl->pdev->dev); flctl 950 drivers/mtd/nand/raw/sh_flctl.c writel(HOLDEN, FLHOLDCR(flctl)); flctl 951 drivers/mtd/nand/raw/sh_flctl.c pm_runtime_put_sync(&flctl->pdev->dev); flctl 961 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(nand_to_mtd(chip)); flctl 963 drivers/mtd/nand/raw/sh_flctl.c memcpy(&flctl->done_buff[flctl->index], buf, len); flctl 964 drivers/mtd/nand/raw/sh_flctl.c flctl->index += len; flctl 969 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(nand_to_mtd(chip)); flctl 972 drivers/mtd/nand/raw/sh_flctl.c data = flctl->done_buff[flctl->index]; flctl 973 drivers/mtd/nand/raw/sh_flctl.c flctl->index++; flctl 979 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(nand_to_mtd(chip)); flctl 981 drivers/mtd/nand/raw/sh_flctl.c memcpy(buf, &flctl->done_buff[flctl->index], len); flctl 982 drivers/mtd/nand/raw/sh_flctl.c flctl->index += len; flctl 989 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = mtd_to_flctl(mtd); flctl 996 drivers/mtd/nand/raw/sh_flctl.c flctl->flcmncr_base |= SEL_16BIT; flctl 999 drivers/mtd/nand/raw/sh_flctl.c flctl->page_size = 0; flctl 1002 drivers/mtd/nand/raw/sh_flctl.c flctl->rw_ADRCNT = ADRCNT_4; flctl 1003 drivers/mtd/nand/raw/sh_flctl.c flctl->erase_ADRCNT = ADRCNT_3; flctl 1006 drivers/mtd/nand/raw/sh_flctl.c flctl->rw_ADRCNT = ADRCNT_3; flctl 1007 drivers/mtd/nand/raw/sh_flctl.c flctl->erase_ADRCNT = ADRCNT_2; flctl 1009 drivers/mtd/nand/raw/sh_flctl.c flctl->rw_ADRCNT = ADRCNT_2; flctl 1010 drivers/mtd/nand/raw/sh_flctl.c flctl->erase_ADRCNT = ADRCNT_1; flctl 1013 drivers/mtd/nand/raw/sh_flctl.c flctl->page_size = 1; flctl 1016 drivers/mtd/nand/raw/sh_flctl.c flctl->rw_ADRCNT = ADRCNT2_E; flctl 1017 drivers/mtd/nand/raw/sh_flctl.c flctl->erase_ADRCNT = ADRCNT_3; flctl 1020 drivers/mtd/nand/raw/sh_flctl.c flctl->rw_ADRCNT = ADRCNT_4; flctl 1021 drivers/mtd/nand/raw/sh_flctl.c flctl->erase_ADRCNT = ADRCNT_2; flctl 1023 drivers/mtd/nand/raw/sh_flctl.c flctl->rw_ADRCNT = ADRCNT_3; flctl 1024 drivers/mtd/nand/raw/sh_flctl.c flctl->erase_ADRCNT = ADRCNT_1; flctl 1028 drivers/mtd/nand/raw/sh_flctl.c if (flctl->hwecc) { flctl 1045 drivers/mtd/nand/raw/sh_flctl.c flctl->flcmncr_base |= _4ECCEN; flctl 1060 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = dev_id; flctl 1062 drivers/mtd/nand/raw/sh_flctl.c dev_err(&flctl->pdev->dev, "flste irq: %x\n", readl(FLINTDMACR(flctl))); flctl 1063 drivers/mtd/nand/raw/sh_flctl.c writel(flctl->flintdmacr_base, FLINTDMACR(flctl)); flctl 1114 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl; flctl 1121 drivers/mtd/nand/raw/sh_flctl.c flctl = devm_kzalloc(&pdev->dev, sizeof(struct sh_flctl), GFP_KERNEL); flctl 1122 drivers/mtd/nand/raw/sh_flctl.c if (!flctl) flctl 1126 drivers/mtd/nand/raw/sh_flctl.c flctl->reg = devm_ioremap_resource(&pdev->dev, res); flctl 1127 drivers/mtd/nand/raw/sh_flctl.c if (IS_ERR(flctl->reg)) flctl 1128 drivers/mtd/nand/raw/sh_flctl.c return PTR_ERR(flctl->reg); flctl 1129 drivers/mtd/nand/raw/sh_flctl.c flctl->fifo = res->start + 0x24; /* FLDTFIFO */ flctl 1138 drivers/mtd/nand/raw/sh_flctl.c "flste", flctl); flctl 1154 drivers/mtd/nand/raw/sh_flctl.c platform_set_drvdata(pdev, flctl); flctl 1155 drivers/mtd/nand/raw/sh_flctl.c nand = &flctl->chip; flctl 1159 drivers/mtd/nand/raw/sh_flctl.c flctl->pdev = pdev; flctl 1160 drivers/mtd/nand/raw/sh_flctl.c flctl->hwecc = pdata->has_hwecc; flctl 1161 drivers/mtd/nand/raw/sh_flctl.c flctl->holden = pdata->use_holden; flctl 1162 drivers/mtd/nand/raw/sh_flctl.c flctl->flcmncr_base = pdata->flcmncr_val; flctl 1163 drivers/mtd/nand/raw/sh_flctl.c flctl->flintdmacr_base = flctl->hwecc ? (STERINTE | ECERB) : STERINTE; flctl 1185 drivers/mtd/nand/raw/sh_flctl.c flctl_setup_dma(flctl); flctl 1201 drivers/mtd/nand/raw/sh_flctl.c flctl_release_dma(flctl); flctl 1208 drivers/mtd/nand/raw/sh_flctl.c struct sh_flctl *flctl = platform_get_drvdata(pdev); flctl 1210 drivers/mtd/nand/raw/sh_flctl.c flctl_release_dma(flctl); flctl 1211 drivers/mtd/nand/raw/sh_flctl.c nand_release(&flctl->chip);