Lines Matching full:nfc

97 /* NFC does not support transfers of larger chunks at a time */
106 /* Latency in clock cycles between SoC pins and NFC logic */
508 static void marvell_nfc_disable_int(struct marvell_nfc *nfc, u32 int_mask) in marvell_nfc_disable_int() argument
513 reg = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_disable_int()
514 writel_relaxed(reg | int_mask, nfc->regs + NDCR); in marvell_nfc_disable_int()
517 static void marvell_nfc_enable_int(struct marvell_nfc *nfc, u32 int_mask) in marvell_nfc_enable_int() argument
522 reg = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_enable_int()
523 writel_relaxed(reg & ~int_mask, nfc->regs + NDCR); in marvell_nfc_enable_int()
526 static u32 marvell_nfc_clear_int(struct marvell_nfc *nfc, u32 int_mask) in marvell_nfc_clear_int() argument
530 reg = readl_relaxed(nfc->regs + NDSR); in marvell_nfc_clear_int()
531 writel_relaxed(int_mask, nfc->regs + NDSR); in marvell_nfc_clear_int()
539 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_force_byte_access() local
551 ndcr = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_force_byte_access()
558 writel_relaxed(ndcr, nfc->regs + NDCR); in marvell_nfc_force_byte_access()
563 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_wait_ndrun() local
569 * cleared by the NFC. If not, we must clear it by hand. in marvell_nfc_wait_ndrun()
571 ret = readl_relaxed_poll_timeout(nfc->regs + NDCR, val, in marvell_nfc_wait_ndrun()
575 dev_err(nfc->dev, "Timeout on NAND controller run mode\n"); in marvell_nfc_wait_ndrun()
576 writel_relaxed(readl(nfc->regs + NDCR) & ~NDCR_ND_RUN, in marvell_nfc_wait_ndrun()
577 nfc->regs + NDCR); in marvell_nfc_wait_ndrun()
589 * -> wait the signal indicating the NFC is waiting for a command
601 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_prepare_cmd() local
608 dev_err(nfc->dev, "Last operation did not succeed\n"); in marvell_nfc_prepare_cmd()
612 ndcr = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_prepare_cmd()
613 writel_relaxed(readl(nfc->regs + NDSR), nfc->regs + NDSR); in marvell_nfc_prepare_cmd()
615 /* Assert ND_RUN bit and wait the NFC to be ready */ in marvell_nfc_prepare_cmd()
616 writel_relaxed(ndcr | NDCR_ND_RUN, nfc->regs + NDCR); in marvell_nfc_prepare_cmd()
617 ret = readl_relaxed_poll_timeout(nfc->regs + NDSR, val, in marvell_nfc_prepare_cmd()
621 dev_err(nfc->dev, "Timeout on WRCMDRE\n"); in marvell_nfc_prepare_cmd()
626 writel_relaxed(NDSR_WRCMDREQ, nfc->regs + NDSR); in marvell_nfc_prepare_cmd()
635 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_send_cmd() local
637 dev_dbg(nfc->dev, "\nNDCR: 0x%08x\n" in marvell_nfc_send_cmd()
639 (u32)readl_relaxed(nfc->regs + NDCR), nfc_op->ndcb[0], in marvell_nfc_send_cmd()
643 nfc->regs + NDCB0); in marvell_nfc_send_cmd()
644 writel_relaxed(nfc_op->ndcb[1], nfc->regs + NDCB0); in marvell_nfc_send_cmd()
645 writel(nfc_op->ndcb[2], nfc->regs + NDCB0); in marvell_nfc_send_cmd()
653 if (!WARN_ON_ONCE(!nfc->caps->is_nfcv2)) in marvell_nfc_send_cmd()
654 writel(nfc_op->ndcb[3], nfc->regs + NDCB0); in marvell_nfc_send_cmd()
661 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_end_cmd() local
665 ret = readl_relaxed_poll_timeout(nfc->regs + NDSR, val, in marvell_nfc_end_cmd()
670 dev_err(nfc->dev, "Timeout on %s (NDSR: 0x%08x)\n", in marvell_nfc_end_cmd()
672 if (nfc->dma_chan) in marvell_nfc_end_cmd()
673 dmaengine_terminate_all(nfc->dma_chan); in marvell_nfc_end_cmd()
681 if (nfc->use_dma && (readl_relaxed(nfc->regs + NDCR) & NDCR_DMA_EN)) in marvell_nfc_end_cmd()
684 writel_relaxed(flag, nfc->regs + NDSR); in marvell_nfc_end_cmd()
697 static int marvell_nfc_poll_status(struct marvell_nfc *nfc, u32 mask, in marvell_nfc_poll_status() argument
705 st = readl_relaxed(nfc->regs + NDSR); in marvell_nfc_poll_status()
720 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_wait_op() local
730 ret = marvell_nfc_poll_status(nfc, NDSR_RDY(0), in marvell_nfc_wait_op()
734 init_completion(&nfc->complete); in marvell_nfc_wait_op()
736 marvell_nfc_enable_int(nfc, NDCR_RDYM); in marvell_nfc_wait_op()
737 ret = wait_for_completion_timeout(&nfc->complete, in marvell_nfc_wait_op()
739 marvell_nfc_disable_int(nfc, NDCR_RDYM); in marvell_nfc_wait_op()
741 pending = marvell_nfc_clear_int(nfc, NDSR_RDY(0) | NDSR_RDY(1)); in marvell_nfc_wait_op()
748 dev_err(nfc->dev, "Timeout waiting for RB signal\n"); in marvell_nfc_wait_op()
759 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_select_target() local
766 ndcr_generic = readl_relaxed(nfc->regs + NDCR) & in marvell_nfc_select_target()
768 writel_relaxed(ndcr_generic | marvell_nand->ndcr, nfc->regs + NDCR); in marvell_nfc_select_target()
771 marvell_nfc_clear_int(nfc, NDCR_ALL_INT); in marvell_nfc_select_target()
773 if (chip == nfc->selected_chip && die_nr == marvell_nand->selected_die) in marvell_nfc_select_target()
776 writel_relaxed(marvell_nand->ndtr0, nfc->regs + NDTR0); in marvell_nfc_select_target()
777 writel_relaxed(marvell_nand->ndtr1, nfc->regs + NDTR1); in marvell_nfc_select_target()
779 nfc->selected_chip = chip; in marvell_nfc_select_target()
785 struct marvell_nfc *nfc = dev_id; in marvell_nfc_isr() local
786 u32 st = readl_relaxed(nfc->regs + NDSR); in marvell_nfc_isr()
787 u32 ien = (~readl_relaxed(nfc->regs + NDCR)) & NDCR_ALL_INT; in marvell_nfc_isr()
799 marvell_nfc_disable_int(nfc, st & NDCR_ALL_INT); in marvell_nfc_isr()
802 complete(&nfc->complete); in marvell_nfc_isr()
810 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_enable_hw_ecc() local
811 u32 ndcr = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_enable_hw_ecc()
814 writel_relaxed(ndcr | NDCR_ECC_EN, nfc->regs + NDCR); in marvell_nfc_enable_hw_ecc()
821 writel_relaxed(NDECCCTRL_BCH_EN, nfc->regs + NDECCCTRL); in marvell_nfc_enable_hw_ecc()
827 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_disable_hw_ecc() local
828 u32 ndcr = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_disable_hw_ecc()
831 writel_relaxed(ndcr & ~NDCR_ECC_EN, nfc->regs + NDCR); in marvell_nfc_disable_hw_ecc()
833 writel_relaxed(0, nfc->regs + NDECCCTRL); in marvell_nfc_disable_hw_ecc()
838 static void marvell_nfc_enable_dma(struct marvell_nfc *nfc) in marvell_nfc_enable_dma() argument
842 reg = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_enable_dma()
843 writel_relaxed(reg | NDCR_DMA_EN, nfc->regs + NDCR); in marvell_nfc_enable_dma()
846 static void marvell_nfc_disable_dma(struct marvell_nfc *nfc) in marvell_nfc_disable_dma() argument
850 reg = readl_relaxed(nfc->regs + NDCR); in marvell_nfc_disable_dma()
851 writel_relaxed(reg & ~NDCR_DMA_EN, nfc->regs + NDCR); in marvell_nfc_disable_dma()
855 static int marvell_nfc_xfer_data_dma(struct marvell_nfc *nfc, in marvell_nfc_xfer_data_dma() argument
865 marvell_nfc_enable_dma(nfc); in marvell_nfc_xfer_data_dma()
867 sg_init_one(&sg, nfc->dma_buf, dma_len); in marvell_nfc_xfer_data_dma()
868 dma_map_sg(nfc->dma_chan->device->dev, &sg, 1, direction); in marvell_nfc_xfer_data_dma()
869 tx = dmaengine_prep_slave_sg(nfc->dma_chan, &sg, 1, in marvell_nfc_xfer_data_dma()
874 dev_err(nfc->dev, "Could not prepare DMA S/G list\n"); in marvell_nfc_xfer_data_dma()
884 dma_async_issue_pending(nfc->dma_chan); in marvell_nfc_xfer_data_dma()
885 ret = marvell_nfc_wait_cmdd(nfc->selected_chip); in marvell_nfc_xfer_data_dma()
886 dma_unmap_sg(nfc->dma_chan->device->dev, &sg, 1, direction); in marvell_nfc_xfer_data_dma()
887 marvell_nfc_disable_dma(nfc); in marvell_nfc_xfer_data_dma()
889 dev_err(nfc->dev, "Timeout waiting for DMA (status: %d)\n", in marvell_nfc_xfer_data_dma()
890 dmaengine_tx_status(nfc->dma_chan, cookie, NULL)); in marvell_nfc_xfer_data_dma()
891 dmaengine_terminate_all(nfc->dma_chan); in marvell_nfc_xfer_data_dma()
898 static int marvell_nfc_xfer_data_in_pio(struct marvell_nfc *nfc, u8 *in, in marvell_nfc_xfer_data_in_pio() argument
906 ioread32_rep(nfc->regs + NDDB, in + i, FIFO_REP(FIFO_DEPTH)); in marvell_nfc_xfer_data_in_pio()
911 ioread32_rep(nfc->regs + NDDB, tmp_buf, FIFO_REP(FIFO_DEPTH)); in marvell_nfc_xfer_data_in_pio()
918 static int marvell_nfc_xfer_data_out_pio(struct marvell_nfc *nfc, const u8 *out, in marvell_nfc_xfer_data_out_pio() argument
926 iowrite32_rep(nfc->regs + NDDB, out + i, FIFO_REP(FIFO_DEPTH)); in marvell_nfc_xfer_data_out_pio()
932 iowrite32_rep(nfc->regs + NDDB, tmp_buf, FIFO_REP(FIFO_DEPTH)); in marvell_nfc_xfer_data_out_pio()
982 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_hw_ecc_check_bitflips() local
986 ndsr = readl_relaxed(nfc->regs + NDSR); in marvell_nfc_hw_ecc_check_bitflips()
990 writel_relaxed(ndsr, nfc->regs + NDSR); in marvell_nfc_hw_ecc_check_bitflips()
1004 writel_relaxed(ndsr, nfc->regs + NDSR); in marvell_nfc_hw_ecc_check_bitflips()
1025 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_hw_ecc_hmg_do_read_page() local
1040 if (nfc->caps->is_nfcv2) in marvell_nfc_hw_ecc_hmg_do_read_page()
1059 if (nfc->use_dma) { in marvell_nfc_hw_ecc_hmg_do_read_page()
1060 marvell_nfc_xfer_data_dma(nfc, DMA_FROM_DEVICE, in marvell_nfc_hw_ecc_hmg_do_read_page()
1062 memcpy(data_buf, nfc->dma_buf, lt->data_bytes); in marvell_nfc_hw_ecc_hmg_do_read_page()
1063 memcpy(oob_buf, nfc->dma_buf + lt->data_bytes, oob_bytes); in marvell_nfc_hw_ecc_hmg_do_read_page()
1065 marvell_nfc_xfer_data_in_pio(nfc, data_buf, lt->data_bytes); in marvell_nfc_hw_ecc_hmg_do_read_page()
1066 marvell_nfc_xfer_data_in_pio(nfc, oob_buf, oob_bytes); in marvell_nfc_hw_ecc_hmg_do_read_page()
1139 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_hw_ecc_hmg_do_write_page() local
1154 if (nfc->caps->is_nfcv2) in marvell_nfc_hw_ecc_hmg_do_write_page()
1168 if (nfc->use_dma) { in marvell_nfc_hw_ecc_hmg_do_write_page()
1169 memcpy(nfc->dma_buf, data_buf, lt->data_bytes); in marvell_nfc_hw_ecc_hmg_do_write_page()
1170 memcpy(nfc->dma_buf + lt->data_bytes, oob_buf, oob_bytes); in marvell_nfc_hw_ecc_hmg_do_write_page()
1171 marvell_nfc_xfer_data_dma(nfc, DMA_TO_DEVICE, lt->data_bytes + in marvell_nfc_hw_ecc_hmg_do_write_page()
1174 marvell_nfc_xfer_data_out_pio(nfc, data_buf, lt->data_bytes); in marvell_nfc_hw_ecc_hmg_do_write_page()
1175 marvell_nfc_xfer_data_out_pio(nfc, oob_buf, oob_bytes); in marvell_nfc_hw_ecc_hmg_do_write_page()
1283 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_hw_ecc_bch_read_chunk() local
1330 marvell_nfc_xfer_data_in_pio(nfc, data, in marvell_nfc_hw_ecc_bch_read_chunk()
1338 marvell_nfc_xfer_data_in_pio(nfc, spare, in marvell_nfc_hw_ecc_bch_read_chunk()
1545 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_hw_ecc_bch_write_chunk() local
1594 iowrite32_rep(nfc->regs + NDDB, data, FIFO_REP(data_len)); in marvell_nfc_hw_ecc_bch_write_chunk()
1595 iowrite32_rep(nfc->regs + NDDB, spare, FIFO_REP(spare_len)); in marvell_nfc_hw_ecc_bch_write_chunk()
1679 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_parse_instructions() local
1732 if (nfc->caps->is_nfcv2) { in marvell_nfc_parse_instructions()
1746 if (nfc->caps->is_nfcv2) { in marvell_nfc_parse_instructions()
1768 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_xfer_data_pio() local
1782 ret = marvell_nfc_xfer_data_in_pio(nfc, in, len); in marvell_nfc_xfer_data_pio()
1786 ret = marvell_nfc_xfer_data_out_pio(nfc, out, len); in marvell_nfc_xfer_data_pio()
1850 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_monolithic_access_exec() local
1852 writel_relaxed(readl(nfc->regs + NDCR) & ~NDCR_ND_RUN, in marvell_nfc_monolithic_access_exec()
1853 nfc->regs + NDCR); in marvell_nfc_monolithic_access_exec()
1922 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_naked_access_exec() local
1924 writel_relaxed(readl(nfc->regs + NDCR) & ~NDCR_ND_RUN, in marvell_nfc_naked_access_exec()
1925 nfc->regs + NDCR); in marvell_nfc_naked_access_exec()
2147 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_exec_op() local
2152 if (nfc->caps->is_nfcv2) in marvell_nfc_exec_op()
2213 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nand_hw_ecc_controller_init() local
2217 if (!nfc->caps->is_nfcv2 && in marvell_nand_hw_ecc_controller_init()
2219 dev_err(nfc->dev, in marvell_nand_hw_ecc_controller_init()
2236 (!nfc->caps->is_nfcv2 && ecc->strength > 1)) { in marvell_nand_hw_ecc_controller_init()
2237 dev_err(nfc->dev, in marvell_nand_hw_ecc_controller_init()
2246 dev_err(nfc->dev, "Requested layout needs at least 128 OOB bytes\n"); in marvell_nand_hw_ecc_controller_init()
2289 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nand_ecc_init() local
2298 dev_info(nfc->dev, in marvell_nand_ecc_init()
2314 if (!nfc->caps->is_nfcv2 && mtd->writesize != SZ_512 && in marvell_nand_ecc_init()
2316 dev_err(nfc->dev, "NFCv1 cannot write %d bytes pages\n", in marvell_nand_ecc_init()
2355 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nfc_setup_interface() local
2356 unsigned int period_ns = 1000000000 / clk_get_rate(nfc->core_clk) * 2; in marvell_nfc_setup_interface()
2366 * SDR timings are given in pico-seconds while NFC timings must be in marvell_nfc_setup_interface()
2372 * NFC datasheet gives equations from which thoses calculations in marvell_nfc_setup_interface()
2384 * Read delay is the time of propagation from SoC pins to NFC internal in marvell_nfc_setup_interface()
2407 if (nfc->caps->is_nfcv2) { in marvell_nfc_setup_interface()
2435 if (nfc->caps->is_nfcv2) { in marvell_nfc_setup_interface()
2453 struct marvell_nfc *nfc = to_marvell_nfc(chip->controller); in marvell_nand_attach_chip() local
2454 struct pxa3xx_nand_platform_data *pdata = dev_get_platdata(nfc->dev); in marvell_nand_attach_chip()
2506 dev_err(nfc->dev, "ECC init failed: %d\n", ret); in marvell_nand_attach_chip()
2520 if (pdata || nfc->caps->legacy_of_bindings) { in marvell_nand_attach_chip()
2538 mtd->name = devm_kasprintf(nfc->dev, GFP_KERNEL, in marvell_nand_attach_chip()
2539 "%s:nand.%d", dev_name(nfc->dev), in marvell_nand_attach_chip()
2542 dev_err(nfc->dev, "Failed to allocate mtd->name\n"); in marvell_nand_attach_chip()
2556 static int marvell_nand_chip_init(struct device *dev, struct marvell_nfc *nfc, in marvell_nand_chip_init() argument
2575 if (pdata || nfc->caps->legacy_of_bindings) { in marvell_nand_chip_init()
2598 if (pdata || nfc->caps->legacy_of_bindings) { in marvell_nand_chip_init()
2614 if (cs >= nfc->caps->max_cs_nb) { in marvell_nand_chip_init()
2616 cs, nfc->caps->max_cs_nb); in marvell_nand_chip_init()
2620 if (test_and_set_bit(cs, &nfc->assigned_cs)) { in marvell_nand_chip_init()
2648 if (pdata || nfc->caps->legacy_of_bindings) { in marvell_nand_chip_init()
2662 if (rb >= nfc->caps->max_rb_nb) { in marvell_nand_chip_init()
2664 rb, nfc->caps->max_rb_nb); in marvell_nand_chip_init()
2672 chip->controller = &nfc->controller; in marvell_nand_chip_init()
2691 marvell_nand->ndtr0 = readl_relaxed(nfc->regs + NDTR0); in marvell_nand_chip_init()
2692 marvell_nand->ndtr1 = readl_relaxed(nfc->regs + NDTR1); in marvell_nand_chip_init()
2713 list_add_tail(&marvell_nand->node, &nfc->chips); in marvell_nand_chip_init()
2718 static void marvell_nand_chips_cleanup(struct marvell_nfc *nfc) in marvell_nand_chips_cleanup() argument
2724 list_for_each_entry_safe(entry, temp, &nfc->chips, node) { in marvell_nand_chips_cleanup()
2733 static int marvell_nand_chips_init(struct device *dev, struct marvell_nfc *nfc) in marvell_nand_chips_init() argument
2737 int max_cs = nfc->caps->max_cs_nb; in marvell_nand_chips_init()
2758 if (nfc->caps->legacy_of_bindings) { in marvell_nand_chips_init()
2759 ret = marvell_nand_chip_init(dev, nfc, np); in marvell_nand_chips_init()
2764 ret = marvell_nand_chip_init(dev, nfc, nand_np); in marvell_nand_chips_init()
2774 marvell_nand_chips_cleanup(nfc); in marvell_nand_chips_init()
2779 static int marvell_nfc_init_dma(struct marvell_nfc *nfc) in marvell_nfc_init_dma() argument
2781 struct platform_device *pdev = container_of(nfc->dev, in marvell_nfc_init_dma()
2789 dev_warn(nfc->dev, in marvell_nfc_init_dma()
2794 ret = dma_set_mask_and_coherent(nfc->dev, DMA_BIT_MASK(32)); in marvell_nfc_init_dma()
2798 nfc->dma_chan = dma_request_chan(nfc->dev, "data"); in marvell_nfc_init_dma()
2799 if (IS_ERR(nfc->dma_chan)) { in marvell_nfc_init_dma()
2800 ret = PTR_ERR(nfc->dma_chan); in marvell_nfc_init_dma()
2801 nfc->dma_chan = NULL; in marvell_nfc_init_dma()
2802 return dev_err_probe(nfc->dev, ret, "DMA channel request failed\n"); in marvell_nfc_init_dma()
2817 ret = dmaengine_slave_config(nfc->dma_chan, &config); in marvell_nfc_init_dma()
2819 dev_err(nfc->dev, "Failed to configure DMA channel\n"); in marvell_nfc_init_dma()
2829 nfc->dma_buf = kmalloc(MAX_CHUNK_SIZE, GFP_KERNEL | GFP_DMA); in marvell_nfc_init_dma()
2830 if (!nfc->dma_buf) { in marvell_nfc_init_dma()
2835 nfc->use_dma = true; in marvell_nfc_init_dma()
2840 dma_release_channel(nfc->dma_chan); in marvell_nfc_init_dma()
2841 nfc->dma_chan = NULL; in marvell_nfc_init_dma()
2846 static void marvell_nfc_reset(struct marvell_nfc *nfc) in marvell_nfc_reset() argument
2856 NDCR_RD_ID_CNT(NFCV1_READID_LEN), nfc->regs + NDCR); in marvell_nfc_reset()
2857 writel_relaxed(0xFFFFFFFF, nfc->regs + NDSR); in marvell_nfc_reset()
2858 writel_relaxed(0, nfc->regs + NDECCCTRL); in marvell_nfc_reset()
2861 static int marvell_nfc_init(struct marvell_nfc *nfc) in marvell_nfc_init() argument
2863 struct device_node *np = nfc->dev->of_node; in marvell_nfc_init()
2871 if (nfc->caps->need_system_controller) { in marvell_nfc_init()
2895 if (!nfc->caps->is_nfcv2) in marvell_nfc_init()
2896 marvell_nfc_init_dma(nfc); in marvell_nfc_init()
2898 marvell_nfc_reset(nfc); in marvell_nfc_init()
2906 struct marvell_nfc *nfc; in marvell_nfc_probe() local
2910 nfc = devm_kzalloc(&pdev->dev, sizeof(struct marvell_nfc), in marvell_nfc_probe()
2912 if (!nfc) in marvell_nfc_probe()
2915 nfc->dev = dev; in marvell_nfc_probe()
2916 nand_controller_init(&nfc->controller); in marvell_nfc_probe()
2917 nfc->controller.ops = &marvell_nand_controller_ops; in marvell_nfc_probe()
2918 INIT_LIST_HEAD(&nfc->chips); in marvell_nfc_probe()
2920 nfc->regs = devm_platform_ioremap_resource(pdev, 0); in marvell_nfc_probe()
2921 if (IS_ERR(nfc->regs)) in marvell_nfc_probe()
2922 return PTR_ERR(nfc->regs); in marvell_nfc_probe()
2928 nfc->core_clk = devm_clk_get(&pdev->dev, "core"); in marvell_nfc_probe()
2931 if (nfc->core_clk == ERR_PTR(-ENOENT)) in marvell_nfc_probe()
2932 nfc->core_clk = devm_clk_get(&pdev->dev, NULL); in marvell_nfc_probe()
2934 if (IS_ERR(nfc->core_clk)) in marvell_nfc_probe()
2935 return PTR_ERR(nfc->core_clk); in marvell_nfc_probe()
2937 ret = clk_prepare_enable(nfc->core_clk); in marvell_nfc_probe()
2941 nfc->reg_clk = devm_clk_get(&pdev->dev, "reg"); in marvell_nfc_probe()
2942 if (IS_ERR(nfc->reg_clk)) { in marvell_nfc_probe()
2943 if (PTR_ERR(nfc->reg_clk) != -ENOENT) { in marvell_nfc_probe()
2944 ret = PTR_ERR(nfc->reg_clk); in marvell_nfc_probe()
2948 nfc->reg_clk = NULL; in marvell_nfc_probe()
2951 ret = clk_prepare_enable(nfc->reg_clk); in marvell_nfc_probe()
2955 marvell_nfc_disable_int(nfc, NDCR_ALL_INT); in marvell_nfc_probe()
2956 marvell_nfc_clear_int(nfc, NDCR_ALL_INT); in marvell_nfc_probe()
2958 0, "marvell-nfc", nfc); in marvell_nfc_probe()
2964 nfc->caps = (void *)pdev->id_entry->driver_data; in marvell_nfc_probe()
2966 nfc->caps = of_device_get_match_data(&pdev->dev); in marvell_nfc_probe()
2968 if (!nfc->caps) { in marvell_nfc_probe()
2969 dev_err(dev, "Could not retrieve NFC caps\n"); in marvell_nfc_probe()
2975 ret = marvell_nfc_init(nfc); in marvell_nfc_probe()
2979 platform_set_drvdata(pdev, nfc); in marvell_nfc_probe()
2981 ret = marvell_nand_chips_init(dev, nfc); in marvell_nfc_probe()
2988 if (nfc->use_dma) in marvell_nfc_probe()
2989 dma_release_channel(nfc->dma_chan); in marvell_nfc_probe()
2991 clk_disable_unprepare(nfc->reg_clk); in marvell_nfc_probe()
2993 clk_disable_unprepare(nfc->core_clk); in marvell_nfc_probe()
3000 struct marvell_nfc *nfc = platform_get_drvdata(pdev); in marvell_nfc_remove() local
3002 marvell_nand_chips_cleanup(nfc); in marvell_nfc_remove()
3004 if (nfc->use_dma) { in marvell_nfc_remove()
3005 dmaengine_terminate_all(nfc->dma_chan); in marvell_nfc_remove()
3006 dma_release_channel(nfc->dma_chan); in marvell_nfc_remove()
3009 clk_disable_unprepare(nfc->reg_clk); in marvell_nfc_remove()
3010 clk_disable_unprepare(nfc->core_clk); in marvell_nfc_remove()
3017 struct marvell_nfc *nfc = dev_get_drvdata(dev); in marvell_nfc_suspend() local
3020 list_for_each_entry(chip, &nfc->chips, node) in marvell_nfc_suspend()
3023 clk_disable_unprepare(nfc->reg_clk); in marvell_nfc_suspend()
3024 clk_disable_unprepare(nfc->core_clk); in marvell_nfc_suspend()
3031 struct marvell_nfc *nfc = dev_get_drvdata(dev); in marvell_nfc_resume() local
3034 ret = clk_prepare_enable(nfc->core_clk); in marvell_nfc_resume()
3038 ret = clk_prepare_enable(nfc->reg_clk); in marvell_nfc_resume()
3043 * Reset nfc->selected_chip so the next command will cause the timing in marvell_nfc_resume()
3046 nfc->selected_chip = NULL; in marvell_nfc_resume()
3049 marvell_nfc_reset(nfc); in marvell_nfc_resume()
3140 .name = "marvell-nfc",