This commit adds support for device tree and enumeration via device model
for the Vybrid's NFC NAND driver.

Signed-off-by: Lukasz Majewski <lu...@denx.de>
---

 drivers/mtd/nand/raw/vf610_nfc.c | 47 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/drivers/mtd/nand/raw/vf610_nfc.c b/drivers/mtd/nand/raw/vf610_nfc.c
index 619d0403e9..fce7e5f299 100644
--- a/drivers/mtd/nand/raw/vf610_nfc.c
+++ b/drivers/mtd/nand/raw/vf610_nfc.c
@@ -31,6 +31,11 @@
 #include <nand.h>
 #include <errno.h>
 #include <asm/io.h>
+#if CONFIG_NAND_VF610_NFC_DT
+#include <dm.h>
+#include <linux/io.h>
+#include <linux/ioport.h>
+#endif
 
 /* Register Offsets */
 #define NFC_FLASH_CMD1                 0x3F00
@@ -760,9 +765,51 @@ error:
        return err;
 }
 
+#if CONFIG_NAND_VF610_NFC_DT
+static const struct udevice_id vf610_nfc_dt_ids[] = {
+       {
+               .compatible = "fsl,vf610-nfc",
+       },
+       { /* sentinel */ }
+};
+
+static int vf610_nfc_dt_probe(struct udevice *dev)
+{
+       struct resource res;
+       int ret;
+
+       ret = dev_read_resource(dev, 0, &res);
+       if (ret)
+               return ret;
+
+       return vf610_nfc_nand_init(0, devm_ioremap(dev, res.start,
+                                                  resource_size(&res)));
+}
+
+U_BOOT_DRIVER(vf610_nfc_dt) = {
+       .name = "vf610-nfc-dt",
+       .id = UCLASS_MTD,
+       .of_match = vf610_nfc_dt_ids,
+       .probe = vf610_nfc_dt_probe,
+};
+
+void board_nand_init(void)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device_by_driver(UCLASS_MTD,
+                                         DM_GET_DRIVER(vf610_nfc_dt),
+                                         &dev);
+       if (ret && ret != -ENODEV)
+               pr_err("Failed to initialize NAND controller. (error %d)\n",
+                      ret);
+}
+#else
 void board_nand_init(void)
 {
        int err = vf610_nfc_nand_init(0, (void __iomem *)CONFIG_SYS_NAND_BASE);
        if (err)
                printf("VF610 NAND init failed (err %d)\n", err);
 }
+#endif /* CONFIG_NAND_VF610_NFC_DT */
-- 
2.11.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to