powerpc/52xx: Get rid of of_node assignment
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Sat, 7 May 2022 10:01:46 +0000 (13:01 +0300)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 22 Jun 2022 02:51:49 +0000 (12:51 +1000)
Let GPIO library assign of_node from the parent device.
This allows to move GPIO library and drivers to use fwnode
APIs instead of being stuck with OF-only interfaces.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220507100147.5802-3-andriy.shevchenko@linux.intel.com
arch/powerpc/platforms/52xx/mpc52xx_gpt.c

index 76ece6001cdfd2a400b6bd1740c33f8af44fb3e5..74baded88f47d6eaa55231906a315fc92745ef28 100644 (file)
@@ -60,6 +60,7 @@
 #include <linux/of_platform.h>
 #include <linux/of_gpio.h>
 #include <linux/kernel.h>
+#include <linux/property.h>
 #include <linux/slab.h>
 #include <linux/fs.h>
 #include <linux/watchdog.h>
@@ -316,17 +317,15 @@ mpc52xx_gpt_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val)
        return 0;
 }
 
-static void
-mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
+static void mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt)
 {
        int rc;
 
-       /* Only setup GPIO if the device tree claims the GPT is
-        * a GPIO controller */
-       if (!of_find_property(node, "gpio-controller", NULL))
+       /* Only setup GPIO if the device claims the GPT is a GPIO controller */
+       if (!device_property_present(gpt->dev, "gpio-controller"))
                return;
 
-       gpt->gc.label = kasprintf(GFP_KERNEL, "%pOF", node);
+       gpt->gc.label = kasprintf(GFP_KERNEL, "%pfw", dev_fwnode(gpt->dev));
        if (!gpt->gc.label) {
                dev_err(gpt->dev, "out of memory\n");
                return;
@@ -338,7 +337,7 @@ mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
        gpt->gc.get = mpc52xx_gpt_gpio_get;
        gpt->gc.set = mpc52xx_gpt_gpio_set;
        gpt->gc.base = -1;
-       gpt->gc.of_node = node;
+       gpt->gc.parent = gpt->dev;
 
        /* Setup external pin in GPIO mode */
        clrsetbits_be32(&gpt->regs->mode, MPC52xx_GPT_MODE_MS_MASK,
@@ -351,8 +350,7 @@ mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
        dev_dbg(gpt->dev, "%s() complete.\n", __func__);
 }
 #else /* defined(CONFIG_GPIOLIB) */
-static void
-mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *p, struct device_node *np) { }
+static void mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt) { }
 #endif /* defined(CONFIG_GPIOLIB) */
 
 /***********************************************************************
@@ -729,7 +727,7 @@ static int mpc52xx_gpt_probe(struct platform_device *ofdev)
 
        dev_set_drvdata(&ofdev->dev, gpt);
 
-       mpc52xx_gpt_gpio_setup(gpt, ofdev->dev.of_node);
+       mpc52xx_gpt_gpio_setup(gpt);
        mpc52xx_gpt_irq_setup(gpt, ofdev->dev.of_node);
 
        mutex_lock(&mpc52xx_gpt_list_mutex);