nfc 75 drivers/clk/imx/clk-imx31.c clk[nfc] = imx_clk_divider("nfc", "ahb", base + MXC_CCM_PDR0, 8, 3); nfc 156 drivers/clk/imx/clk-imx31.c clk_register_clkdev(clk[nfc], NULL, "imx27-nand.0"); nfc 148 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); nfc 152 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (chipnr == -1 && nfc->selected >= 0) { nfc 153 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c cs = &nfc->cs[nfc->selected]; nfc 154 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c jz4780_nemc_assert(nfc->dev, cs->bank, false); nfc 157 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nfc->selected = chipnr; nfc 164 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); nfc 167 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (WARN_ON(nfc->selected < 0)) nfc 170 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c cs = &nfc->cs[nfc->selected]; nfc 172 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c jz4780_nemc_assert(nfc->dev, cs->bank, ctrl & NAND_NCE); nfc 178 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c writeb(cmd, cs->base + nfc->soc_info->addr_offset); nfc 180 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c writeb(cmd, cs->base + nfc->soc_info->cmd_offset); nfc 201 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); nfc 215 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c return ingenic_ecc_calculate(nfc->ecc, ¶ms, dat, ecc_code); nfc 222 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); nfc 229 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c return ingenic_ecc_correct(nfc->ecc, ¶ms, dat, read_ecc); nfc 235 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc = to_ingenic_nfc(chip->controller); nfc 248 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (!nfc->ecc) { nfc 249 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c dev_err(nfc->dev, "HW ECC selected, but ECC controller not found\n"); nfc 258 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c dev_info(nfc->dev, "using %s (strength %d, size %d, bytes %d)\n", nfc 259 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c (nfc->ecc) ? "hardware ECC" : "software ECC", nfc 263 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c dev_info(nfc->dev, "not using ECC\n"); nfc 266 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c dev_err(nfc->dev, "ECC mode %d not supported\n", nfc 279 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c dev_err(nfc->dev, nfc 296 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c mtd_set_ooblayout(mtd, nfc->soc_info->oob_layout); nfc 306 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc, nfc 318 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c cs = &nfc->cs[chipnr]; nfc 326 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c jz4780_nemc_set_type(nfc->dev, cs->bank, JZ4780_NEMC_BANK_NAND); nfc 362 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c chip->legacy.IO_ADDR_R = cs->base + nfc->soc_info->data_offset; nfc 363 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c chip->legacy.IO_ADDR_W = cs->base + nfc->soc_info->data_offset; nfc 369 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c chip->controller = &nfc->controller; nfc 383 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c list_add_tail(&nand->chip_list, &nfc->chips); nfc 388 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c static void ingenic_nand_cleanup_chips(struct ingenic_nfc *nfc) nfc 392 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c while (!list_empty(&nfc->chips)) { nfc 393 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c chip = list_first_entry(&nfc->chips, nfc 400 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c static int ingenic_nand_init_chips(struct ingenic_nfc *nfc, nfc 409 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (num_chips > nfc->num_banks) { nfc 411 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c num_chips, nfc->num_banks); nfc 416 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c ret = ingenic_nand_init_chip(pdev, nfc, np, i); nfc 418 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c ingenic_nand_cleanup_chips(nfc); nfc 433 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc; nfc 442 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nfc = devm_kzalloc(dev, struct_size(nfc, cs, num_banks), GFP_KERNEL); nfc 443 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (!nfc) nfc 446 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nfc->soc_info = device_get_match_data(dev); nfc 447 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (!nfc->soc_info) nfc 454 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nfc->ecc = of_ingenic_ecc_get(dev->of_node); nfc 455 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (IS_ERR(nfc->ecc)) nfc 456 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c return PTR_ERR(nfc->ecc); nfc 458 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nfc->dev = dev; nfc 459 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nfc->num_banks = num_banks; nfc 461 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c nand_controller_init(&nfc->controller); nfc 462 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c INIT_LIST_HEAD(&nfc->chips); nfc 464 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c ret = ingenic_nand_init_chips(nfc, pdev); nfc 466 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (nfc->ecc) nfc 467 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c ingenic_ecc_release(nfc->ecc); nfc 471 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c platform_set_drvdata(pdev, nfc); nfc 477 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c struct ingenic_nfc *nfc = platform_get_drvdata(pdev); nfc 479 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c if (nfc->ecc) nfc 480 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c ingenic_ecc_release(nfc->ecc); nfc 482 drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c ingenic_nand_cleanup_chips(nfc); nfc 499 drivers/mtd/nand/raw/marvell_nand.c static void marvell_nfc_disable_int(struct marvell_nfc *nfc, u32 int_mask) nfc 504 drivers/mtd/nand/raw/marvell_nand.c reg = readl_relaxed(nfc->regs + NDCR); nfc 505 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(reg | int_mask, nfc->regs + NDCR); nfc 508 drivers/mtd/nand/raw/marvell_nand.c static void marvell_nfc_enable_int(struct marvell_nfc *nfc, u32 int_mask) nfc 513 drivers/mtd/nand/raw/marvell_nand.c reg = readl_relaxed(nfc->regs + NDCR); nfc 514 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(reg & ~int_mask, nfc->regs + NDCR); nfc 517 drivers/mtd/nand/raw/marvell_nand.c static u32 marvell_nfc_clear_int(struct marvell_nfc *nfc, u32 int_mask) nfc 521 drivers/mtd/nand/raw/marvell_nand.c reg = readl_relaxed(nfc->regs + NDSR); nfc 522 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(int_mask, nfc->regs + NDSR); nfc 530 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 542 drivers/mtd/nand/raw/marvell_nand.c ndcr = readl_relaxed(nfc->regs + NDCR); nfc 549 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndcr, nfc->regs + NDCR); nfc 554 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 562 drivers/mtd/nand/raw/marvell_nand.c ret = readl_relaxed_poll_timeout(nfc->regs + NDCR, val, nfc 566 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Timeout on NAND controller run mode\n"); nfc 567 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(readl(nfc->regs + NDCR) & ~NDCR_ND_RUN, nfc 568 drivers/mtd/nand/raw/marvell_nand.c nfc->regs + NDCR); nfc 592 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 599 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Last operation did not succeed\n"); nfc 603 drivers/mtd/nand/raw/marvell_nand.c ndcr = readl_relaxed(nfc->regs + NDCR); nfc 604 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(readl(nfc->regs + NDSR), nfc->regs + NDSR); nfc 607 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndcr | NDCR_ND_RUN, nfc->regs + NDCR); nfc 608 drivers/mtd/nand/raw/marvell_nand.c ret = readl_relaxed_poll_timeout(nfc->regs + NDSR, val, nfc 612 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Timeout on WRCMDRE\n"); nfc 617 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(NDSR_WRCMDREQ, nfc->regs + NDSR); nfc 626 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 628 drivers/mtd/nand/raw/marvell_nand.c dev_dbg(nfc->dev, "\nNDCR: 0x%08x\n" nfc 630 drivers/mtd/nand/raw/marvell_nand.c (u32)readl_relaxed(nfc->regs + NDCR), nfc_op->ndcb[0], nfc 634 drivers/mtd/nand/raw/marvell_nand.c nfc->regs + NDCB0); nfc 635 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(nfc_op->ndcb[1], nfc->regs + NDCB0); nfc 636 drivers/mtd/nand/raw/marvell_nand.c writel(nfc_op->ndcb[2], nfc->regs + NDCB0); nfc 644 drivers/mtd/nand/raw/marvell_nand.c if (!WARN_ON_ONCE(!nfc->caps->is_nfcv2)) nfc 645 drivers/mtd/nand/raw/marvell_nand.c writel(nfc_op->ndcb[3], nfc->regs + NDCB0); nfc 652 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 656 drivers/mtd/nand/raw/marvell_nand.c ret = readl_relaxed_poll_timeout(nfc->regs + NDSR, val, nfc 661 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Timeout on %s (NDSR: 0x%08x)\n", nfc 663 drivers/mtd/nand/raw/marvell_nand.c if (nfc->dma_chan) nfc 664 drivers/mtd/nand/raw/marvell_nand.c dmaengine_terminate_all(nfc->dma_chan); nfc 672 drivers/mtd/nand/raw/marvell_nand.c if (nfc->use_dma && (readl_relaxed(nfc->regs + NDCR) & NDCR_DMA_EN)) nfc 675 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(flag, nfc->regs + NDSR); nfc 690 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 698 drivers/mtd/nand/raw/marvell_nand.c init_completion(&nfc->complete); nfc 700 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_enable_int(nfc, NDCR_RDYM); nfc 701 drivers/mtd/nand/raw/marvell_nand.c ret = wait_for_completion_timeout(&nfc->complete, nfc 703 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_disable_int(nfc, NDCR_RDYM); nfc 704 drivers/mtd/nand/raw/marvell_nand.c pending = marvell_nfc_clear_int(nfc, NDSR_RDY(0) | NDSR_RDY(1)); nfc 711 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Timeout waiting for RB signal\n"); nfc 722 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 729 drivers/mtd/nand/raw/marvell_nand.c ndcr_generic = readl_relaxed(nfc->regs + NDCR) & nfc 731 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndcr_generic | marvell_nand->ndcr, nfc->regs + NDCR); nfc 734 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_clear_int(nfc, NDCR_ALL_INT); nfc 736 drivers/mtd/nand/raw/marvell_nand.c if (chip == nfc->selected_chip && die_nr == marvell_nand->selected_die) nfc 739 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(marvell_nand->ndtr0, nfc->regs + NDTR0); nfc 740 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(marvell_nand->ndtr1, nfc->regs + NDTR1); nfc 742 drivers/mtd/nand/raw/marvell_nand.c nfc->selected_chip = chip; nfc 748 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = dev_id; nfc 749 drivers/mtd/nand/raw/marvell_nand.c u32 st = readl_relaxed(nfc->regs + NDSR); nfc 750 drivers/mtd/nand/raw/marvell_nand.c u32 ien = (~readl_relaxed(nfc->regs + NDCR)) & NDCR_ALL_INT; nfc 762 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_disable_int(nfc, st & NDCR_ALL_INT); nfc 765 drivers/mtd/nand/raw/marvell_nand.c complete(&nfc->complete); nfc 773 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 774 drivers/mtd/nand/raw/marvell_nand.c u32 ndcr = readl_relaxed(nfc->regs + NDCR); nfc 777 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndcr | NDCR_ECC_EN, nfc->regs + NDCR); nfc 784 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(NDECCCTRL_BCH_EN, nfc->regs + NDECCCTRL); nfc 790 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 791 drivers/mtd/nand/raw/marvell_nand.c u32 ndcr = readl_relaxed(nfc->regs + NDCR); nfc 794 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndcr & ~NDCR_ECC_EN, nfc->regs + NDCR); nfc 796 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(0, nfc->regs + NDECCCTRL); nfc 801 drivers/mtd/nand/raw/marvell_nand.c static void marvell_nfc_enable_dma(struct marvell_nfc *nfc) nfc 805 drivers/mtd/nand/raw/marvell_nand.c reg = readl_relaxed(nfc->regs + NDCR); nfc 806 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(reg | NDCR_DMA_EN, nfc->regs + NDCR); nfc 809 drivers/mtd/nand/raw/marvell_nand.c static void marvell_nfc_disable_dma(struct marvell_nfc *nfc) nfc 813 drivers/mtd/nand/raw/marvell_nand.c reg = readl_relaxed(nfc->regs + NDCR); nfc 814 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(reg & ~NDCR_DMA_EN, nfc->regs + NDCR); nfc 818 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nfc_xfer_data_dma(struct marvell_nfc *nfc, nfc 828 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_enable_dma(nfc); nfc 830 drivers/mtd/nand/raw/marvell_nand.c sg_init_one(&sg, nfc->dma_buf, dma_len); nfc 831 drivers/mtd/nand/raw/marvell_nand.c dma_map_sg(nfc->dma_chan->device->dev, &sg, 1, direction); nfc 832 drivers/mtd/nand/raw/marvell_nand.c tx = dmaengine_prep_slave_sg(nfc->dma_chan, &sg, 1, nfc 837 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Could not prepare DMA S/G list\n"); nfc 847 drivers/mtd/nand/raw/marvell_nand.c dma_async_issue_pending(nfc->dma_chan); nfc 848 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nfc_wait_cmdd(nfc->selected_chip); nfc 849 drivers/mtd/nand/raw/marvell_nand.c dma_unmap_sg(nfc->dma_chan->device->dev, &sg, 1, direction); nfc 850 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_disable_dma(nfc); nfc 852 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Timeout waiting for DMA (status: %d)\n", nfc 853 drivers/mtd/nand/raw/marvell_nand.c dmaengine_tx_status(nfc->dma_chan, cookie, NULL)); nfc 854 drivers/mtd/nand/raw/marvell_nand.c dmaengine_terminate_all(nfc->dma_chan); nfc 861 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nfc_xfer_data_in_pio(struct marvell_nfc *nfc, u8 *in, nfc 869 drivers/mtd/nand/raw/marvell_nand.c ioread32_rep(nfc->regs + NDDB, in + i, FIFO_REP(FIFO_DEPTH)); nfc 874 drivers/mtd/nand/raw/marvell_nand.c ioread32_rep(nfc->regs + NDDB, tmp_buf, FIFO_REP(FIFO_DEPTH)); nfc 881 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nfc_xfer_data_out_pio(struct marvell_nfc *nfc, const u8 *out, nfc 889 drivers/mtd/nand/raw/marvell_nand.c iowrite32_rep(nfc->regs + NDDB, out + i, FIFO_REP(FIFO_DEPTH)); nfc 895 drivers/mtd/nand/raw/marvell_nand.c iowrite32_rep(nfc->regs + NDDB, tmp_buf, FIFO_REP(FIFO_DEPTH)); nfc 945 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 949 drivers/mtd/nand/raw/marvell_nand.c ndsr = readl_relaxed(nfc->regs + NDSR); nfc 953 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndsr, nfc->regs + NDSR); nfc 967 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(ndsr, nfc->regs + NDSR); nfc 988 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1003 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) nfc 1022 drivers/mtd/nand/raw/marvell_nand.c if (nfc->use_dma) { nfc 1023 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_dma(nfc, DMA_FROM_DEVICE, nfc 1025 drivers/mtd/nand/raw/marvell_nand.c memcpy(data_buf, nfc->dma_buf, lt->data_bytes); nfc 1026 drivers/mtd/nand/raw/marvell_nand.c memcpy(oob_buf, nfc->dma_buf + lt->data_bytes, oob_bytes); nfc 1028 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_in_pio(nfc, data_buf, lt->data_bytes); nfc 1029 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_in_pio(nfc, oob_buf, oob_bytes); nfc 1100 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1115 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) nfc 1129 drivers/mtd/nand/raw/marvell_nand.c if (nfc->use_dma) { nfc 1130 drivers/mtd/nand/raw/marvell_nand.c memcpy(nfc->dma_buf, data_buf, lt->data_bytes); nfc 1131 drivers/mtd/nand/raw/marvell_nand.c memcpy(nfc->dma_buf + lt->data_bytes, oob_buf, oob_bytes); nfc 1132 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_dma(nfc, DMA_TO_DEVICE, lt->data_bytes + nfc 1135 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_out_pio(nfc, data_buf, lt->data_bytes); nfc 1136 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_out_pio(nfc, oob_buf, oob_bytes); nfc 1244 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1291 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_in_pio(nfc, data, nfc 1299 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_xfer_data_in_pio(nfc, spare, nfc 1507 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1556 drivers/mtd/nand/raw/marvell_nand.c iowrite32_rep(nfc->regs + NDDB, data, FIFO_REP(data_len)); nfc 1557 drivers/mtd/nand/raw/marvell_nand.c iowrite32_rep(nfc->regs + NDDB, spare, FIFO_REP(spare_len)); nfc 1640 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1693 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) { nfc 1707 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) { nfc 1729 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1743 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nfc_xfer_data_in_pio(nfc, in, len); nfc 1747 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nfc_xfer_data_out_pio(nfc, out, len); nfc 1811 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1813 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(readl(nfc->regs + NDCR) & ~NDCR_ND_RUN, nfc 1814 drivers/mtd/nand/raw/marvell_nand.c nfc->regs + NDCR); nfc 1883 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 1885 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(readl(nfc->regs + NDCR) & ~NDCR_ND_RUN, nfc 1886 drivers/mtd/nand/raw/marvell_nand.c nfc->regs + NDCR); nfc 2108 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 2112 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) nfc 2173 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 2177 drivers/mtd/nand/raw/marvell_nand.c if (!nfc->caps->is_nfcv2 && nfc 2179 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, nfc 2196 drivers/mtd/nand/raw/marvell_nand.c (!nfc->caps->is_nfcv2 && ecc->strength > 1)) { nfc 2197 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, nfc 2206 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Requested layout needs at least 128 OOB bytes\n"); nfc 2247 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 2255 drivers/mtd/nand/raw/marvell_nand.c dev_info(nfc->dev, nfc 2271 drivers/mtd/nand/raw/marvell_nand.c if (!nfc->caps->is_nfcv2 && mtd->writesize != SZ_512 && nfc 2273 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "NFCv1 cannot write %d bytes pages\n", nfc 2313 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 2314 drivers/mtd/nand/raw/marvell_nand.c unsigned int period_ns = 1000000000 / clk_get_rate(nfc->core_clk) * 2; nfc 2365 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) { nfc 2393 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->is_nfcv2) { nfc 2411 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); nfc 2412 drivers/mtd/nand/raw/marvell_nand.c struct pxa3xx_nand_platform_data *pdata = dev_get_platdata(nfc->dev); nfc 2464 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "ECC init failed: %d\n", ret); nfc 2478 drivers/mtd/nand/raw/marvell_nand.c if (pdata || nfc->caps->legacy_of_bindings) { nfc 2496 drivers/mtd/nand/raw/marvell_nand.c mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL, nfc 2497 drivers/mtd/nand/raw/marvell_nand.c "%s:nand.%d", dev_name(nfc->dev), nfc 2500 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Failed to allocate mtd->name\n"); nfc 2514 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc, nfc 2533 drivers/mtd/nand/raw/marvell_nand.c if (pdata || nfc->caps->legacy_of_bindings) { nfc 2556 drivers/mtd/nand/raw/marvell_nand.c if (pdata || nfc->caps->legacy_of_bindings) { nfc 2572 drivers/mtd/nand/raw/marvell_nand.c if (cs >= nfc->caps->max_cs_nb) { nfc 2574 drivers/mtd/nand/raw/marvell_nand.c cs, nfc->caps->max_cs_nb); nfc 2578 drivers/mtd/nand/raw/marvell_nand.c if (test_and_set_bit(cs, &nfc->assigned_cs)) { nfc 2606 drivers/mtd/nand/raw/marvell_nand.c if (pdata || nfc->caps->legacy_of_bindings) { nfc 2620 drivers/mtd/nand/raw/marvell_nand.c if (rb >= nfc->caps->max_rb_nb) { nfc 2622 drivers/mtd/nand/raw/marvell_nand.c rb, nfc->caps->max_rb_nb); nfc 2630 drivers/mtd/nand/raw/marvell_nand.c chip->controller = &nfc->controller; nfc 2649 drivers/mtd/nand/raw/marvell_nand.c marvell_nand->ndtr0 = readl_relaxed(nfc->regs + NDTR0); nfc 2650 drivers/mtd/nand/raw/marvell_nand.c marvell_nand->ndtr1 = readl_relaxed(nfc->regs + NDTR1); nfc 2671 drivers/mtd/nand/raw/marvell_nand.c list_add_tail(&marvell_nand->node, &nfc->chips); nfc 2676 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) nfc 2680 drivers/mtd/nand/raw/marvell_nand.c int max_cs = nfc->caps->max_cs_nb; nfc 2701 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->legacy_of_bindings) { nfc 2702 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nand_chip_init(dev, nfc, np); nfc 2707 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nand_chip_init(dev, nfc, nand_np); nfc 2717 drivers/mtd/nand/raw/marvell_nand.c static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) nfc 2721 drivers/mtd/nand/raw/marvell_nand.c list_for_each_entry_safe(entry, temp, &nfc->chips, node) { nfc 2727 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nfc_init_dma(struct marvell_nfc *nfc) nfc 2729 drivers/mtd/nand/raw/marvell_nand.c struct platform_device *pdev = container_of(nfc->dev, nfc 2737 drivers/mtd/nand/raw/marvell_nand.c dev_warn(nfc->dev, nfc 2742 drivers/mtd/nand/raw/marvell_nand.c ret = dma_set_mask_and_coherent(nfc->dev, DMA_BIT_MASK(32)); nfc 2746 drivers/mtd/nand/raw/marvell_nand.c nfc->dma_chan = dma_request_slave_channel(nfc->dev, "data"); nfc 2747 drivers/mtd/nand/raw/marvell_nand.c if (!nfc->dma_chan) { nfc 2748 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, nfc 2763 drivers/mtd/nand/raw/marvell_nand.c ret = dmaengine_slave_config(nfc->dma_chan, &config); nfc 2765 drivers/mtd/nand/raw/marvell_nand.c dev_err(nfc->dev, "Failed to configure DMA channel\n"); nfc 2775 drivers/mtd/nand/raw/marvell_nand.c nfc->dma_buf = kmalloc(MAX_CHUNK_SIZE, GFP_KERNEL | GFP_DMA); nfc 2776 drivers/mtd/nand/raw/marvell_nand.c if (!nfc->dma_buf) nfc 2779 drivers/mtd/nand/raw/marvell_nand.c nfc->use_dma = true; nfc 2784 drivers/mtd/nand/raw/marvell_nand.c static void marvell_nfc_reset(struct marvell_nfc *nfc) nfc 2794 drivers/mtd/nand/raw/marvell_nand.c NDCR_RD_ID_CNT(NFCV1_READID_LEN), nfc->regs + NDCR); nfc 2795 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(0xFFFFFFFF, nfc->regs + NDSR); nfc 2796 drivers/mtd/nand/raw/marvell_nand.c writel_relaxed(0, nfc->regs + NDECCCTRL); nfc 2799 drivers/mtd/nand/raw/marvell_nand.c static int marvell_nfc_init(struct marvell_nfc *nfc) nfc 2801 drivers/mtd/nand/raw/marvell_nand.c struct device_node *np = nfc->dev->of_node; nfc 2809 drivers/mtd/nand/raw/marvell_nand.c if (nfc->caps->need_system_controller) { nfc 2833 drivers/mtd/nand/raw/marvell_nand.c if (!nfc->caps->is_nfcv2) nfc 2834 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_init_dma(nfc); nfc 2836 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_reset(nfc); nfc 2845 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc; nfc 2849 drivers/mtd/nand/raw/marvell_nand.c nfc = devm_kzalloc(&pdev->dev, sizeof(struct marvell_nfc), nfc 2851 drivers/mtd/nand/raw/marvell_nand.c if (!nfc) nfc 2854 drivers/mtd/nand/raw/marvell_nand.c nfc->dev = dev; nfc 2855 drivers/mtd/nand/raw/marvell_nand.c nand_controller_init(&nfc->controller); nfc 2856 drivers/mtd/nand/raw/marvell_nand.c nfc->controller.ops = &marvell_nand_controller_ops; nfc 2857 drivers/mtd/nand/raw/marvell_nand.c INIT_LIST_HEAD(&nfc->chips); nfc 2860 drivers/mtd/nand/raw/marvell_nand.c nfc->regs = devm_ioremap_resource(dev, r); nfc 2861 drivers/mtd/nand/raw/marvell_nand.c if (IS_ERR(nfc->regs)) nfc 2862 drivers/mtd/nand/raw/marvell_nand.c return PTR_ERR(nfc->regs); nfc 2870 drivers/mtd/nand/raw/marvell_nand.c nfc->core_clk = devm_clk_get(&pdev->dev, "core"); nfc 2873 drivers/mtd/nand/raw/marvell_nand.c if (nfc->core_clk == ERR_PTR(-ENOENT)) nfc 2874 drivers/mtd/nand/raw/marvell_nand.c nfc->core_clk = devm_clk_get(&pdev->dev, NULL); nfc 2876 drivers/mtd/nand/raw/marvell_nand.c if (IS_ERR(nfc->core_clk)) nfc 2877 drivers/mtd/nand/raw/marvell_nand.c return PTR_ERR(nfc->core_clk); nfc 2879 drivers/mtd/nand/raw/marvell_nand.c ret = clk_prepare_enable(nfc->core_clk); nfc 2883 drivers/mtd/nand/raw/marvell_nand.c nfc->reg_clk = devm_clk_get(&pdev->dev, "reg"); nfc 2884 drivers/mtd/nand/raw/marvell_nand.c if (IS_ERR(nfc->reg_clk)) { nfc 2885 drivers/mtd/nand/raw/marvell_nand.c if (PTR_ERR(nfc->reg_clk) != -ENOENT) { nfc 2886 drivers/mtd/nand/raw/marvell_nand.c ret = PTR_ERR(nfc->reg_clk); nfc 2890 drivers/mtd/nand/raw/marvell_nand.c nfc->reg_clk = NULL; nfc 2893 drivers/mtd/nand/raw/marvell_nand.c ret = clk_prepare_enable(nfc->reg_clk); nfc 2897 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_disable_int(nfc, NDCR_ALL_INT); nfc 2898 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_clear_int(nfc, NDCR_ALL_INT); nfc 2900 drivers/mtd/nand/raw/marvell_nand.c 0, "marvell-nfc", nfc); nfc 2906 drivers/mtd/nand/raw/marvell_nand.c nfc->caps = (void *)pdev->id_entry->driver_data; nfc 2908 drivers/mtd/nand/raw/marvell_nand.c nfc->caps = of_device_get_match_data(&pdev->dev); nfc 2910 drivers/mtd/nand/raw/marvell_nand.c if (!nfc->caps) { nfc 2917 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nfc_init(nfc); nfc 2921 drivers/mtd/nand/raw/marvell_nand.c platform_set_drvdata(pdev, nfc); nfc 2923 drivers/mtd/nand/raw/marvell_nand.c ret = marvell_nand_chips_init(dev, nfc); nfc 2930 drivers/mtd/nand/raw/marvell_nand.c clk_disable_unprepare(nfc->reg_clk); nfc 2932 drivers/mtd/nand/raw/marvell_nand.c clk_disable_unprepare(nfc->core_clk); nfc 2939 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = platform_get_drvdata(pdev); nfc 2941 drivers/mtd/nand/raw/marvell_nand.c marvell_nand_chips_cleanup(nfc); nfc 2943 drivers/mtd/nand/raw/marvell_nand.c if (nfc->use_dma) { nfc 2944 drivers/mtd/nand/raw/marvell_nand.c dmaengine_terminate_all(nfc->dma_chan); nfc 2945 drivers/mtd/nand/raw/marvell_nand.c dma_release_channel(nfc->dma_chan); nfc 2948 drivers/mtd/nand/raw/marvell_nand.c clk_disable_unprepare(nfc->reg_clk); nfc 2949 drivers/mtd/nand/raw/marvell_nand.c clk_disable_unprepare(nfc->core_clk); nfc 2956 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = dev_get_drvdata(dev); nfc 2959 drivers/mtd/nand/raw/marvell_nand.c list_for_each_entry(chip, &nfc->chips, node) nfc 2962 drivers/mtd/nand/raw/marvell_nand.c clk_disable_unprepare(nfc->reg_clk); nfc 2963 drivers/mtd/nand/raw/marvell_nand.c clk_disable_unprepare(nfc->core_clk); nfc 2970 drivers/mtd/nand/raw/marvell_nand.c struct marvell_nfc *nfc = dev_get_drvdata(dev); nfc 2973 drivers/mtd/nand/raw/marvell_nand.c ret = clk_prepare_enable(nfc->core_clk); nfc 2977 drivers/mtd/nand/raw/marvell_nand.c ret = clk_prepare_enable(nfc->reg_clk); nfc 2985 drivers/mtd/nand/raw/marvell_nand.c nfc->selected_chip = NULL; nfc 2988 drivers/mtd/nand/raw/marvell_nand.c marvell_nfc_reset(nfc); nfc 225 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 231 drivers/mtd/nand/raw/meson_nand.c nfc->param.chip_select = meson_chip->sels[chip] ? NAND_CE1 : NAND_CE0; nfc 232 drivers/mtd/nand/raw/meson_nand.c nfc->param.rb_select = nfc->param.chip_select; nfc 233 drivers/mtd/nand/raw/meson_nand.c nfc->timing.twb = meson_chip->twb; nfc 234 drivers/mtd/nand/raw/meson_nand.c nfc->timing.tadl = meson_chip->tadl; nfc 235 drivers/mtd/nand/raw/meson_nand.c nfc->timing.tbers_max = meson_chip->tbers_max; nfc 237 drivers/mtd/nand/raw/meson_nand.c if (nfc->clk_rate != meson_chip->clk_rate) { nfc 238 drivers/mtd/nand/raw/meson_nand.c ret = clk_set_rate(nfc->device_clk, meson_chip->clk_rate); nfc 240 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to set clock rate\n"); nfc 243 drivers/mtd/nand/raw/meson_nand.c nfc->clk_rate = meson_chip->clk_rate; nfc 245 drivers/mtd/nand/raw/meson_nand.c if (nfc->bus_timing != meson_chip->bus_timing) { nfc 247 drivers/mtd/nand/raw/meson_nand.c writel(value, nfc->reg_base + NFC_REG_CFG); nfc 248 drivers/mtd/nand/raw/meson_nand.c writel((1 << 31), nfc->reg_base + NFC_REG_CMD); nfc 249 drivers/mtd/nand/raw/meson_nand.c nfc->bus_timing = meson_chip->bus_timing; nfc 253 drivers/mtd/nand/raw/meson_nand.c static void meson_nfc_cmd_idle(struct meson_nfc *nfc, u32 time) nfc 255 drivers/mtd/nand/raw/meson_nand.c writel(nfc->param.chip_select | NFC_CMD_IDLE | (time & 0x3ff), nfc 256 drivers/mtd/nand/raw/meson_nand.c nfc->reg_base + NFC_REG_CMD); nfc 259 drivers/mtd/nand/raw/meson_nand.c static void meson_nfc_cmd_seed(struct meson_nfc *nfc, u32 seed) nfc 262 drivers/mtd/nand/raw/meson_nand.c nfc->reg_base + NFC_REG_CMD); nfc 269 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(mtd_to_nand(mtd)); nfc 279 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 288 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 291 drivers/mtd/nand/raw/meson_nand.c static void meson_nfc_drain_cmd(struct meson_nfc *nfc) nfc 304 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, 0); nfc 305 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, 0); nfc 308 drivers/mtd/nand/raw/meson_nand.c static int meson_nfc_wait_cmd_finish(struct meson_nfc *nfc, nfc 315 drivers/mtd/nand/raw/meson_nand.c ret = readl_relaxed_poll_timeout(nfc->reg_base + NFC_REG_CMD, cmd_size, nfc 319 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "wait for empty CMD FIFO time out\n"); nfc 324 drivers/mtd/nand/raw/meson_nand.c static int meson_nfc_wait_dma_finish(struct meson_nfc *nfc) nfc 326 drivers/mtd/nand/raw/meson_nand.c meson_nfc_drain_cmd(nfc); nfc 328 drivers/mtd/nand/raw/meson_nand.c return meson_nfc_wait_cmd_finish(nfc, DMA_BUSY_TIMEOUT); nfc 390 drivers/mtd/nand/raw/meson_nand.c static int meson_nfc_queue_rb(struct meson_nfc *nfc, int timeout_ms) nfc 395 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, nfc->timing.twb); nfc 396 drivers/mtd/nand/raw/meson_nand.c meson_nfc_drain_cmd(nfc); nfc 397 drivers/mtd/nand/raw/meson_nand.c meson_nfc_wait_cmd_finish(nfc, CMD_FIFO_EMPTY_TIMEOUT); nfc 399 drivers/mtd/nand/raw/meson_nand.c cfg = readl(nfc->reg_base + NFC_REG_CFG); nfc 401 drivers/mtd/nand/raw/meson_nand.c writel(cfg, nfc->reg_base + NFC_REG_CFG); nfc 403 drivers/mtd/nand/raw/meson_nand.c reinit_completion(&nfc->completion); nfc 407 drivers/mtd/nand/raw/meson_nand.c | nfc->param.chip_select | nfc->timing.tbers_max; nfc 408 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 410 drivers/mtd/nand/raw/meson_nand.c ret = wait_for_completion_timeout(&nfc->completion, nfc 477 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 481 drivers/mtd/nand/raw/meson_nand.c nfc->daddr = dma_map_single(nfc->dev, databuf, datalen, dir); nfc 482 drivers/mtd/nand/raw/meson_nand.c ret = dma_mapping_error(nfc->dev, nfc->daddr); nfc 484 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "DMA mapping error\n"); nfc 487 drivers/mtd/nand/raw/meson_nand.c cmd = GENCMDDADDRL(NFC_CMD_ADL, nfc->daddr); nfc 488 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 490 drivers/mtd/nand/raw/meson_nand.c cmd = GENCMDDADDRH(NFC_CMD_ADH, nfc->daddr); nfc 491 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 494 drivers/mtd/nand/raw/meson_nand.c nfc->iaddr = dma_map_single(nfc->dev, infobuf, infolen, dir); nfc 495 drivers/mtd/nand/raw/meson_nand.c ret = dma_mapping_error(nfc->dev, nfc->iaddr); nfc 497 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "DMA mapping error\n"); nfc 498 drivers/mtd/nand/raw/meson_nand.c dma_unmap_single(nfc->dev, nfc 499 drivers/mtd/nand/raw/meson_nand.c nfc->daddr, datalen, dir); nfc 502 drivers/mtd/nand/raw/meson_nand.c cmd = GENCMDIADDRL(NFC_CMD_AIL, nfc->iaddr); nfc 503 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 505 drivers/mtd/nand/raw/meson_nand.c cmd = GENCMDIADDRH(NFC_CMD_AIH, nfc->iaddr); nfc 506 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 516 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 518 drivers/mtd/nand/raw/meson_nand.c dma_unmap_single(nfc->dev, nfc->daddr, datalen, dir); nfc 520 drivers/mtd/nand/raw/meson_nand.c dma_unmap_single(nfc->dev, nfc->iaddr, infolen, dir); nfc 525 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 540 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 542 drivers/mtd/nand/raw/meson_nand.c meson_nfc_drain_cmd(nfc); nfc 543 drivers/mtd/nand/raw/meson_nand.c meson_nfc_wait_cmd_finish(nfc, 1000); nfc 554 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 564 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 566 drivers/mtd/nand/raw/meson_nand.c meson_nfc_drain_cmd(nfc); nfc 567 drivers/mtd/nand/raw/meson_nand.c meson_nfc_wait_cmd_finish(nfc, 1000); nfc 577 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 580 drivers/mtd/nand/raw/meson_nand.c u32 *addrs = nfc->cmdfifo.rw.addrs; nfc 581 drivers/mtd/nand/raw/meson_nand.c u32 cs = nfc->param.chip_select; nfc 588 drivers/mtd/nand/raw/meson_nand.c nfc->cmdfifo.rw.cmd0 = cs | NFC_CMD_CLE | cmd0; nfc 612 drivers/mtd/nand/raw/meson_nand.c writel_relaxed(nfc->cmdfifo.cmd[i], nfc 613 drivers/mtd/nand/raw/meson_nand.c nfc->reg_base + NFC_REG_CMD); nfc 616 drivers/mtd/nand/raw/meson_nand.c nfc->cmdfifo.rw.cmd1 = cs | NFC_CMD_CLE | NAND_CMD_READSTART; nfc 617 drivers/mtd/nand/raw/meson_nand.c writel(nfc->cmdfifo.rw.cmd1, nfc->reg_base + NFC_REG_CMD); nfc 618 drivers/mtd/nand/raw/meson_nand.c meson_nfc_queue_rb(nfc, PSEC_TO_MSEC(sdr->tR_max)); nfc 620 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, nfc->timing.tadl); nfc 633 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 654 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_seed(nfc, page); nfc 662 drivers/mtd/nand/raw/meson_nand.c cmd = nfc->param.chip_select | NFC_CMD_CLE | NAND_CMD_PAGEPROG; nfc 663 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 664 drivers/mtd/nand/raw/meson_nand.c meson_nfc_queue_rb(nfc, PSEC_TO_MSEC(sdr->tPROG_max)); nfc 695 drivers/mtd/nand/raw/meson_nand.c static void meson_nfc_check_ecc_pages_valid(struct meson_nfc *nfc, nfc 717 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 738 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_seed(nfc, page); nfc 746 drivers/mtd/nand/raw/meson_nand.c ret = meson_nfc_wait_dma_finish(nfc); nfc 747 drivers/mtd/nand/raw/meson_nand.c meson_nfc_check_ecc_pages_valid(nfc, nand, raw); nfc 896 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 910 drivers/mtd/nand/raw/meson_nand.c cmd = nfc->param.chip_select | NFC_CMD_CLE; nfc 912 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 913 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, delay_idle); nfc 918 drivers/mtd/nand/raw/meson_nand.c cmd = nfc->param.chip_select | NFC_CMD_ALE; nfc 920 drivers/mtd/nand/raw/meson_nand.c writel(cmd, nfc->reg_base + NFC_REG_CMD); nfc 922 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, delay_idle); nfc 942 drivers/mtd/nand/raw/meson_nand.c meson_nfc_queue_rb(nfc, instr->ctx.waitrdy.timeout_ms); nfc 944 drivers/mtd/nand/raw/meson_nand.c meson_nfc_cmd_idle(nfc, delay_idle); nfc 948 drivers/mtd/nand/raw/meson_nand.c meson_nfc_wait_cmd_finish(nfc, 1000); nfc 985 drivers/mtd/nand/raw/meson_nand.c static int meson_nfc_clk_init(struct meson_nfc *nfc) nfc 990 drivers/mtd/nand/raw/meson_nand.c nfc->core_clk = devm_clk_get(nfc->dev, "core"); nfc 991 drivers/mtd/nand/raw/meson_nand.c if (IS_ERR(nfc->core_clk)) { nfc 992 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to get core clock\n"); nfc 993 drivers/mtd/nand/raw/meson_nand.c return PTR_ERR(nfc->core_clk); nfc 996 drivers/mtd/nand/raw/meson_nand.c nfc->device_clk = devm_clk_get(nfc->dev, "device"); nfc 997 drivers/mtd/nand/raw/meson_nand.c if (IS_ERR(nfc->device_clk)) { nfc 998 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to get device clock\n"); nfc 999 drivers/mtd/nand/raw/meson_nand.c return PTR_ERR(nfc->device_clk); nfc 1002 drivers/mtd/nand/raw/meson_nand.c nfc->phase_tx = devm_clk_get(nfc->dev, "tx"); nfc 1003 drivers/mtd/nand/raw/meson_nand.c if (IS_ERR(nfc->phase_tx)) { nfc 1004 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to get TX clk\n"); nfc 1005 drivers/mtd/nand/raw/meson_nand.c return PTR_ERR(nfc->phase_tx); nfc 1008 drivers/mtd/nand/raw/meson_nand.c nfc->phase_rx = devm_clk_get(nfc->dev, "rx"); nfc 1009 drivers/mtd/nand/raw/meson_nand.c if (IS_ERR(nfc->phase_rx)) { nfc 1010 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to get RX clk\n"); nfc 1011 drivers/mtd/nand/raw/meson_nand.c return PTR_ERR(nfc->phase_rx); nfc 1015 drivers/mtd/nand/raw/meson_nand.c regmap_update_bits(nfc->reg_clk, nfc 1018 drivers/mtd/nand/raw/meson_nand.c ret = clk_prepare_enable(nfc->core_clk); nfc 1020 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to enable core clock\n"); nfc 1024 drivers/mtd/nand/raw/meson_nand.c ret = clk_prepare_enable(nfc->device_clk); nfc 1026 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to enable device clock\n"); nfc 1030 drivers/mtd/nand/raw/meson_nand.c ret = clk_prepare_enable(nfc->phase_tx); nfc 1032 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to enable TX clock\n"); nfc 1036 drivers/mtd/nand/raw/meson_nand.c ret = clk_prepare_enable(nfc->phase_rx); nfc 1038 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to enable RX clock\n"); nfc 1042 drivers/mtd/nand/raw/meson_nand.c ret = clk_set_rate(nfc->device_clk, 24000000); nfc 1048 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->phase_tx); nfc 1050 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->device_clk); nfc 1052 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->core_clk); nfc 1056 drivers/mtd/nand/raw/meson_nand.c static void meson_nfc_disable_clk(struct meson_nfc *nfc) nfc 1058 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->phase_rx); nfc 1059 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->phase_tx); nfc 1060 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->device_clk); nfc 1061 drivers/mtd/nand/raw/meson_nand.c clk_disable_unprepare(nfc->core_clk); nfc 1164 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = nand_get_controller_data(nand); nfc 1171 drivers/mtd/nand/raw/meson_nand.c mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL, nfc 1173 drivers/mtd/nand/raw/meson_nand.c dev_name(nfc->dev), nfc 1184 drivers/mtd/nand/raw/meson_nand.c ret = nand_ecc_choose_conf(nand, nfc->data->ecc_caps, nfc 1187 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "failed to ECC init\n"); nfc 1209 drivers/mtd/nand/raw/meson_nand.c dev_err(nfc->dev, "16bits bus width not supported"); nfc 1228 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc, struct device_node *np) nfc 1257 drivers/mtd/nand/raw/meson_nand.c if (test_and_set_bit(tmp, &nfc->assigned_cs)) { nfc 1264 drivers/mtd/nand/raw/meson_nand.c nand->controller = &nfc->controller; nfc 1267 drivers/mtd/nand/raw/meson_nand.c nand_set_controller_data(nand, nfc); nfc 1285 drivers/mtd/nand/raw/meson_nand.c list_add_tail(&meson_chip->node, &nfc->chips); nfc 1290 drivers/mtd/nand/raw/meson_nand.c static int meson_nfc_nand_chip_cleanup(struct meson_nfc *nfc) nfc 1296 drivers/mtd/nand/raw/meson_nand.c while (!list_empty(&nfc->chips)) { nfc 1297 drivers/mtd/nand/raw/meson_nand.c meson_chip = list_first_entry(&nfc->chips, nfc 1313 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc) nfc 1320 drivers/mtd/nand/raw/meson_nand.c ret = meson_nfc_nand_chip_init(dev, nfc, nand_np); nfc 1322 drivers/mtd/nand/raw/meson_nand.c meson_nfc_nand_chip_cleanup(nfc); nfc 1333 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = id; nfc 1336 drivers/mtd/nand/raw/meson_nand.c cfg = readl(nfc->reg_base + NFC_REG_CFG); nfc 1341 drivers/mtd/nand/raw/meson_nand.c writel(cfg, nfc->reg_base + NFC_REG_CFG); nfc 1343 drivers/mtd/nand/raw/meson_nand.c complete(&nfc->completion); nfc 1370 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc; nfc 1374 drivers/mtd/nand/raw/meson_nand.c nfc = devm_kzalloc(dev, sizeof(*nfc), GFP_KERNEL); nfc 1375 drivers/mtd/nand/raw/meson_nand.c if (!nfc) nfc 1378 drivers/mtd/nand/raw/meson_nand.c nfc->data = of_device_get_match_data(&pdev->dev); nfc 1379 drivers/mtd/nand/raw/meson_nand.c if (!nfc->data) nfc 1382 drivers/mtd/nand/raw/meson_nand.c nand_controller_init(&nfc->controller); nfc 1383 drivers/mtd/nand/raw/meson_nand.c INIT_LIST_HEAD(&nfc->chips); nfc 1384 drivers/mtd/nand/raw/meson_nand.c init_completion(&nfc->completion); nfc 1386 drivers/mtd/nand/raw/meson_nand.c nfc->dev = dev; nfc 1389 drivers/mtd/nand/raw/meson_nand.c nfc->reg_base = devm_ioremap_resource(dev, res); nfc 1390 drivers/mtd/nand/raw/meson_nand.c if (IS_ERR(nfc->reg_base)) nfc 1391 drivers/mtd/nand/raw/meson_nand.c return PTR_ERR(nfc->reg_base); nfc 1393 drivers/mtd/nand/raw/meson_nand.c nfc->reg_clk = nfc 1396 drivers/mtd/nand/raw/meson_nand.c if (IS_ERR(nfc->reg_clk)) { nfc 1398 drivers/mtd/nand/raw/meson_nand.c return PTR_ERR(nfc->reg_clk); nfc 1407 drivers/mtd/nand/raw/meson_nand.c ret = meson_nfc_clk_init(nfc); nfc 1413 drivers/mtd/nand/raw/meson_nand.c writel(0, nfc->reg_base + NFC_REG_CFG); nfc 1414 drivers/mtd/nand/raw/meson_nand.c ret = devm_request_irq(dev, irq, meson_nfc_irq, 0, dev_name(dev), nfc); nfc 1427 drivers/mtd/nand/raw/meson_nand.c platform_set_drvdata(pdev, nfc); nfc 1429 drivers/mtd/nand/raw/meson_nand.c ret = meson_nfc_nand_chips_init(dev, nfc); nfc 1437 drivers/mtd/nand/raw/meson_nand.c meson_nfc_disable_clk(nfc); nfc 1443 drivers/mtd/nand/raw/meson_nand.c struct meson_nfc *nfc = platform_get_drvdata(pdev); nfc 1446 drivers/mtd/nand/raw/meson_nand.c ret = meson_nfc_nand_chip_cleanup(nfc); nfc 1450 drivers/mtd/nand/raw/meson_nand.c meson_nfc_disable_clk(nfc); nfc 217 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 219 drivers/mtd/nand/raw/mtk_nand.c return nfc->buffer + i * mtk_data_len(chip); nfc 224 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 226 drivers/mtd/nand/raw/mtk_nand.c return nfc->buffer + i * mtk_data_len(chip) + chip->ecc.size; nfc 229 drivers/mtd/nand/raw/mtk_nand.c static inline void nfi_writel(struct mtk_nfc *nfc, u32 val, u32 reg) nfc 231 drivers/mtd/nand/raw/mtk_nand.c writel(val, nfc->regs + reg); nfc 234 drivers/mtd/nand/raw/mtk_nand.c static inline void nfi_writew(struct mtk_nfc *nfc, u16 val, u32 reg) nfc 236 drivers/mtd/nand/raw/mtk_nand.c writew(val, nfc->regs + reg); nfc 239 drivers/mtd/nand/raw/mtk_nand.c static inline void nfi_writeb(struct mtk_nfc *nfc, u8 val, u32 reg) nfc 241 drivers/mtd/nand/raw/mtk_nand.c writeb(val, nfc->regs + reg); nfc 244 drivers/mtd/nand/raw/mtk_nand.c static inline u32 nfi_readl(struct mtk_nfc *nfc, u32 reg) nfc 246 drivers/mtd/nand/raw/mtk_nand.c return readl_relaxed(nfc->regs + reg); nfc 249 drivers/mtd/nand/raw/mtk_nand.c static inline u16 nfi_readw(struct mtk_nfc *nfc, u32 reg) nfc 251 drivers/mtd/nand/raw/mtk_nand.c return readw_relaxed(nfc->regs + reg); nfc 254 drivers/mtd/nand/raw/mtk_nand.c static inline u8 nfi_readb(struct mtk_nfc *nfc, u32 reg) nfc 256 drivers/mtd/nand/raw/mtk_nand.c return readb_relaxed(nfc->regs + reg); nfc 259 drivers/mtd/nand/raw/mtk_nand.c static void mtk_nfc_hw_reset(struct mtk_nfc *nfc) nfc 261 drivers/mtd/nand/raw/mtk_nand.c struct device *dev = nfc->dev; nfc 266 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, CON_FIFO_FLUSH | CON_NFI_RST, NFI_CON); nfc 269 drivers/mtd/nand/raw/mtk_nand.c ret = readl_poll_timeout(nfc->regs + NFI_MASTER_STA, val, nfc 277 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, CON_FIFO_FLUSH | CON_NFI_RST, NFI_CON); nfc 278 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, STAR_DE, NFI_STRDATA); nfc 281 drivers/mtd/nand/raw/mtk_nand.c static int mtk_nfc_send_command(struct mtk_nfc *nfc, u8 command) nfc 283 drivers/mtd/nand/raw/mtk_nand.c struct device *dev = nfc->dev; nfc 287 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, command, NFI_CMD); nfc 289 drivers/mtd/nand/raw/mtk_nand.c ret = readl_poll_timeout_atomic(nfc->regs + NFI_STA, val, nfc 299 drivers/mtd/nand/raw/mtk_nand.c static int mtk_nfc_send_address(struct mtk_nfc *nfc, int addr) nfc 301 drivers/mtd/nand/raw/mtk_nand.c struct device *dev = nfc->dev; nfc 305 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, addr, NFI_COLADDR); nfc 306 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, 0, NFI_ROWADDR); nfc 307 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, 1, NFI_ADDRNOB); nfc 309 drivers/mtd/nand/raw/mtk_nand.c ret = readl_poll_timeout_atomic(nfc->regs + NFI_STA, val, nfc 323 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 357 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "invalid page len: %d\n", mtd->writesize); nfc 368 drivers/mtd/nand/raw/mtk_nand.c for (i = 0; i < nfc->caps->num_spare_size; i++) { nfc 369 drivers/mtd/nand/raw/mtk_nand.c if (nfc->caps->spare_size[i] == spare) nfc 373 drivers/mtd/nand/raw/mtk_nand.c if (i == nfc->caps->num_spare_size) { nfc 374 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "invalid spare size %d\n", spare); nfc 378 drivers/mtd/nand/raw/mtk_nand.c fmt |= i << nfc->caps->pageformat_spare_shift; nfc 382 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, fmt, NFI_PAGEFMT); nfc 384 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.strength = chip->ecc.strength; nfc 385 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.len = chip->ecc.size + mtk_nand->fdm.ecc_size; nfc 392 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(nand); nfc 400 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, mtk_nand->sels[chip], NFI_CSEL); nfc 405 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(nand); nfc 407 drivers/mtd/nand/raw/mtk_nand.c if (nfi_readl(nfc, NFI_STA) & STA_BUSY) nfc 416 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 419 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_send_address(nfc, dat); nfc 421 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_hw_reset(nfc); nfc 423 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, CNFG_OP_CUST, NFI_CNFG); nfc 424 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_send_command(nfc, dat); nfc 428 drivers/mtd/nand/raw/mtk_nand.c static inline void mtk_nfc_wait_ioready(struct mtk_nfc *nfc) nfc 433 drivers/mtd/nand/raw/mtk_nand.c rc = readb_poll_timeout_atomic(nfc->regs + NFI_PIO_DIRDY, val, nfc 436 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "data not ready\n"); nfc 441 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 445 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readl(nfc, NFI_STA) & NFI_FSM_MASK; nfc 447 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readw(nfc, NFI_CNFG); nfc 449 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 455 drivers/mtd/nand/raw/mtk_nand.c reg = (nfc->caps->max_sector << CON_SEC_SHIFT) | CON_BRD; nfc 456 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, reg, NFI_CON); nfc 459 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, STAR_EN, NFI_STRDATA); nfc 462 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_wait_ioready(nfc); nfc 464 drivers/mtd/nand/raw/mtk_nand.c return nfi_readb(nfc, NFI_DATAR); nfc 477 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 480 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readl(nfc, NFI_STA) & NFI_FSM_MASK; nfc 483 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readw(nfc, NFI_CNFG) | CNFG_BYTE_RW; nfc 484 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 486 drivers/mtd/nand/raw/mtk_nand.c reg = nfc->caps->max_sector << CON_SEC_SHIFT | CON_BWR; nfc 487 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, reg, NFI_CON); nfc 489 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, STAR_EN, NFI_STRDATA); nfc 492 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_wait_ioready(nfc); nfc 493 drivers/mtd/nand/raw/mtk_nand.c nfi_writeb(nfc, byte, NFI_DATAW); nfc 507 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 519 drivers/mtd/nand/raw/mtk_nand.c rate = clk_get_rate(nfc->clk.nfi_clk); nfc 521 drivers/mtd/nand/raw/mtk_nand.c rate /= nfc->caps->nfi_clk_div; nfc 588 drivers/mtd/nand/raw/mtk_nand.c temp = nfi_readl(nfc, NFI_DEBUG_CON1); nfc 591 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, temp, NFI_DEBUG_CON1); nfc 607 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, trlt, NFI_ACCCON); nfc 614 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 618 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.mode = ECC_DMA_MODE; nfc 619 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.op = ECC_ENCODE; nfc 621 drivers/mtd/nand/raw/mtk_nand.c return mtk_ecc_encode(nfc->ecc, &nfc->ecc_cfg, data, size); nfc 648 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 656 drivers/mtd/nand/raw/mtk_nand.c memset(nfc->buffer, 0xff, mtd->writesize + mtd->oobsize); nfc 665 drivers/mtd/nand/raw/mtk_nand.c mtk_nand->bad_mark.bm_swap(mtd, nfc->buffer, 1); nfc 682 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 686 drivers/mtd/nand/raw/mtk_nand.c memset(nfc->buffer, 0xff, mtd->writesize + mtd->oobsize); nfc 693 drivers/mtd/nand/raw/mtk_nand.c mtk_nand->bad_mark.bm_swap(mtd, nfc->buffer, 1); nfc 702 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 711 drivers/mtd/nand/raw/mtk_nand.c vall = nfi_readl(nfc, NFI_FDML(i)); nfc 712 drivers/mtd/nand/raw/mtk_nand.c valm = nfi_readl(nfc, NFI_FDMM(i)); nfc 721 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 740 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, vall, NFI_FDML(i)); nfc 741 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, valm, NFI_FDMM(i)); nfc 748 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 749 drivers/mtd/nand/raw/mtk_nand.c struct device *dev = nfc->dev; nfc 755 drivers/mtd/nand/raw/mtk_nand.c ret = dma_mapping_error(nfc->dev, addr); nfc 757 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "dma mapping error\n"); nfc 761 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readw(nfc, NFI_CNFG) | CNFG_AHB | CNFG_DMA_BURST_EN; nfc 762 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 764 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, chip->ecc.steps << CON_SEC_SHIFT, NFI_CON); nfc 765 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, lower_32_bits(addr), NFI_STRADDR); nfc 766 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, INTR_AHB_DONE_EN, NFI_INTR_EN); nfc 768 drivers/mtd/nand/raw/mtk_nand.c init_completion(&nfc->done); nfc 770 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readl(nfc, NFI_CON) | CON_BWR; nfc 771 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, reg, NFI_CON); nfc 772 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, STAR_EN, NFI_STRDATA); nfc 774 drivers/mtd/nand/raw/mtk_nand.c ret = wait_for_completion_timeout(&nfc->done, msecs_to_jiffies(500)); nfc 777 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, 0, NFI_INTR_EN); nfc 782 drivers/mtd/nand/raw/mtk_nand.c ret = readl_poll_timeout_atomic(nfc->regs + NFI_ADDRCNTR, reg, nfc 790 drivers/mtd/nand/raw/mtk_nand.c dma_unmap_single(nfc->dev, addr, len, DMA_TO_DEVICE); nfc 791 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, 0, NFI_CON); nfc 799 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 810 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readw(nfc, NFI_CNFG) | CNFG_AUTO_FMT_EN; nfc 811 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg | CNFG_HW_ECC_EN, NFI_CNFG); nfc 813 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.op = ECC_ENCODE; nfc 814 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.mode = ECC_NFI_MODE; nfc 815 drivers/mtd/nand/raw/mtk_nand.c ret = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg); nfc 818 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readw(nfc, NFI_CNFG); nfc 820 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 825 drivers/mtd/nand/raw/mtk_nand.c memcpy(nfc->buffer, buf, mtd->writesize); nfc 826 drivers/mtd/nand/raw/mtk_nand.c mtk_nand->bad_mark.bm_swap(mtd, nfc->buffer, raw); nfc 827 drivers/mtd/nand/raw/mtk_nand.c bufpoi = nfc->buffer; nfc 839 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_disable(nfc->ecc); nfc 857 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 860 drivers/mtd/nand/raw/mtk_nand.c return mtk_nfc_write_page(mtd, chip, nfc->buffer, pg, 1); nfc 868 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 876 drivers/mtd/nand/raw/mtk_nand.c return mtk_nfc_write_page(mtd, chip, nfc->buffer, page, 1); nfc 888 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 894 drivers/mtd/nand/raw/mtk_nand.c rc = nfi_readl(nfc, NFI_STA) & STA_EMP_PAGE; nfc 902 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_get_stats(nfc->ecc, &stats, sectors); nfc 913 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 934 drivers/mtd/nand/raw/mtk_nand.c addr = dma_map_single(nfc->dev, buf, len, DMA_FROM_DEVICE); nfc 935 drivers/mtd/nand/raw/mtk_nand.c rc = dma_mapping_error(nfc->dev, addr); nfc 937 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "dma mapping error\n"); nfc 942 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readw(nfc, NFI_CNFG); nfc 946 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 948 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.mode = ECC_NFI_MODE; nfc 949 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.sectors = sectors; nfc 950 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc_cfg.op = ECC_DECODE; nfc 951 drivers/mtd/nand/raw/mtk_nand.c rc = mtk_ecc_enable(nfc->ecc, &nfc->ecc_cfg); nfc 953 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "ecc enable\n"); nfc 957 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 958 drivers/mtd/nand/raw/mtk_nand.c dma_unmap_single(nfc->dev, addr, len, DMA_FROM_DEVICE); nfc 963 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, reg, NFI_CNFG); nfc 966 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, sectors << CON_SEC_SHIFT, NFI_CON); nfc 967 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, INTR_AHB_DONE_EN, NFI_INTR_EN); nfc 968 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, lower_32_bits(addr), NFI_STRADDR); nfc 970 drivers/mtd/nand/raw/mtk_nand.c init_completion(&nfc->done); nfc 971 drivers/mtd/nand/raw/mtk_nand.c reg = nfi_readl(nfc, NFI_CON) | CON_BRD; nfc 972 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, reg, NFI_CON); nfc 973 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, STAR_EN, NFI_STRDATA); nfc 975 drivers/mtd/nand/raw/mtk_nand.c rc = wait_for_completion_timeout(&nfc->done, msecs_to_jiffies(500)); nfc 977 drivers/mtd/nand/raw/mtk_nand.c dev_warn(nfc->dev, "read ahb/dma done timeout\n"); nfc 979 drivers/mtd/nand/raw/mtk_nand.c rc = readl_poll_timeout_atomic(nfc->regs + NFI_BYTELEN, reg, nfc 983 drivers/mtd/nand/raw/mtk_nand.c dev_err(nfc->dev, "subpage done timeout\n"); nfc 986 drivers/mtd/nand/raw/mtk_nand.c rc = mtk_ecc_wait_done(nfc->ecc, ECC_DECODE); nfc 992 drivers/mtd/nand/raw/mtk_nand.c dma_unmap_single(nfc->dev, addr, len, DMA_FROM_DEVICE); nfc 997 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_disable(nfc->ecc); nfc 1002 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, 0, NFI_CON); nfc 1027 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 1031 drivers/mtd/nand/raw/mtk_nand.c memset(nfc->buffer, 0xff, mtd->writesize + mtd->oobsize); nfc 1032 drivers/mtd/nand/raw/mtk_nand.c ret = mtk_nfc_read_subpage(mtd, chip, 0, mtd->writesize, nfc->buffer, nfc 1041 drivers/mtd/nand/raw/mtk_nand.c mtk_nand->bad_mark.bm_swap(mtd, nfc->buffer, 1); nfc 1056 drivers/mtd/nand/raw/mtk_nand.c static inline void mtk_nfc_hw_init(struct mtk_nfc *nfc) nfc 1064 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, 0xf1, NFI_CNRNB); nfc 1065 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, PAGEFMT_8K_16K, NFI_PAGEFMT); nfc 1067 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_hw_reset(nfc); nfc 1069 drivers/mtd/nand/raw/mtk_nand.c nfi_readl(nfc, NFI_INTR_STA); nfc 1070 drivers/mtd/nand/raw/mtk_nand.c nfi_writel(nfc, 0, NFI_INTR_EN); nfc 1075 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = id; nfc 1078 drivers/mtd/nand/raw/mtk_nand.c sta = nfi_readw(nfc, NFI_INTR_STA); nfc 1079 drivers/mtd/nand/raw/mtk_nand.c ien = nfi_readw(nfc, NFI_INTR_EN); nfc 1084 drivers/mtd/nand/raw/mtk_nand.c nfi_writew(nfc, ~sta & ien, NFI_INTR_EN); nfc 1085 drivers/mtd/nand/raw/mtk_nand.c complete(&nfc->done); nfc 1161 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(nand); nfc 1165 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_get_parity_bits(nfc->ecc), 8); nfc 1192 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(nand); nfc 1193 drivers/mtd/nand/raw/mtk_nand.c const u8 *spare = nfc->caps->spare_size; nfc 1205 drivers/mtd/nand/raw/mtk_nand.c for (i = 0; i < nfc->caps->num_spare_size; i++) { nfc 1224 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(nand); nfc 1246 drivers/mtd/nand/raw/mtk_nand.c nfc->caps->max_sector_size > 512) { nfc 1261 drivers/mtd/nand/raw/mtk_nand.c free = (nand->ecc.strength * mtk_ecc_get_parity_bits(nfc->ecc) nfc 1273 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_get_parity_bits(nfc->ecc); nfc 1277 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_get_parity_bits(nfc->ecc); nfc 1281 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_adjust_strength(nfc->ecc, &nand->ecc.strength); nfc 1293 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = nand_get_controller_data(chip); nfc 1319 drivers/mtd/nand/raw/mtk_nand.c nfc->buffer = devm_kzalloc(dev, len, GFP_KERNEL); nfc 1320 drivers/mtd/nand/raw/mtk_nand.c if (!nfc->buffer) nfc 1331 drivers/mtd/nand/raw/mtk_nand.c static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc, nfc 1369 drivers/mtd/nand/raw/mtk_nand.c if (test_and_set_bit(tmp, &nfc->assigned_cs)) { nfc 1378 drivers/mtd/nand/raw/mtk_nand.c nand->controller = &nfc->controller; nfc 1381 drivers/mtd/nand/raw/mtk_nand.c nand_set_controller_data(nand, nfc); nfc 1413 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_hw_init(nfc); nfc 1426 drivers/mtd/nand/raw/mtk_nand.c list_add_tail(&chip->node, &nfc->chips); nfc 1431 drivers/mtd/nand/raw/mtk_nand.c static int mtk_nfc_nand_chips_init(struct device *dev, struct mtk_nfc *nfc) nfc 1438 drivers/mtd/nand/raw/mtk_nand.c ret = mtk_nfc_nand_chip_init(dev, nfc, nand_np); nfc 1494 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc; nfc 1498 drivers/mtd/nand/raw/mtk_nand.c nfc = devm_kzalloc(dev, sizeof(*nfc), GFP_KERNEL); nfc 1499 drivers/mtd/nand/raw/mtk_nand.c if (!nfc) nfc 1502 drivers/mtd/nand/raw/mtk_nand.c nand_controller_init(&nfc->controller); nfc 1503 drivers/mtd/nand/raw/mtk_nand.c INIT_LIST_HEAD(&nfc->chips); nfc 1504 drivers/mtd/nand/raw/mtk_nand.c nfc->controller.ops = &mtk_nfc_controller_ops; nfc 1507 drivers/mtd/nand/raw/mtk_nand.c nfc->ecc = of_mtk_ecc_get(np); nfc 1508 drivers/mtd/nand/raw/mtk_nand.c if (IS_ERR(nfc->ecc)) nfc 1509 drivers/mtd/nand/raw/mtk_nand.c return PTR_ERR(nfc->ecc); nfc 1510 drivers/mtd/nand/raw/mtk_nand.c else if (!nfc->ecc) nfc 1513 drivers/mtd/nand/raw/mtk_nand.c nfc->caps = of_device_get_match_data(dev); nfc 1514 drivers/mtd/nand/raw/mtk_nand.c nfc->dev = dev; nfc 1517 drivers/mtd/nand/raw/mtk_nand.c nfc->regs = devm_ioremap_resource(dev, res); nfc 1518 drivers/mtd/nand/raw/mtk_nand.c if (IS_ERR(nfc->regs)) { nfc 1519 drivers/mtd/nand/raw/mtk_nand.c ret = PTR_ERR(nfc->regs); nfc 1523 drivers/mtd/nand/raw/mtk_nand.c nfc->clk.nfi_clk = devm_clk_get(dev, "nfi_clk"); nfc 1524 drivers/mtd/nand/raw/mtk_nand.c if (IS_ERR(nfc->clk.nfi_clk)) { nfc 1526 drivers/mtd/nand/raw/mtk_nand.c ret = PTR_ERR(nfc->clk.nfi_clk); nfc 1530 drivers/mtd/nand/raw/mtk_nand.c nfc->clk.pad_clk = devm_clk_get(dev, "pad_clk"); nfc 1531 drivers/mtd/nand/raw/mtk_nand.c if (IS_ERR(nfc->clk.pad_clk)) { nfc 1533 drivers/mtd/nand/raw/mtk_nand.c ret = PTR_ERR(nfc->clk.pad_clk); nfc 1537 drivers/mtd/nand/raw/mtk_nand.c ret = mtk_nfc_enable_clk(dev, &nfc->clk); nfc 1548 drivers/mtd/nand/raw/mtk_nand.c ret = devm_request_irq(dev, irq, mtk_nfc_irq, 0x0, "mtk-nand", nfc); nfc 1560 drivers/mtd/nand/raw/mtk_nand.c platform_set_drvdata(pdev, nfc); nfc 1562 drivers/mtd/nand/raw/mtk_nand.c ret = mtk_nfc_nand_chips_init(dev, nfc); nfc 1571 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_disable_clk(&nfc->clk); nfc 1574 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_release(nfc->ecc); nfc 1581 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = platform_get_drvdata(pdev); nfc 1584 drivers/mtd/nand/raw/mtk_nand.c while (!list_empty(&nfc->chips)) { nfc 1585 drivers/mtd/nand/raw/mtk_nand.c chip = list_first_entry(&nfc->chips, struct mtk_nfc_nand_chip, nfc 1591 drivers/mtd/nand/raw/mtk_nand.c mtk_ecc_release(nfc->ecc); nfc 1592 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_disable_clk(&nfc->clk); nfc 1600 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = dev_get_drvdata(dev); nfc 1602 drivers/mtd/nand/raw/mtk_nand.c mtk_nfc_disable_clk(&nfc->clk); nfc 1609 drivers/mtd/nand/raw/mtk_nand.c struct mtk_nfc *nfc = dev_get_drvdata(dev); nfc 1617 drivers/mtd/nand/raw/mtk_nand.c ret = mtk_nfc_enable_clk(dev, &nfc->clk); nfc 1622 drivers/mtd/nand/raw/mtk_nand.c list_for_each_entry(chip, &nfc->chips, node) { nfc 184 drivers/mtd/nand/raw/mxic_nand.c static int mxic_nfc_clk_enable(struct mxic_nand_ctlr *nfc) nfc 188 drivers/mtd/nand/raw/mxic_nand.c ret = clk_prepare_enable(nfc->ps_clk); nfc 192 drivers/mtd/nand/raw/mxic_nand.c ret = clk_prepare_enable(nfc->send_clk); nfc 196 drivers/mtd/nand/raw/mxic_nand.c ret = clk_prepare_enable(nfc->send_dly_clk); nfc 203 drivers/mtd/nand/raw/mxic_nand.c clk_disable_unprepare(nfc->send_clk); nfc 205 drivers/mtd/nand/raw/mxic_nand.c clk_disable_unprepare(nfc->ps_clk); nfc 210 drivers/mtd/nand/raw/mxic_nand.c static void mxic_nfc_clk_disable(struct mxic_nand_ctlr *nfc) nfc 212 drivers/mtd/nand/raw/mxic_nand.c clk_disable_unprepare(nfc->send_clk); nfc 213 drivers/mtd/nand/raw/mxic_nand.c clk_disable_unprepare(nfc->send_dly_clk); nfc 214 drivers/mtd/nand/raw/mxic_nand.c clk_disable_unprepare(nfc->ps_clk); nfc 217 drivers/mtd/nand/raw/mxic_nand.c static void mxic_nfc_set_input_delay(struct mxic_nand_ctlr *nfc, u8 idly_code) nfc 223 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + IDLY_CODE(0)); nfc 228 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + IDLY_CODE(1)); nfc 231 drivers/mtd/nand/raw/mxic_nand.c static int mxic_nfc_clk_setup(struct mxic_nand_ctlr *nfc, unsigned long freq) nfc 235 drivers/mtd/nand/raw/mxic_nand.c ret = clk_set_rate(nfc->send_clk, freq); nfc 239 drivers/mtd/nand/raw/mxic_nand.c ret = clk_set_rate(nfc->send_dly_clk, freq); nfc 247 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_set_input_delay(nfc, 0xf); nfc 257 drivers/mtd/nand/raw/mxic_nand.c ret = clk_set_phase(nfc->send_dly_clk, 9 * freq / 25000000); nfc 264 drivers/mtd/nand/raw/mxic_nand.c static int mxic_nfc_set_freq(struct mxic_nand_ctlr *nfc, unsigned long freq) nfc 271 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_clk_disable(nfc); nfc 272 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_clk_setup(nfc, freq); nfc 276 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_clk_enable(nfc); nfc 285 drivers/mtd/nand/raw/mxic_nand.c struct mxic_nand_ctlr *nfc = dev_id; nfc 288 drivers/mtd/nand/raw/mxic_nand.c sts = readl(nfc->regs + INT_STS); nfc 290 drivers/mtd/nand/raw/mxic_nand.c complete(&nfc->complete); nfc 297 drivers/mtd/nand/raw/mxic_nand.c static void mxic_nfc_hw_init(struct mxic_nand_ctlr *nfc) nfc 301 drivers/mtd/nand/raw/mxic_nand.c HC_CFG_IDLE_SIO_LVL(1), nfc->regs + HC_CFG); nfc 302 drivers/mtd/nand/raw/mxic_nand.c writel(INT_STS_ALL, nfc->regs + INT_STS_EN); nfc 303 drivers/mtd/nand/raw/mxic_nand.c writel(INT_RDY_PIN, nfc->regs + INT_SIG_EN); nfc 304 drivers/mtd/nand/raw/mxic_nand.c writel(0x0, nfc->regs + ONFI_DIN_CNT(0)); nfc 305 drivers/mtd/nand/raw/mxic_nand.c writel(0, nfc->regs + LRD_CFG); nfc 306 drivers/mtd/nand/raw/mxic_nand.c writel(0, nfc->regs + LRD_CTRL); nfc 307 drivers/mtd/nand/raw/mxic_nand.c writel(0x0, nfc->regs + HC_EN); nfc 310 drivers/mtd/nand/raw/mxic_nand.c static void mxic_nfc_cs_enable(struct mxic_nand_ctlr *nfc) nfc 312 drivers/mtd/nand/raw/mxic_nand.c writel(readl(nfc->regs + HC_CFG) | HC_CFG_MAN_CS_EN, nfc 313 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + HC_CFG); nfc 314 drivers/mtd/nand/raw/mxic_nand.c writel(HC_CFG_MAN_CS_ASSERT | readl(nfc->regs + HC_CFG), nfc 315 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + HC_CFG); nfc 318 drivers/mtd/nand/raw/mxic_nand.c static void mxic_nfc_cs_disable(struct mxic_nand_ctlr *nfc) nfc 320 drivers/mtd/nand/raw/mxic_nand.c writel(~HC_CFG_MAN_CS_ASSERT & readl(nfc->regs + HC_CFG), nfc 321 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + HC_CFG); nfc 326 drivers/mtd/nand/raw/mxic_nand.c struct mxic_nand_ctlr *nfc = nand_get_controller_data(chip); nfc 329 drivers/mtd/nand/raw/mxic_nand.c ret = wait_for_completion_timeout(&nfc->complete, nfc 332 drivers/mtd/nand/raw/mxic_nand.c dev_err(nfc->dev, "nand device timeout\n"); nfc 339 drivers/mtd/nand/raw/mxic_nand.c static int mxic_nfc_data_xfer(struct mxic_nand_ctlr *nfc, const void *txbuf, nfc 356 drivers/mtd/nand/raw/mxic_nand.c ret = readl_poll_timeout(nfc->regs + INT_STS, sts, nfc 361 drivers/mtd/nand/raw/mxic_nand.c writel(data, nfc->regs + TXD(nbytes % 4)); nfc 363 drivers/mtd/nand/raw/mxic_nand.c ret = readl_poll_timeout(nfc->regs + INT_STS, sts, nfc 368 drivers/mtd/nand/raw/mxic_nand.c ret = readl_poll_timeout(nfc->regs + INT_STS, sts, nfc 374 drivers/mtd/nand/raw/mxic_nand.c data = readl(nfc->regs + RXD); nfc 379 drivers/mtd/nand/raw/mxic_nand.c if (readl(nfc->regs + INT_STS) & INT_RX_NOT_EMPTY) nfc 380 drivers/mtd/nand/raw/mxic_nand.c dev_warn(nfc->dev, "RX FIFO not empty\n"); nfc 391 drivers/mtd/nand/raw/mxic_nand.c struct mxic_nand_ctlr *nfc = nand_get_controller_data(chip); nfc 396 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_cs_enable(nfc); nfc 397 drivers/mtd/nand/raw/mxic_nand.c init_completion(&nfc->complete); nfc 403 drivers/mtd/nand/raw/mxic_nand.c writel(0, nfc->regs + HC_EN); nfc 404 drivers/mtd/nand/raw/mxic_nand.c writel(HC_EN_BIT, nfc->regs + HC_EN); nfc 406 drivers/mtd/nand/raw/mxic_nand.c OP_CMD_BYTES(0), nfc->regs + SS_CTRL(0)); nfc 408 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_data_xfer(nfc, nfc 416 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + SS_CTRL(0)); nfc 417 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_data_xfer(nfc, nfc 423 drivers/mtd/nand/raw/mxic_nand.c writel(0x0, nfc->regs + ONFI_DIN_CNT(0)); nfc 425 drivers/mtd/nand/raw/mxic_nand.c OP_READ, nfc->regs + SS_CTRL(0)); nfc 426 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_data_xfer(nfc, NULL, nfc 433 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + ONFI_DIN_CNT(0)); nfc 435 drivers/mtd/nand/raw/mxic_nand.c nfc->regs + SS_CTRL(0)); nfc 436 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_data_xfer(nfc, nfc 446 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_cs_disable(nfc); nfc 454 drivers/mtd/nand/raw/mxic_nand.c struct mxic_nand_ctlr *nfc = nand_get_controller_data(chip); nfc 468 drivers/mtd/nand/raw/mxic_nand.c ret = mxic_nfc_set_freq(nfc, freq); nfc 470 drivers/mtd/nand/raw/mxic_nand.c dev_err(nfc->dev, "set freq:%ld failed\n", freq); nfc 473 drivers/mtd/nand/raw/mxic_nand.c writel(DATA_STROB_EDO_EN, nfc->regs + DATA_STROB); nfc 487 drivers/mtd/nand/raw/mxic_nand.c struct mxic_nand_ctlr *nfc; nfc 492 drivers/mtd/nand/raw/mxic_nand.c nfc = devm_kzalloc(&pdev->dev, sizeof(struct mxic_nand_ctlr), nfc 494 drivers/mtd/nand/raw/mxic_nand.c if (!nfc) nfc 497 drivers/mtd/nand/raw/mxic_nand.c nfc->ps_clk = devm_clk_get(&pdev->dev, "ps"); nfc 498 drivers/mtd/nand/raw/mxic_nand.c if (IS_ERR(nfc->ps_clk)) nfc 499 drivers/mtd/nand/raw/mxic_nand.c return PTR_ERR(nfc->ps_clk); nfc 501 drivers/mtd/nand/raw/mxic_nand.c nfc->send_clk = devm_clk_get(&pdev->dev, "send"); nfc 502 drivers/mtd/nand/raw/mxic_nand.c if (IS_ERR(nfc->send_clk)) nfc 503 drivers/mtd/nand/raw/mxic_nand.c return PTR_ERR(nfc->send_clk); nfc 505 drivers/mtd/nand/raw/mxic_nand.c nfc->send_dly_clk = devm_clk_get(&pdev->dev, "send_dly"); nfc 506 drivers/mtd/nand/raw/mxic_nand.c if (IS_ERR(nfc->send_dly_clk)) nfc 507 drivers/mtd/nand/raw/mxic_nand.c return PTR_ERR(nfc->send_dly_clk); nfc 509 drivers/mtd/nand/raw/mxic_nand.c nfc->regs = devm_platform_ioremap_resource(pdev, 0); nfc 510 drivers/mtd/nand/raw/mxic_nand.c if (IS_ERR(nfc->regs)) nfc 511 drivers/mtd/nand/raw/mxic_nand.c return PTR_ERR(nfc->regs); nfc 513 drivers/mtd/nand/raw/mxic_nand.c nand_chip = &nfc->chip; nfc 520 drivers/mtd/nand/raw/mxic_nand.c nand_chip->priv = nfc; nfc 521 drivers/mtd/nand/raw/mxic_nand.c nfc->dev = &pdev->dev; nfc 522 drivers/mtd/nand/raw/mxic_nand.c nfc->controller.ops = &mxic_nand_controller_ops; nfc 523 drivers/mtd/nand/raw/mxic_nand.c nand_controller_init(&nfc->controller); nfc 524 drivers/mtd/nand/raw/mxic_nand.c nand_chip->controller = &nfc->controller; nfc 532 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_hw_init(nfc); nfc 535 drivers/mtd/nand/raw/mxic_nand.c 0, "mxic-nfc", nfc); nfc 547 drivers/mtd/nand/raw/mxic_nand.c platform_set_drvdata(pdev, nfc); nfc 551 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_clk_disable(nfc); nfc 557 drivers/mtd/nand/raw/mxic_nand.c struct mxic_nand_ctlr *nfc = platform_get_drvdata(pdev); nfc 559 drivers/mtd/nand/raw/mxic_nand.c nand_release(&nfc->chip); nfc 560 drivers/mtd/nand/raw/mxic_nand.c mxic_nfc_clk_disable(nfc); nfc 259 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = dev_id; nfc 260 drivers/mtd/nand/raw/sunxi_nand.c u32 st = readl(nfc->regs + NFC_REG_ST); nfc 261 drivers/mtd/nand/raw/sunxi_nand.c u32 ien = readl(nfc->regs + NFC_REG_INT); nfc 267 drivers/mtd/nand/raw/sunxi_nand.c complete(&nfc->complete); nfc 269 drivers/mtd/nand/raw/sunxi_nand.c writel(st & NFC_INT_MASK, nfc->regs + NFC_REG_ST); nfc 270 drivers/mtd/nand/raw/sunxi_nand.c writel(~st & ien & NFC_INT_MASK, nfc->regs + NFC_REG_INT); nfc 275 drivers/mtd/nand/raw/sunxi_nand.c static int sunxi_nfc_wait_events(struct sunxi_nfc *nfc, u32 events, nfc 287 drivers/mtd/nand/raw/sunxi_nand.c init_completion(&nfc->complete); nfc 289 drivers/mtd/nand/raw/sunxi_nand.c writel(events, nfc->regs + NFC_REG_INT); nfc 291 drivers/mtd/nand/raw/sunxi_nand.c ret = wait_for_completion_timeout(&nfc->complete, nfc 298 drivers/mtd/nand/raw/sunxi_nand.c writel(0, nfc->regs + NFC_REG_INT); nfc 302 drivers/mtd/nand/raw/sunxi_nand.c ret = readl_poll_timeout(nfc->regs + NFC_REG_ST, status, nfc 307 drivers/mtd/nand/raw/sunxi_nand.c writel(events & NFC_INT_MASK, nfc->regs + NFC_REG_ST); nfc 310 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "wait interrupt timedout\n"); nfc 315 drivers/mtd/nand/raw/sunxi_nand.c static int sunxi_nfc_wait_cmd_fifo_empty(struct sunxi_nfc *nfc) nfc 320 drivers/mtd/nand/raw/sunxi_nand.c ret = readl_poll_timeout(nfc->regs + NFC_REG_ST, status, nfc 324 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "wait for empty cmd FIFO timedout\n"); nfc 329 drivers/mtd/nand/raw/sunxi_nand.c static int sunxi_nfc_rst(struct sunxi_nfc *nfc) nfc 334 drivers/mtd/nand/raw/sunxi_nand.c writel(0, nfc->regs + NFC_REG_ECC_CTL); nfc 335 drivers/mtd/nand/raw/sunxi_nand.c writel(NFC_RESET, nfc->regs + NFC_REG_CTL); nfc 337 drivers/mtd/nand/raw/sunxi_nand.c ret = readl_poll_timeout(nfc->regs + NFC_REG_CTL, ctl, nfc 341 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "wait for NAND controller reset timedout\n"); nfc 346 drivers/mtd/nand/raw/sunxi_nand.c static int sunxi_nfc_dma_op_prepare(struct sunxi_nfc *nfc, const void *buf, nfc 362 drivers/mtd/nand/raw/sunxi_nand.c ret = dma_map_sg(nfc->dev, sg, 1, ddir); nfc 366 drivers/mtd/nand/raw/sunxi_nand.c dmad = dmaengine_prep_slave_sg(nfc->dmac, sg, 1, tdir, DMA_CTRL_ACK); nfc 372 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_CTL) | NFC_RAM_METHOD, nfc 373 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CTL); nfc 374 drivers/mtd/nand/raw/sunxi_nand.c writel(nchunks, nfc->regs + NFC_REG_SECTOR_NUM); nfc 375 drivers/mtd/nand/raw/sunxi_nand.c writel(chunksize, nfc->regs + NFC_REG_CNT); nfc 376 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->caps->extra_mbus_conf) nfc 377 drivers/mtd/nand/raw/sunxi_nand.c writel(chunksize * nchunks, nfc->regs + NFC_REG_MDMA_CNT); nfc 388 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_CTL) & ~NFC_RAM_METHOD, nfc 389 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CTL); nfc 392 drivers/mtd/nand/raw/sunxi_nand.c dma_unmap_sg(nfc->dev, sg, 1, ddir); nfc 396 drivers/mtd/nand/raw/sunxi_nand.c static void sunxi_nfc_dma_op_cleanup(struct sunxi_nfc *nfc, nfc 400 drivers/mtd/nand/raw/sunxi_nand.c dma_unmap_sg(nfc->dev, sg, 1, ddir); nfc 401 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_CTL) & ~NFC_RAM_METHOD, nfc 402 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CTL); nfc 409 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller); nfc 416 drivers/mtd/nand/raw/sunxi_nand.c ctl = readl(nfc->regs + NFC_REG_CTL) & nfc 424 drivers/mtd/nand/raw/sunxi_nand.c writel(mtd->writesize, nfc->regs + NFC_REG_SPARE_AREA); nfc 426 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->clk_rate != sunxi_nand->clk_rate) { nfc 427 drivers/mtd/nand/raw/sunxi_nand.c clk_set_rate(nfc->mod_clk, sunxi_nand->clk_rate); nfc 428 drivers/mtd/nand/raw/sunxi_nand.c nfc->clk_rate = sunxi_nand->clk_rate; nfc 431 drivers/mtd/nand/raw/sunxi_nand.c writel(sunxi_nand->timing_ctl, nfc->regs + NFC_REG_TIMING_CTL); nfc 432 drivers/mtd/nand/raw/sunxi_nand.c writel(sunxi_nand->timing_cfg, nfc->regs + NFC_REG_TIMING_CFG); nfc 433 drivers/mtd/nand/raw/sunxi_nand.c writel(ctl, nfc->regs + NFC_REG_CTL); nfc 439 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller); nfc 450 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 454 drivers/mtd/nand/raw/sunxi_nand.c writel(cnt, nfc->regs + NFC_REG_CNT); nfc 456 drivers/mtd/nand/raw/sunxi_nand.c writel(tmp, nfc->regs + NFC_REG_CMD); nfc 462 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, poll, 0); nfc 467 drivers/mtd/nand/raw/sunxi_nand.c memcpy_fromio(buf + offs, nfc->regs + NFC_RAM0_BASE, nfc 477 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller); nfc 488 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 492 drivers/mtd/nand/raw/sunxi_nand.c writel(cnt, nfc->regs + NFC_REG_CNT); nfc 493 drivers/mtd/nand/raw/sunxi_nand.c memcpy_toio(nfc->regs + NFC_RAM0_BASE, buf + offs, cnt); nfc 496 drivers/mtd/nand/raw/sunxi_nand.c writel(tmp, nfc->regs + NFC_REG_CMD); nfc 502 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, poll, 0); nfc 615 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 616 drivers/mtd/nand/raw/sunxi_nand.c u32 ecc_ctl = readl(nfc->regs + NFC_REG_ECC_CTL); nfc 622 drivers/mtd/nand/raw/sunxi_nand.c ecc_ctl = readl(nfc->regs + NFC_REG_ECC_CTL); nfc 624 drivers/mtd/nand/raw/sunxi_nand.c ecc_ctl = readl(nfc->regs + NFC_REG_ECC_CTL) & ~NFC_RANDOM_SEED_MSK; nfc 625 drivers/mtd/nand/raw/sunxi_nand.c writel(ecc_ctl | NFC_RANDOM_SEED(state), nfc->regs + NFC_REG_ECC_CTL); nfc 630 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 635 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_ECC_CTL) | NFC_RANDOM_EN, nfc 636 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_ECC_CTL); nfc 641 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 646 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_ECC_CTL) & ~NFC_RANDOM_EN, nfc 647 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_ECC_CTL); nfc 679 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 683 drivers/mtd/nand/raw/sunxi_nand.c ecc_ctl = readl(nfc->regs + NFC_REG_ECC_CTL); nfc 692 drivers/mtd/nand/raw/sunxi_nand.c writel(ecc_ctl, nfc->regs + NFC_REG_ECC_CTL); nfc 697 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 699 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_ECC_CTL) & ~NFC_ECC_EN, nfc 700 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_ECC_CTL); nfc 719 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 721 drivers/mtd/nand/raw/sunxi_nand.c sunxi_nfc_user_data_to_buf(readl(nfc->regs + NFC_REG_USER_DATA(step)), nfc 733 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 744 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_USER_DATA(step)); nfc 763 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 775 drivers/mtd/nand/raw/sunxi_nand.c if (unlikely(!(readl(nfc->regs + NFC_REG_PAT_ID) & 0x1))) { nfc 791 drivers/mtd/nand/raw/sunxi_nand.c tmp = readl(nfc->regs + NFC_REG_ECC_ERR_CNT(step)); nfc 803 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 817 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 823 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CMD); nfc 825 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, false, 0); nfc 833 drivers/mtd/nand/raw/sunxi_nand.c readl(nfc->regs + NFC_REG_ECC_ST), nfc 847 drivers/mtd/nand/raw/sunxi_nand.c memcpy_fromio(data, nfc->regs + NFC_RAM0_BASE, nfc 859 drivers/mtd/nand/raw/sunxi_nand.c memcpy_fromio(data, nfc->regs + NFC_RAM0_BASE, ecc->size); nfc 908 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 916 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 920 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_dma_op_prepare(nfc, buf, ecc->size, nchunks, nfc 930 drivers/mtd/nand/raw/sunxi_nand.c NAND_CMD_READSTART, nfc->regs + NFC_REG_RCMD_SET); nfc 932 drivers/mtd/nand/raw/sunxi_nand.c dma_async_issue_pending(nfc->dmac); nfc 935 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CMD); nfc 937 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, false, 0); nfc 939 drivers/mtd/nand/raw/sunxi_nand.c dmaengine_terminate_all(nfc->dmac); nfc 944 drivers/mtd/nand/raw/sunxi_nand.c sunxi_nfc_dma_op_cleanup(nfc, DMA_FROM_DEVICE, &sg); nfc 949 drivers/mtd/nand/raw/sunxi_nand.c status = readl(nfc->regs + NFC_REG_ECC_ST); nfc 1032 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 1044 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 1053 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CMD); nfc 1055 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, false, 0); nfc 1276 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 1283 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 1287 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_dma_op_prepare(nfc, buf, ecc->size, ecc->steps, nfc 1305 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_WCMD_SET); nfc 1307 drivers/mtd/nand/raw/sunxi_nand.c dma_async_issue_pending(nfc->dmac); nfc 1311 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + NFC_REG_CMD); nfc 1313 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, false, 0); nfc 1315 drivers/mtd/nand/raw/sunxi_nand.c dmaengine_terminate_all(nfc->dmac); nfc 1320 drivers/mtd/nand/raw/sunxi_nand.c sunxi_nfc_dma_op_cleanup(nfc, DMA_TO_DEVICE, &sg); nfc 1383 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(sunxi_nand->nand.controller); nfc 1483 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "unsupported tWB\n"); nfc 1489 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "unsupported tADL\n"); nfc 1495 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "unsupported tWHR\n"); nfc 1502 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "unsupported tRHW\n"); nfc 1528 drivers/mtd/nand/raw/sunxi_nand.c real_clk_rate = clk_round_rate(nfc->mod_clk, sunxi_nand->clk_rate); nfc 1530 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "Unable to round clk %lu\n", nfc 1610 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 1672 drivers/mtd/nand/raw/sunxi_nand.c dev_err(nfc->dev, "unsupported strength\n"); nfc 1697 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->dmac) { nfc 1774 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = to_sunxi_nfc(nand->controller); nfc 1820 drivers/mtd/nand/raw/sunxi_nand.c memcpy_toio(nfc->regs + NFC_RAM0_BASE, nfc 1835 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_cmd_fifo_empty(nfc); nfc 1840 drivers/mtd/nand/raw/sunxi_nand.c writel(addrs[0], nfc->regs + NFC_REG_ADDR_LOW); nfc 1841 drivers/mtd/nand/raw/sunxi_nand.c writel(addrs[1], nfc->regs + NFC_REG_ADDR_HIGH); nfc 1846 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs + nfc 1851 drivers/mtd/nand/raw/sunxi_nand.c writel(cnt, nfc->regs + NFC_REG_CNT); nfc 1853 drivers/mtd/nand/raw/sunxi_nand.c writel(cmd, nfc->regs + NFC_REG_CMD); nfc 1855 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_wait_events(nfc, NFC_CMD_INT_FLAG, nfc 1862 drivers/mtd/nand/raw/sunxi_nand.c memcpy_fromio(inbuf, nfc->regs + NFC_RAM0_BASE, cnt); nfc 1926 drivers/mtd/nand/raw/sunxi_nand.c static int sunxi_nand_chip_init(struct device *dev, struct sunxi_nfc *nfc, nfc 1970 drivers/mtd/nand/raw/sunxi_nand.c if (test_and_set_bit(tmp, &nfc->assigned_cs)) { nfc 1986 drivers/mtd/nand/raw/sunxi_nand.c nand->controller = &nfc->controller; nfc 2010 drivers/mtd/nand/raw/sunxi_nand.c list_add_tail(&sunxi_nand->node, &nfc->chips); nfc 2015 drivers/mtd/nand/raw/sunxi_nand.c static int sunxi_nand_chips_init(struct device *dev, struct sunxi_nfc *nfc) nfc 2028 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nand_chip_init(dev, nfc, nand_np); nfc 2038 drivers/mtd/nand/raw/sunxi_nand.c static void sunxi_nand_chips_cleanup(struct sunxi_nfc *nfc) nfc 2042 drivers/mtd/nand/raw/sunxi_nand.c while (!list_empty(&nfc->chips)) { nfc 2043 drivers/mtd/nand/raw/sunxi_nand.c sunxi_nand = list_first_entry(&nfc->chips, nfc 2056 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc; nfc 2060 drivers/mtd/nand/raw/sunxi_nand.c nfc = devm_kzalloc(dev, sizeof(*nfc), GFP_KERNEL); nfc 2061 drivers/mtd/nand/raw/sunxi_nand.c if (!nfc) nfc 2064 drivers/mtd/nand/raw/sunxi_nand.c nfc->dev = dev; nfc 2065 drivers/mtd/nand/raw/sunxi_nand.c nand_controller_init(&nfc->controller); nfc 2066 drivers/mtd/nand/raw/sunxi_nand.c INIT_LIST_HEAD(&nfc->chips); nfc 2069 drivers/mtd/nand/raw/sunxi_nand.c nfc->regs = devm_ioremap_resource(dev, r); nfc 2070 drivers/mtd/nand/raw/sunxi_nand.c if (IS_ERR(nfc->regs)) nfc 2071 drivers/mtd/nand/raw/sunxi_nand.c return PTR_ERR(nfc->regs); nfc 2079 drivers/mtd/nand/raw/sunxi_nand.c nfc->ahb_clk = devm_clk_get(dev, "ahb"); nfc 2080 drivers/mtd/nand/raw/sunxi_nand.c if (IS_ERR(nfc->ahb_clk)) { nfc 2082 drivers/mtd/nand/raw/sunxi_nand.c return PTR_ERR(nfc->ahb_clk); nfc 2085 drivers/mtd/nand/raw/sunxi_nand.c ret = clk_prepare_enable(nfc->ahb_clk); nfc 2089 drivers/mtd/nand/raw/sunxi_nand.c nfc->mod_clk = devm_clk_get(dev, "mod"); nfc 2090 drivers/mtd/nand/raw/sunxi_nand.c if (IS_ERR(nfc->mod_clk)) { nfc 2092 drivers/mtd/nand/raw/sunxi_nand.c ret = PTR_ERR(nfc->mod_clk); nfc 2096 drivers/mtd/nand/raw/sunxi_nand.c ret = clk_prepare_enable(nfc->mod_clk); nfc 2100 drivers/mtd/nand/raw/sunxi_nand.c nfc->reset = devm_reset_control_get_optional_exclusive(dev, "ahb"); nfc 2101 drivers/mtd/nand/raw/sunxi_nand.c if (IS_ERR(nfc->reset)) { nfc 2102 drivers/mtd/nand/raw/sunxi_nand.c ret = PTR_ERR(nfc->reset); nfc 2106 drivers/mtd/nand/raw/sunxi_nand.c ret = reset_control_deassert(nfc->reset); nfc 2112 drivers/mtd/nand/raw/sunxi_nand.c nfc->caps = of_device_get_match_data(&pdev->dev); nfc 2113 drivers/mtd/nand/raw/sunxi_nand.c if (!nfc->caps) { nfc 2118 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nfc_rst(nfc); nfc 2122 drivers/mtd/nand/raw/sunxi_nand.c writel(0, nfc->regs + NFC_REG_INT); nfc 2124 drivers/mtd/nand/raw/sunxi_nand.c 0, "sunxi-nand", nfc); nfc 2128 drivers/mtd/nand/raw/sunxi_nand.c nfc->dmac = dma_request_slave_channel(dev, "rxtx"); nfc 2129 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->dmac) { nfc 2132 drivers/mtd/nand/raw/sunxi_nand.c dmac_cfg.src_addr = r->start + nfc->caps->reg_io_data; nfc 2136 drivers/mtd/nand/raw/sunxi_nand.c dmac_cfg.src_maxburst = nfc->caps->dma_maxburst; nfc 2137 drivers/mtd/nand/raw/sunxi_nand.c dmac_cfg.dst_maxburst = nfc->caps->dma_maxburst; nfc 2138 drivers/mtd/nand/raw/sunxi_nand.c dmaengine_slave_config(nfc->dmac, &dmac_cfg); nfc 2140 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->caps->extra_mbus_conf) nfc 2141 drivers/mtd/nand/raw/sunxi_nand.c writel(readl(nfc->regs + NFC_REG_CTL) | nfc 2142 drivers/mtd/nand/raw/sunxi_nand.c NFC_DMA_TYPE_NORMAL, nfc->regs + NFC_REG_CTL); nfc 2148 drivers/mtd/nand/raw/sunxi_nand.c platform_set_drvdata(pdev, nfc); nfc 2150 drivers/mtd/nand/raw/sunxi_nand.c ret = sunxi_nand_chips_init(dev, nfc); nfc 2159 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->dmac) nfc 2160 drivers/mtd/nand/raw/sunxi_nand.c dma_release_channel(nfc->dmac); nfc 2162 drivers/mtd/nand/raw/sunxi_nand.c reset_control_assert(nfc->reset); nfc 2164 drivers/mtd/nand/raw/sunxi_nand.c clk_disable_unprepare(nfc->mod_clk); nfc 2166 drivers/mtd/nand/raw/sunxi_nand.c clk_disable_unprepare(nfc->ahb_clk); nfc 2173 drivers/mtd/nand/raw/sunxi_nand.c struct sunxi_nfc *nfc = platform_get_drvdata(pdev); nfc 2175 drivers/mtd/nand/raw/sunxi_nand.c sunxi_nand_chips_cleanup(nfc); nfc 2177 drivers/mtd/nand/raw/sunxi_nand.c reset_control_assert(nfc->reset); nfc 2179 drivers/mtd/nand/raw/sunxi_nand.c if (nfc->dmac) nfc 2180 drivers/mtd/nand/raw/sunxi_nand.c dma_release_channel(nfc->dmac); nfc 2181 drivers/mtd/nand/raw/sunxi_nand.c clk_disable_unprepare(nfc->mod_clk); nfc 2182 drivers/mtd/nand/raw/sunxi_nand.c clk_disable_unprepare(nfc->ahb_clk); nfc 129 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = to_tango_nfc(chip->controller); nfc 131 drivers/mtd/nand/raw/tango_nand.c return readl_relaxed(nfc->pbus_base + PBUS_CS_CTRL) & PBUS_IORDY; nfc 157 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = to_tango_nfc(chip->controller); nfc 163 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(tchip->timing1, nfc->reg_base + NFC_TIMING1); nfc 164 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(tchip->timing2, nfc->reg_base + NFC_TIMING2); nfc 165 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(tchip->xfer_cfg, nfc->reg_base + NFC_XFER_CFG); nfc 166 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(tchip->pkt_0_cfg, nfc->reg_base + NFC_PKT_0_CFG); nfc 167 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(tchip->pkt_n_cfg, nfc->reg_base + NFC_PKT_N_CFG); nfc 168 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(tchip->bb_cfg, nfc->reg_base + NFC_BB_CFG); nfc 206 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = to_tango_nfc(chip->controller); nfc 208 drivers/mtd/nand/raw/tango_nand.c status = readl_relaxed(nfc->reg_base + NFC_XFER_STATUS); nfc 212 drivers/mtd/nand/raw/tango_nand.c res = readl_relaxed(nfc->mem_base + ERROR_REPORT); nfc 229 drivers/mtd/nand/raw/tango_nand.c static int do_dma(struct tango_nfc *nfc, enum dma_data_direction dir, int cmd, nfc 232 drivers/mtd/nand/raw/tango_nand.c void __iomem *addr = nfc->reg_base + NFC_STATUS; nfc 233 drivers/mtd/nand/raw/tango_nand.c struct dma_chan *chan = nfc->chan; nfc 254 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(MODE_NFC, nfc->pbus_base + PBUS_PAD_MODE); nfc 256 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(page, nfc->reg_base + NFC_ADDR_PAGE); nfc 257 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(0, nfc->reg_base + NFC_ADDR_OFFSET); nfc 258 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(cmd, nfc->reg_base + NFC_FLASH_CMD); nfc 267 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(MODE_RAW, nfc->pbus_base + PBUS_PAD_MODE); nfc 279 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = to_tango_nfc(chip->controller); nfc 285 drivers/mtd/nand/raw/tango_nand.c err = do_dma(nfc, DMA_FROM_DEVICE, NFC_READ, buf, len, page); nfc 302 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = to_tango_nfc(chip->controller); nfc 309 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(0xffffffff, nfc->mem_base + METADATA); nfc 310 drivers/mtd/nand/raw/tango_nand.c err = do_dma(nfc, DMA_TO_DEVICE, NFC_WRITE, buf, len, page); nfc 483 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = to_tango_nfc(chip->controller); nfc 486 drivers/mtd/nand/raw/tango_nand.c int kHz = nfc->freq_kHz; nfc 541 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = dev_get_drvdata(dev); nfc 574 drivers/mtd/nand/raw/tango_nand.c chip->controller = &nfc->hw; nfc 575 drivers/mtd/nand/raw/tango_nand.c tchip->base = nfc->pbus_base + (cs * 256); nfc 596 drivers/mtd/nand/raw/tango_nand.c nfc->chips[cs] = tchip; nfc 604 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc = platform_get_drvdata(pdev); nfc 606 drivers/mtd/nand/raw/tango_nand.c dma_release_channel(nfc->chan); nfc 609 drivers/mtd/nand/raw/tango_nand.c if (nfc->chips[cs]) nfc 610 drivers/mtd/nand/raw/tango_nand.c nand_release(&nfc->chips[cs]->nand_chip); nfc 621 drivers/mtd/nand/raw/tango_nand.c struct tango_nfc *nfc; nfc 624 drivers/mtd/nand/raw/tango_nand.c nfc = devm_kzalloc(&pdev->dev, sizeof(*nfc), GFP_KERNEL); nfc 625 drivers/mtd/nand/raw/tango_nand.c if (!nfc) nfc 629 drivers/mtd/nand/raw/tango_nand.c nfc->reg_base = devm_ioremap_resource(&pdev->dev, res); nfc 630 drivers/mtd/nand/raw/tango_nand.c if (IS_ERR(nfc->reg_base)) nfc 631 drivers/mtd/nand/raw/tango_nand.c return PTR_ERR(nfc->reg_base); nfc 634 drivers/mtd/nand/raw/tango_nand.c nfc->mem_base = devm_ioremap_resource(&pdev->dev, res); nfc 635 drivers/mtd/nand/raw/tango_nand.c if (IS_ERR(nfc->mem_base)) nfc 636 drivers/mtd/nand/raw/tango_nand.c return PTR_ERR(nfc->mem_base); nfc 639 drivers/mtd/nand/raw/tango_nand.c nfc->pbus_base = devm_ioremap_resource(&pdev->dev, res); nfc 640 drivers/mtd/nand/raw/tango_nand.c if (IS_ERR(nfc->pbus_base)) nfc 641 drivers/mtd/nand/raw/tango_nand.c return PTR_ERR(nfc->pbus_base); nfc 643 drivers/mtd/nand/raw/tango_nand.c writel_relaxed(MODE_RAW, nfc->pbus_base + PBUS_PAD_MODE); nfc 649 drivers/mtd/nand/raw/tango_nand.c nfc->chan = dma_request_chan(&pdev->dev, "rxtx"); nfc 650 drivers/mtd/nand/raw/tango_nand.c if (IS_ERR(nfc->chan)) nfc 651 drivers/mtd/nand/raw/tango_nand.c return PTR_ERR(nfc->chan); nfc 653 drivers/mtd/nand/raw/tango_nand.c platform_set_drvdata(pdev, nfc); nfc 654 drivers/mtd/nand/raw/tango_nand.c nand_controller_init(&nfc->hw); nfc 655 drivers/mtd/nand/raw/tango_nand.c nfc->hw.ops = &tango_controller_ops; nfc 656 drivers/mtd/nand/raw/tango_nand.c nfc->freq_kHz = clk_get_rate(clk) / 1000; nfc 173 drivers/mtd/nand/raw/vf610_nfc.c static inline u32 vf610_nfc_read(struct vf610_nfc *nfc, uint reg) nfc 175 drivers/mtd/nand/raw/vf610_nfc.c return readl(nfc->regs + reg); nfc 178 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_write(struct vf610_nfc *nfc, uint reg, u32 val) nfc 180 drivers/mtd/nand/raw/vf610_nfc.c writel(val, nfc->regs + reg); nfc 183 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_set(struct vf610_nfc *nfc, uint reg, u32 bits) nfc 185 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, reg, vf610_nfc_read(nfc, reg) | bits); nfc 188 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_clear(struct vf610_nfc *nfc, uint reg, u32 bits) nfc 190 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, reg, vf610_nfc_read(nfc, reg) & ~bits); nfc 193 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_set_field(struct vf610_nfc *nfc, u32 reg, nfc 196 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, reg, nfc 197 drivers/mtd/nand/raw/vf610_nfc.c (vf610_nfc_read(nfc, reg) & (~mask)) | val << shift); nfc 281 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_clear_status(struct vf610_nfc *nfc) nfc 283 drivers/mtd/nand/raw/vf610_nfc.c u32 tmp = vf610_nfc_read(nfc, NFC_IRQ_STATUS); nfc 286 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, NFC_IRQ_STATUS, tmp); nfc 289 drivers/mtd/nand/raw/vf610_nfc.c static void vf610_nfc_done(struct vf610_nfc *nfc) nfc 300 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set(nfc, NFC_IRQ_STATUS, IDLE_EN_BIT); nfc 301 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set(nfc, NFC_FLASH_CMD2, START_BIT); nfc 303 drivers/mtd/nand/raw/vf610_nfc.c if (!wait_for_completion_timeout(&nfc->cmd_done, timeout)) nfc 304 drivers/mtd/nand/raw/vf610_nfc.c dev_warn(nfc->dev, "Timeout while waiting for BUSY.\n"); nfc 306 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear_status(nfc); nfc 311 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = data; nfc 313 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_IRQ_STATUS, IDLE_EN_BIT); nfc 314 drivers/mtd/nand/raw/vf610_nfc.c complete(&nfc->cmd_done); nfc 319 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_ecc_mode(struct vf610_nfc *nfc, int ecc_mode) nfc 321 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set_field(nfc, NFC_FLASH_CONFIG, nfc 326 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_transfer_size(struct vf610_nfc *nfc, int size) nfc 328 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, NFC_SECTOR_SIZE, size); nfc 331 drivers/mtd/nand/raw/vf610_nfc.c static inline void vf610_nfc_run(struct vf610_nfc *nfc, u32 col, u32 row, nfc 334 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set_field(nfc, NFC_COL_ADDR, COL_ADDR_MASK, nfc 337 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set_field(nfc, NFC_ROW_ADDR, ROW_ADDR_MASK, nfc 340 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, NFC_SECTOR_SIZE, trfr_sz); nfc 341 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, NFC_FLASH_CMD1, cmd1); nfc 342 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, NFC_FLASH_CMD2, cmd2); nfc 344 drivers/mtd/nand/raw/vf610_nfc.c dev_dbg(nfc->dev, nfc 348 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_done(nfc); nfc 366 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 414 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_wr_to_sram(nfc->regs + NFC_MAIN_AREA(0) + offset, nfc 416 drivers/mtd/nand/raw/vf610_nfc.c trfr_sz, !nfc->data_access); nfc 444 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_16BIT); nfc 448 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_run(nfc, col, row, cmd1, cmd2, trfr_sz); nfc 456 drivers/mtd/nand/raw/vf610_nfc.c nfc->regs + NFC_MAIN_AREA(0) + offset, nfc 457 drivers/mtd/nand/raw/vf610_nfc.c trfr_sz, !nfc->data_access); nfc 461 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set(nfc, NFC_FLASH_CONFIG, CONFIG_16BIT); nfc 486 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 490 drivers/mtd/nand/raw/vf610_nfc.c if (nfc->variant != NFC_VFC610) nfc 493 drivers/mtd/nand/raw/vf610_nfc.c tmp = vf610_nfc_read(nfc, NFC_ROW_ADDR); nfc 498 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_write(nfc, NFC_ROW_ADDR, tmp); nfc 513 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 518 drivers/mtd/nand/raw/vf610_nfc.c int flips_threshold = nfc->chip.ecc.strength / 2; nfc 520 drivers/mtd/nand/raw/vf610_nfc.c ecc_status = vf610_nfc_read(nfc, ecc_status_off) & 0xff; nfc 526 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = true; nfc 527 drivers/mtd/nand/raw/vf610_nfc.c nand_read_oob_op(&nfc->chip, page, 0, oob, mtd->oobsize); nfc 528 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = false; nfc 534 drivers/mtd/nand/raw/vf610_nfc.c return nand_check_erased_ecc_chunk(dat, nfc->chip.ecc.size, oob, nfc 554 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 572 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_ecc_mode(nfc, nfc->ecc_mode); nfc 573 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_run(nfc, 0, row, cmd1, cmd2, trfr_sz); nfc 574 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_ecc_mode(nfc, ECC_BYPASS); nfc 580 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_rd_from_sram(buf, nfc->regs + NFC_MAIN_AREA(0), nfc 584 drivers/mtd/nand/raw/vf610_nfc.c nfc->regs + NFC_MAIN_AREA(0) + nfc 602 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 623 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_wr_to_sram(nfc->regs + NFC_MAIN_AREA(0), buf, nfc 629 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_ecc_mode(nfc, nfc->ecc_mode); nfc 630 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_run(nfc, 0, row, cmd1, cmd2, trfr_sz); nfc 631 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_ecc_mode(nfc, ECC_BYPASS); nfc 646 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 649 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = true; nfc 651 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = false; nfc 659 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 663 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = true; nfc 668 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = false; nfc 678 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 681 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = true; nfc 683 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = false; nfc 691 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 694 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = true; nfc 697 drivers/mtd/nand/raw/vf610_nfc.c nfc->data_access = false; nfc 711 drivers/mtd/nand/raw/vf610_nfc.c static void vf610_nfc_preinit_controller(struct vf610_nfc *nfc) nfc 713 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_16BIT); nfc 714 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_ADDR_AUTO_INCR_BIT); nfc 715 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_BUFNO_AUTO_INCR_BIT); nfc 716 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_BOOT_MODE_BIT); nfc 717 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_DMA_REQ_BIT); nfc 718 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set(nfc, NFC_FLASH_CONFIG, CONFIG_FAST_FLASH_BIT); nfc 719 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_ecc_mode(nfc, ECC_BYPASS); nfc 722 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set_field(nfc, NFC_FLASH_CONFIG, CONFIG_PAGE_CNT_MASK, nfc 726 drivers/mtd/nand/raw/vf610_nfc.c static void vf610_nfc_init_controller(struct vf610_nfc *nfc) nfc 728 drivers/mtd/nand/raw/vf610_nfc.c if (nfc->chip.options & NAND_BUSWIDTH_16) nfc 729 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set(nfc, NFC_FLASH_CONFIG, CONFIG_16BIT); nfc 731 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_clear(nfc, NFC_FLASH_CONFIG, CONFIG_16BIT); nfc 733 drivers/mtd/nand/raw/vf610_nfc.c if (nfc->chip.ecc.mode == NAND_ECC_HW) { nfc 735 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set_field(nfc, NFC_FLASH_CONFIG, nfc 741 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_set(nfc, NFC_FLASH_CONFIG, CONFIG_ECC_SRAM_REQ_BIT); nfc 748 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = chip_to_nfc(chip); nfc 750 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_init_controller(nfc); nfc 758 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "Unsupported flash page size\n"); nfc 766 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "Unsupported flash with hwecc\n"); nfc 771 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "Step size needs to be page size\n"); nfc 782 drivers/mtd/nand/raw/vf610_nfc.c nfc->ecc_mode = ECC_60_BYTE; nfc 785 drivers/mtd/nand/raw/vf610_nfc.c nfc->ecc_mode = ECC_45_BYTE; nfc 788 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "Unsupported ECC strength\n"); nfc 812 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc; nfc 821 drivers/mtd/nand/raw/vf610_nfc.c nfc = devm_kzalloc(&pdev->dev, sizeof(*nfc), GFP_KERNEL); nfc 822 drivers/mtd/nand/raw/vf610_nfc.c if (!nfc) nfc 825 drivers/mtd/nand/raw/vf610_nfc.c nfc->dev = &pdev->dev; nfc 826 drivers/mtd/nand/raw/vf610_nfc.c chip = &nfc->chip; nfc 830 drivers/mtd/nand/raw/vf610_nfc.c mtd->dev.parent = nfc->dev; nfc 838 drivers/mtd/nand/raw/vf610_nfc.c nfc->regs = devm_ioremap_resource(nfc->dev, res); nfc 839 drivers/mtd/nand/raw/vf610_nfc.c if (IS_ERR(nfc->regs)) nfc 840 drivers/mtd/nand/raw/vf610_nfc.c return PTR_ERR(nfc->regs); nfc 842 drivers/mtd/nand/raw/vf610_nfc.c nfc->clk = devm_clk_get(&pdev->dev, NULL); nfc 843 drivers/mtd/nand/raw/vf610_nfc.c if (IS_ERR(nfc->clk)) nfc 844 drivers/mtd/nand/raw/vf610_nfc.c return PTR_ERR(nfc->clk); nfc 846 drivers/mtd/nand/raw/vf610_nfc.c err = clk_prepare_enable(nfc->clk); nfc 848 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "Unable to enable clock!\n"); nfc 856 drivers/mtd/nand/raw/vf610_nfc.c nfc->variant = (enum vf610_nfc_variant)of_id->data; nfc 858 drivers/mtd/nand/raw/vf610_nfc.c for_each_available_child_of_node(nfc->dev->of_node, child) { nfc 862 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, nfc 874 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "NAND chip sub-node missing!\n"); nfc 881 drivers/mtd/nand/raw/vf610_nfc.c init_completion(&nfc->cmd_done); nfc 883 drivers/mtd/nand/raw/vf610_nfc.c err = devm_request_irq(nfc->dev, irq, vf610_nfc_irq, 0, DRV_NAME, nfc); nfc 885 drivers/mtd/nand/raw/vf610_nfc.c dev_err(nfc->dev, "Error requesting IRQ!\n"); nfc 889 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_preinit_controller(nfc); nfc 891 drivers/mtd/nand/raw/vf610_nfc.c nand_controller_init(&nfc->base); nfc 892 drivers/mtd/nand/raw/vf610_nfc.c nfc->base.ops = &vf610_nfc_controller_ops; nfc 893 drivers/mtd/nand/raw/vf610_nfc.c chip->controller = &nfc->base; nfc 900 drivers/mtd/nand/raw/vf610_nfc.c platform_set_drvdata(pdev, nfc); nfc 911 drivers/mtd/nand/raw/vf610_nfc.c clk_disable_unprepare(nfc->clk); nfc 917 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = platform_get_drvdata(pdev); nfc 919 drivers/mtd/nand/raw/vf610_nfc.c nand_release(&nfc->chip); nfc 920 drivers/mtd/nand/raw/vf610_nfc.c clk_disable_unprepare(nfc->clk); nfc 927 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = dev_get_drvdata(dev); nfc 929 drivers/mtd/nand/raw/vf610_nfc.c clk_disable_unprepare(nfc->clk); nfc 935 drivers/mtd/nand/raw/vf610_nfc.c struct vf610_nfc *nfc = dev_get_drvdata(dev); nfc 938 drivers/mtd/nand/raw/vf610_nfc.c err = clk_prepare_enable(nfc->clk); nfc 942 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_preinit_controller(nfc); nfc 943 drivers/mtd/nand/raw/vf610_nfc.c vf610_nfc_init_controller(nfc); nfc 206 drivers/net/dsa/bcm_sf2.h struct ethtool_rxnfc *nfc, u32 *rule_locs); nfc 208 drivers/net/dsa/bcm_sf2.h struct ethtool_rxnfc *nfc); nfc 1009 drivers/net/dsa/bcm_sf2_cfp.c struct ethtool_rxnfc *nfc) nfc 1013 drivers/net/dsa/bcm_sf2_cfp.c rule = bcm_sf2_cfp_rule_find(priv, port, nfc->fs.location); nfc 1017 drivers/net/dsa/bcm_sf2_cfp.c memcpy(&nfc->fs, &rule->fs, sizeof(rule->fs)); nfc 1019 drivers/net/dsa/bcm_sf2_cfp.c bcm_sf2_invert_masks(&nfc->fs); nfc 1022 drivers/net/dsa/bcm_sf2_cfp.c nfc->data = bcm_sf2_cfp_rule_size(priv); nfc 1029 drivers/net/dsa/bcm_sf2_cfp.c int port, struct ethtool_rxnfc *nfc, nfc 1040 drivers/net/dsa/bcm_sf2_cfp.c nfc->data = bcm_sf2_cfp_rule_size(priv); nfc 1041 drivers/net/dsa/bcm_sf2_cfp.c nfc->rule_cnt = rules_cnt; nfc 1047 drivers/net/dsa/bcm_sf2_cfp.c struct ethtool_rxnfc *nfc, u32 *rule_locs) nfc 1055 drivers/net/dsa/bcm_sf2_cfp.c switch (nfc->cmd) { nfc 1058 drivers/net/dsa/bcm_sf2_cfp.c nfc->rule_cnt = bitmap_weight(priv->cfp.unique, nfc 1061 drivers/net/dsa/bcm_sf2_cfp.c nfc->data |= RX_CLS_LOC_SPECIAL; nfc 1064 drivers/net/dsa/bcm_sf2_cfp.c ret = bcm_sf2_cfp_rule_get(priv, port, nfc); nfc 1067 drivers/net/dsa/bcm_sf2_cfp.c ret = bcm_sf2_cfp_rule_get_all(priv, port, nfc, rule_locs); nfc 1081 drivers/net/dsa/bcm_sf2_cfp.c ret = p->ethtool_ops->get_rxnfc(p, nfc, rule_locs); nfc 1090 drivers/net/dsa/bcm_sf2_cfp.c struct ethtool_rxnfc *nfc) nfc 1098 drivers/net/dsa/bcm_sf2_cfp.c switch (nfc->cmd) { nfc 1100 drivers/net/dsa/bcm_sf2_cfp.c ret = bcm_sf2_cfp_rule_set(ds, port, &nfc->fs); nfc 1104 drivers/net/dsa/bcm_sf2_cfp.c ret = bcm_sf2_cfp_rule_del(priv, port, nfc->fs.location); nfc 1120 drivers/net/dsa/bcm_sf2_cfp.c ret = p->ethtool_ops->set_rxnfc(p, nfc); nfc 1123 drivers/net/dsa/bcm_sf2_cfp.c bcm_sf2_cfp_rule_del(priv, port, nfc->fs.location); nfc 2103 drivers/net/ethernet/broadcom/bcmsysport.c struct ethtool_rxnfc *nfc) nfc 2108 drivers/net/ethernet/broadcom/bcmsysport.c index = bcm_sysport_rule_find(priv, nfc->fs.location); nfc 2112 drivers/net/ethernet/broadcom/bcmsysport.c nfc->fs.ring_cookie = RX_CLS_FLOW_WAKE; nfc 2118 drivers/net/ethernet/broadcom/bcmsysport.c struct ethtool_rxnfc *nfc) nfc 2126 drivers/net/ethernet/broadcom/bcmsysport.c if (nfc->fs.location > RXCHK_BRCM_TAG_CID_MASK) nfc 2130 drivers/net/ethernet/broadcom/bcmsysport.c if (nfc->fs.ring_cookie != RX_CLS_FLOW_WAKE) nfc 2147 drivers/net/ethernet/broadcom/bcmsysport.c reg |= nfc->fs.location << RXCHK_BRCM_TAG_CID_SHIFT; nfc 2151 drivers/net/ethernet/broadcom/bcmsysport.c priv->filters_loc[index] = nfc->fs.location; nfc 2177 drivers/net/ethernet/broadcom/bcmsysport.c struct ethtool_rxnfc *nfc, u32 *rule_locs) nfc 2182 drivers/net/ethernet/broadcom/bcmsysport.c switch (nfc->cmd) { nfc 2184 drivers/net/ethernet/broadcom/bcmsysport.c ret = bcm_sysport_rule_get(priv, nfc); nfc 2194 drivers/net/ethernet/broadcom/bcmsysport.c struct ethtool_rxnfc *nfc) nfc 2199 drivers/net/ethernet/broadcom/bcmsysport.c switch (nfc->cmd) { nfc 2201 drivers/net/ethernet/broadcom/bcmsysport.c ret = bcm_sysport_rule_set(priv, nfc); nfc 2204 drivers/net/ethernet/broadcom/bcmsysport.c ret = bcm_sysport_rule_del(priv, nfc->fs.location); nfc 448 drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c struct ethtool_rxnfc *nfc) nfc 453 drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c if (nfc->data & nfc 457 drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c switch (nfc->flow_type) { nfc 472 drivers/net/ethernet/freescale/dpaa/dpaa_ethtool.c dpaa_set_hash(dev, !!nfc->data); nfc 4226 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c static u8 hclge_get_rss_hash_bits(struct ethtool_rxnfc *nfc) nfc 4228 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c u8 hash_sets = nfc->data & RXH_L4_B_0_1 ? HCLGE_S_PORT_BIT : 0; nfc 4230 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if (nfc->data & RXH_L4_B_2_3) nfc 4235 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if (nfc->data & RXH_IP_SRC) nfc 4240 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if (nfc->data & RXH_IP_DST) nfc 4245 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if (nfc->flow_type == SCTP_V4_FLOW || nfc->flow_type == SCTP_V6_FLOW) nfc 4252 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct ethtool_rxnfc *nfc) nfc 4261 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 4277 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c tuple_sets = hclge_get_rss_hash_bits(nfc); nfc 4278 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c switch (nfc->flow_type) { nfc 4295 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c if ((nfc->data & RXH_L4_B_0_1) || nfc 4296 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c (nfc->data & RXH_L4_B_2_3)) nfc 4331 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c struct ethtool_rxnfc *nfc) nfc 4336 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nfc->data = 0; nfc 4338 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c switch (nfc->flow_type) { nfc 4369 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nfc->data |= RXH_L4_B_2_3; nfc 4371 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nfc->data |= RXH_L4_B_0_1; nfc 4373 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nfc->data |= RXH_IP_DST; nfc 4375 drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c nfc->data |= RXH_IP_SRC; nfc 797 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c static u8 hclgevf_get_rss_hash_bits(struct ethtool_rxnfc *nfc) nfc 799 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c u8 hash_sets = nfc->data & RXH_L4_B_0_1 ? HCLGEVF_S_PORT_BIT : 0; nfc 801 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if (nfc->data & RXH_L4_B_2_3) nfc 806 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if (nfc->data & RXH_IP_SRC) nfc 811 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if (nfc->data & RXH_IP_DST) nfc 816 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if (nfc->flow_type == SCTP_V4_FLOW || nfc->flow_type == SCTP_V6_FLOW) nfc 823 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct ethtool_rxnfc *nfc) nfc 835 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if (nfc->data & nfc 851 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c tuple_sets = hclgevf_get_rss_hash_bits(nfc); nfc 852 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c switch (nfc->flow_type) { nfc 869 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c if ((nfc->data & RXH_L4_B_0_1) || nfc 870 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c (nfc->data & RXH_L4_B_2_3)) nfc 904 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c struct ethtool_rxnfc *nfc) nfc 913 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nfc->data = 0; nfc 915 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c switch (nfc->flow_type) { nfc 946 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nfc->data |= RXH_L4_B_2_3; nfc 948 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nfc->data |= RXH_L4_B_0_1; nfc 950 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nfc->data |= RXH_IP_DST; nfc 952 drivers/net/ethernet/hisilicon/hns3/hns3vf/hclgevf_main.c nfc->data |= RXH_IP_SRC; nfc 750 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c struct ethtool_rxnfc *nfc) nfc 760 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 764 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c switch (nfc->flow_type) { nfc 767 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 768 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 769 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c !(nfc->data & RXH_L4_B_0_1) || nfc 770 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c !(nfc->data & RXH_L4_B_2_3)) nfc 774 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 775 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 777 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 791 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 792 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 794 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 815 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 816 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 817 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c (nfc->data & RXH_L4_B_0_1) || nfc 818 drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c (nfc->data & RXH_L4_B_2_3)) nfc 3350 drivers/net/ethernet/intel/i40e/i40e_ethtool.c static u64 i40e_get_rss_hash_bits(struct ethtool_rxnfc *nfc, u64 i_setc) nfc 3355 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if (nfc->data & RXH_L4_B_0_1) nfc 3359 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if (nfc->data & RXH_L4_B_2_3) nfc 3364 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if (nfc->flow_type == TCP_V6_FLOW || nfc->flow_type == UDP_V6_FLOW) { nfc 3367 drivers/net/ethernet/intel/i40e/i40e_ethtool.c } else if (nfc->flow_type == TCP_V4_FLOW || nfc 3368 drivers/net/ethernet/intel/i40e/i40e_ethtool.c nfc->flow_type == UDP_V4_FLOW) { nfc 3376 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if (nfc->data & RXH_IP_SRC) nfc 3380 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if (nfc->data & RXH_IP_DST) nfc 3395 drivers/net/ethernet/intel/i40e/i40e_ethtool.c static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc) nfc 3412 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 3416 drivers/net/ethernet/intel/i40e/i40e_ethtool.c switch (nfc->flow_type) { nfc 3454 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if ((nfc->data & RXH_L4_B_0_1) || nfc 3455 drivers/net/ethernet/intel/i40e/i40e_ethtool.c (nfc->data & RXH_L4_B_2_3)) nfc 3463 drivers/net/ethernet/intel/i40e/i40e_ethtool.c if ((nfc->data & RXH_L4_B_0_1) || nfc 3464 drivers/net/ethernet/intel/i40e/i40e_ethtool.c (nfc->data & RXH_L4_B_2_3)) nfc 3485 drivers/net/ethernet/intel/i40e/i40e_ethtool.c i_set = i40e_get_rss_hash_bits(nfc, i_setc); nfc 2600 drivers/net/ethernet/intel/igb/igb_ethtool.c struct ethtool_rxnfc *nfc) nfc 2607 drivers/net/ethernet/intel/igb/igb_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 2611 drivers/net/ethernet/intel/igb/igb_ethtool.c switch (nfc->flow_type) { nfc 2614 drivers/net/ethernet/intel/igb/igb_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2615 drivers/net/ethernet/intel/igb/igb_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 2616 drivers/net/ethernet/intel/igb/igb_ethtool.c !(nfc->data & RXH_L4_B_0_1) || nfc 2617 drivers/net/ethernet/intel/igb/igb_ethtool.c !(nfc->data & RXH_L4_B_2_3)) nfc 2621 drivers/net/ethernet/intel/igb/igb_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2622 drivers/net/ethernet/intel/igb/igb_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 2624 drivers/net/ethernet/intel/igb/igb_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 2636 drivers/net/ethernet/intel/igb/igb_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2637 drivers/net/ethernet/intel/igb/igb_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 2639 drivers/net/ethernet/intel/igb/igb_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 2658 drivers/net/ethernet/intel/igb/igb_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2659 drivers/net/ethernet/intel/igb/igb_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 2660 drivers/net/ethernet/intel/igb/igb_ethtool.c (nfc->data & RXH_L4_B_0_1) || nfc 2661 drivers/net/ethernet/intel/igb/igb_ethtool.c (nfc->data & RXH_L4_B_2_3)) nfc 1035 drivers/net/ethernet/intel/igc/igc_ethtool.c struct ethtool_rxnfc *nfc) nfc 1042 drivers/net/ethernet/intel/igc/igc_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 1046 drivers/net/ethernet/intel/igc/igc_ethtool.c switch (nfc->flow_type) { nfc 1049 drivers/net/ethernet/intel/igc/igc_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 1050 drivers/net/ethernet/intel/igc/igc_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 1051 drivers/net/ethernet/intel/igc/igc_ethtool.c !(nfc->data & RXH_L4_B_0_1) || nfc 1052 drivers/net/ethernet/intel/igc/igc_ethtool.c !(nfc->data & RXH_L4_B_2_3)) nfc 1056 drivers/net/ethernet/intel/igc/igc_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 1057 drivers/net/ethernet/intel/igc/igc_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 1059 drivers/net/ethernet/intel/igc/igc_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 1071 drivers/net/ethernet/intel/igc/igc_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 1072 drivers/net/ethernet/intel/igc/igc_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 1074 drivers/net/ethernet/intel/igc/igc_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 1093 drivers/net/ethernet/intel/igc/igc_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 1094 drivers/net/ethernet/intel/igc/igc_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 1095 drivers/net/ethernet/intel/igc/igc_ethtool.c (nfc->data & RXH_L4_B_0_1) || nfc 1096 drivers/net/ethernet/intel/igc/igc_ethtool.c (nfc->data & RXH_L4_B_2_3)) nfc 2821 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c struct ethtool_rxnfc *nfc) nfc 2829 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 2833 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c switch (nfc->flow_type) { nfc 2836 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2837 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 2838 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c !(nfc->data & RXH_L4_B_0_1) || nfc 2839 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c !(nfc->data & RXH_L4_B_2_3)) nfc 2843 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2844 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 2846 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 2858 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2859 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 2861 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 2880 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 2881 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c !(nfc->data & RXH_IP_DST) || nfc 2882 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c (nfc->data & RXH_L4_B_0_1) || nfc 2883 drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c (nfc->data & RXH_L4_B_2_3)) nfc 814 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c struct ethtool_rxnfc *nfc) nfc 821 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c tt = flow_type_to_traffic_type(nfc->flow_type); nfc 829 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c if (nfc->flow_type != TCP_V4_FLOW && nfc 830 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->flow_type != TCP_V6_FLOW && nfc 831 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->flow_type != UDP_V4_FLOW && nfc 832 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->flow_type != UDP_V6_FLOW) nfc 835 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 839 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c if (nfc->data & RXH_IP_SRC) nfc 841 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c if (nfc->data & RXH_IP_DST) nfc 843 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c if (nfc->data & RXH_L4_B_0_1) nfc 845 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c if (nfc->data & RXH_L4_B_2_3) nfc 867 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c struct ethtool_rxnfc *nfc) nfc 872 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c tt = flow_type_to_traffic_type(nfc->flow_type); nfc 877 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->data = 0; nfc 880 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->data |= RXH_IP_SRC; nfc 882 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->data |= RXH_IP_DST; nfc 884 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->data |= RXH_L4_B_0_1; nfc 886 drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c nfc->data |= RXH_L4_B_2_3; nfc 836 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c struct ethtool_rxnfc *nfc) nfc 846 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c if (nfc->data & ~(RXH_IP_SRC | RXH_IP_DST | nfc 851 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c if (!(nfc->data & RXH_IP_SRC) || nfc 852 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c !(nfc->data & RXH_IP_DST)) nfc 855 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c nfp_rss_flag = ethtool_flow_to_nfp_flag(nfc->flow_type); nfc 859 drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) { nfc 7058 drivers/net/ethernet/sun/niu.c static int niu_get_hash_opts(struct niu *np, struct ethtool_rxnfc *nfc) nfc 7062 drivers/net/ethernet/sun/niu.c nfc->data = 0; nfc 7064 drivers/net/ethernet/sun/niu.c if (!niu_ethflow_to_class(nfc->flow_type, &class)) nfc 7069 drivers/net/ethernet/sun/niu.c nfc->data = RXH_DISCARD; nfc 7071 drivers/net/ethernet/sun/niu.c nfc->data = niu_flowkey_to_ethflow(np->parent->flow_key[class - nfc 7153 drivers/net/ethernet/sun/niu.c struct ethtool_rxnfc *nfc) nfc 7157 drivers/net/ethernet/sun/niu.c struct ethtool_rx_flow_spec *fsp = &nfc->fs; nfc 7162 drivers/net/ethernet/sun/niu.c idx = tcam_get_index(np, (u16)nfc->fs.location); nfc 7167 drivers/net/ethernet/sun/niu.c parent->index, (u16)nfc->fs.location, idx); nfc 7226 drivers/net/ethernet/sun/niu.c nfc->data = tcam_get_size(np); nfc 7232 drivers/net/ethernet/sun/niu.c struct ethtool_rxnfc *nfc, nfc 7242 drivers/net/ethernet/sun/niu.c nfc->data = tcam_get_size(np); nfc 7245 drivers/net/ethernet/sun/niu.c for (cnt = 0, i = 0; i < nfc->data; i++) { nfc 7250 drivers/net/ethernet/sun/niu.c if (cnt == nfc->rule_cnt) { nfc 7259 drivers/net/ethernet/sun/niu.c nfc->rule_cnt = cnt; nfc 7294 drivers/net/ethernet/sun/niu.c static int niu_set_hash_opts(struct niu *np, struct ethtool_rxnfc *nfc) nfc 7300 drivers/net/ethernet/sun/niu.c if (!niu_ethflow_to_class(nfc->flow_type, &class)) nfc 7307 drivers/net/ethernet/sun/niu.c if (nfc->data & RXH_DISCARD) { nfc 7332 drivers/net/ethernet/sun/niu.c if (!niu_ethflow_to_flowkey(nfc->data, &flow_key)) nfc 7412 drivers/net/ethernet/sun/niu.c struct ethtool_rxnfc *nfc) nfc 7416 drivers/net/ethernet/sun/niu.c struct ethtool_rx_flow_spec *fsp = &nfc->fs; nfc 7426 drivers/net/ethernet/sun/niu.c idx = nfc->fs.location; nfc 957 include/linux/mtd/rawnand.h static inline void nand_controller_init(struct nand_controller *nfc) nfc 959 include/linux/mtd/rawnand.h mutex_init(&nfc->lock); nfc 506 include/net/dsa.h struct ethtool_rxnfc *nfc, u32 *rule_locs); nfc 508 include/net/dsa.h struct ethtool_rxnfc *nfc); nfc 1075 net/dsa/slave.c struct ethtool_rxnfc *nfc, u32 *rule_locs) nfc 1083 net/dsa/slave.c return ds->ops->get_rxnfc(ds, dp->index, nfc, rule_locs); nfc 1087 net/dsa/slave.c struct ethtool_rxnfc *nfc) nfc 1095 net/dsa/slave.c return ds->ops->set_rxnfc(ds, dp->index, nfc);