gpio: ge: Make driver OF-independent
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 24 Jul 2023 16:13:17 +0000 (19:13 +0300)
committerBartosz Golaszewski <bartosz.golaszewski@linaro.org>
Thu, 27 Jul 2023 07:33:01 +0000 (09:33 +0200)
There is nothing in the driver that requires OF APIs,
make the driver OF independent.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Tested-by: Randy Dunlap <rdunlap@infradead.org> # build-tested
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
drivers/gpio/gpio-ge.c

index f92b3c8..d019669 100644 (file)
 #include <linux/gpio/driver.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
+#include <linux/mod_devicetable.h>
 #include <linux/module.h>
-#include <linux/of_address.h>
-#include <linux/of.h>
 #include <linux/platform_device.h>
+#include <linux/property.h>
 #include <linux/slab.h>
 
 #define GEF_GPIO_DIRECT                0x00
@@ -54,6 +54,7 @@ MODULE_DEVICE_TABLE(of, gef_gpio_ids);
 
 static int __init gef_gpio_probe(struct platform_device *pdev)
 {
+       struct device *dev = &pdev->dev;
        struct gpio_chip *gc;
        void __iomem *regs;
        int ret;
@@ -62,38 +63,30 @@ static int __init gef_gpio_probe(struct platform_device *pdev)
        if (!gc)
                return -ENOMEM;
 
-       regs = of_iomap(pdev->dev.of_node, 0);
-       if (!regs)
-               return -ENOMEM;
+       regs = devm_platform_ioremap_resource(pdev, 0);
+       if (IS_ERR(regs))
+               return PTR_ERR(regs);
 
        ret = bgpio_init(gc, &pdev->dev, 4, regs + GEF_GPIO_IN,
                         regs + GEF_GPIO_OUT, NULL, NULL,
                         regs + GEF_GPIO_DIRECT, BGPIOF_BIG_ENDIAN_BYTE_ORDER);
-       if (ret) {
-               dev_err(&pdev->dev, "bgpio_init failed\n");
-               goto err0;
-       }
+       if (ret)
+               return dev_err_probe(dev, ret, "bgpio_init failed\n");
 
        /* Setup pointers to chip functions */
-       gc->label = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%pOF", pdev->dev.of_node);
-       if (!gc->label) {
-               ret = -ENOMEM;
-               goto err0;
-       }
+       gc->label = devm_kasprintf(dev, GFP_KERNEL, "%pfw", dev_fwnode(dev));
+       if (!gc->label)
+               return -ENOMEM;
 
        gc->base = -1;
-       gc->ngpio = (u16)(uintptr_t)of_device_get_match_data(&pdev->dev);
+       gc->ngpio = (uintptr_t)device_get_match_data(dev);
 
        /* This function adds a memory mapped GPIO chip */
        ret = devm_gpiochip_add_data(&pdev->dev, gc, NULL);
        if (ret)
-               goto err0;
+               return dev_err_probe(dev, ret, "GPIO chip registration failed\n");
 
        return 0;
-err0:
-       iounmap(regs);
-       pr_err("%pOF: GPIO chip registration failed\n", pdev->dev.of_node);
-       return ret;
 };
 
 static struct platform_driver gef_gpio_driver = {