powerpc: mpc52xx_gpt: use gpiochip data pointer
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 8 Dec 2015 13:49:42 +0000 (14:49 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 30 Mar 2016 08:50:47 +0000 (10:50 +0200)
This makes the driver use the data pointer added to the gpio_chip
to store a pointer to the state container instead of relying on
container_of().

Cc: Anatolij Gustschin <agust@denx.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/powerpc/platforms/52xx/mpc52xx_gpt.c

index 3048e34..22645a7 100644 (file)
@@ -278,14 +278,9 @@ mpc52xx_gpt_irq_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
  * GPIOLIB hooks
  */
 #if defined(CONFIG_GPIOLIB)
-static inline struct mpc52xx_gpt_priv *gc_to_mpc52xx_gpt(struct gpio_chip *gc)
-{
-       return container_of(gc, struct mpc52xx_gpt_priv, gc);
-}
-
 static int mpc52xx_gpt_gpio_get(struct gpio_chip *gc, unsigned int gpio)
 {
-       struct mpc52xx_gpt_priv *gpt = gc_to_mpc52xx_gpt(gc);
+       struct mpc52xx_gpt_priv *gpt = gpiochip_get_data(gc);
 
        return (in_be32(&gpt->regs->status) >> 8) & 1;
 }
@@ -293,7 +288,7 @@ static int mpc52xx_gpt_gpio_get(struct gpio_chip *gc, unsigned int gpio)
 static void
 mpc52xx_gpt_gpio_set(struct gpio_chip *gc, unsigned int gpio, int v)
 {
-       struct mpc52xx_gpt_priv *gpt = gc_to_mpc52xx_gpt(gc);
+       struct mpc52xx_gpt_priv *gpt = gpiochip_get_data(gc);
        unsigned long flags;
        u32 r;
 
@@ -307,7 +302,7 @@ mpc52xx_gpt_gpio_set(struct gpio_chip *gc, unsigned int gpio, int v)
 
 static int mpc52xx_gpt_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio)
 {
-       struct mpc52xx_gpt_priv *gpt = gc_to_mpc52xx_gpt(gc);
+       struct mpc52xx_gpt_priv *gpt = gpiochip_get_data(gc);
        unsigned long flags;
 
        dev_dbg(gpt->dev, "%s: gpio:%d\n", __func__, gpio);
@@ -354,9 +349,9 @@ mpc52xx_gpt_gpio_setup(struct mpc52xx_gpt_priv *gpt, struct device_node *node)
        clrsetbits_be32(&gpt->regs->mode, MPC52xx_GPT_MODE_MS_MASK,
                        MPC52xx_GPT_MODE_MS_GPIO);
 
-       rc = gpiochip_add(&gpt->gc);
+       rc = gpiochip_add_data(&gpt->gc, gpt);
        if (rc)
-               dev_err(gpt->dev, "gpiochip_add() failed; rc=%i\n", rc);
+               dev_err(gpt->dev, "gpiochip_add_data() failed; rc=%i\n", rc);
 
        dev_dbg(gpt->dev, "%s() complete.\n", __func__);
 }