uint8_t pmecc_max_correction;
 };
 
-struct atmel_nand_nfc_caps {
-       uint32_t rb_mask;
-};
-
 /*
  * oob layout for large page size
  * bad block info is on bytes 0 and 1
        /* Point to the sram bank which include readed data via NFC */
        void                    *data_in_sram;
        bool                    will_write_sram;
-       const struct atmel_nand_nfc_caps *caps;
 };
 static struct atmel_nfc        nand_nfc;
 
                nfc_writel(host->nfc->hsmc_regs, IDR, NFC_SR_XFR_DONE);
                ret = IRQ_HANDLED;
        }
-       if (pending & host->nfc->caps->rb_mask) {
+       if (pending & NFC_SR_RB_EDGE) {
                complete(&host->nfc->comp_ready);
-               nfc_writel(host->nfc->hsmc_regs, IDR, host->nfc->caps->rb_mask);
+               nfc_writel(host->nfc->hsmc_regs, IDR, NFC_SR_RB_EDGE);
                ret = IRQ_HANDLED;
        }
        if (pending & NFC_SR_CMD_DONE) {
        if (flag & NFC_SR_XFR_DONE)
                init_completion(&host->nfc->comp_xfer_done);
 
-       if (flag & host->nfc->caps->rb_mask)
+       if (flag & NFC_SR_RB_EDGE)
                init_completion(&host->nfc->comp_ready);
 
        if (flag & NFC_SR_CMD_DONE)
        if (flag & NFC_SR_XFR_DONE)
                comp[index++] = &host->nfc->comp_xfer_done;
 
-       if (flag & host->nfc->caps->rb_mask)
+       if (flag & NFC_SR_RB_EDGE)
                comp[index++] = &host->nfc->comp_ready;
 
        if (flag & NFC_SR_CMD_DONE)
                dev_err(host->dev, "Lost the interrupt flags: 0x%08x\n",
                                mask & status);
 
-       return status & host->nfc->caps->rb_mask;
+       return status & NFC_SR_RB_EDGE;
 }
 
 static void nfc_select_chip(struct mtd_info *mtd, int chip)
                }
                /* fall through */
        default:
-               nfc_prepare_interrupt(host, host->nfc->caps->rb_mask);
-               nfc_wait_interrupt(host, host->nfc->caps->rb_mask);
+               nfc_prepare_interrupt(host, NFC_SR_RB_EDGE);
+               nfc_wait_interrupt(host, NFC_SR_RB_EDGE);
        }
 }
 
                }
        }
 
-       nfc->caps = (const struct atmel_nand_nfc_caps *)
-               of_device_get_match_data(&pdev->dev);
-       if (!nfc->caps)
-               return -ENODEV;
-
        nfc_writel(nfc->hsmc_regs, IDR, 0xffffffff);
        nfc_readl(nfc->hsmc_regs, SR);  /* clear the NFC_SR */
 
        return 0;
 }
 
-static const struct atmel_nand_nfc_caps sama5d3_nfc_caps = {
-       .rb_mask = NFC_SR_RB_EDGE0,
-};
-
-static const struct atmel_nand_nfc_caps sama5d4_nfc_caps = {
-       .rb_mask = NFC_SR_RB_EDGE3,
-};
-
 static const struct of_device_id atmel_nand_nfc_match[] = {
-       { .compatible = "atmel,sama5d3-nfc", .data = &sama5d3_nfc_caps },
-       { .compatible = "atmel,sama5d4-nfc", .data = &sama5d4_nfc_caps },
+       { .compatible = "atmel,sama5d3-nfc" },
        { /* sentinel */ }
 };
 MODULE_DEVICE_TABLE(of, atmel_nand_nfc_match);