#include <linux/platform_device.h>
 #include <linux/property.h>
 #include <linux/mod_devicetable.h>
-#include <linux/of.h>
 
 #include "gpiolib.h"
 
        return devm_ioremap_resource(&pdev->dev, r);
 }
 
-#ifdef CONFIG_OF
 static const struct of_device_id bgpio_of_match[] = {
        { .compatible = "brcm,bcm6345-gpio" },
        { .compatible = "wd,mbl-gpio" },
 };
 MODULE_DEVICE_TABLE(of, bgpio_of_match);
 
-static struct bgpio_pdata *bgpio_parse_dt(struct platform_device *pdev,
-                                         unsigned long *flags)
+static struct bgpio_pdata *bgpio_parse_fw(struct device *dev, unsigned long *flags)
 {
        struct bgpio_pdata *pdata;
 
-       if (!pdev->dev.of_node)
+       if (!dev_fwnode(dev))
                return NULL;
 
-       pdata = devm_kzalloc(&pdev->dev, sizeof(struct bgpio_pdata),
-                            GFP_KERNEL);
+       pdata = devm_kzalloc(dev, sizeof(*pdata), GFP_KERNEL);
        if (!pdata)
                return ERR_PTR(-ENOMEM);
 
        pdata->base = -1;
 
-       if (of_device_is_big_endian(pdev->dev.of_node))
+       if (device_is_big_endian(dev))
                *flags |= BGPIOF_BIG_ENDIAN_BYTE_ORDER;
 
-       if (of_property_read_bool(pdev->dev.of_node, "no-output"))
+       if (device_property_read_bool(dev, "no-output"))
                *flags |= BGPIOF_NO_OUTPUT;
 
        return pdata;
 }
-#else
-static struct bgpio_pdata *bgpio_parse_dt(struct platform_device *pdev,
-                                         unsigned long *flags)
-{
-       return NULL;
-}
-#endif /* CONFIG_OF */
 
 static int bgpio_pdev_probe(struct platform_device *pdev)
 {
        struct gpio_chip *gc;
        struct bgpio_pdata *pdata;
 
-       pdata = bgpio_parse_dt(pdev, &flags);
+       pdata = bgpio_parse_fw(dev, &flags);
        if (IS_ERR(pdata))
                return PTR_ERR(pdata);
 
 static struct platform_driver bgpio_driver = {
        .driver = {
                .name = "basic-mmio-gpio",
-               .of_match_table = of_match_ptr(bgpio_of_match),
+               .of_match_table = bgpio_of_match,
        },
        .id_table = bgpio_id_table,
        .probe = bgpio_pdev_probe,