Message ID | 1449668466-4882-1-git-send-email-linus.walleij@linaro.org |
---|---|
State | New |
Headers | show |
On Wed, Dec 09, 2015 at 02:41:06PM +0100, Linus Walleij wrote: > @@ -354,7 +349,7 @@ 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) Another place that dev_err references gpiochip_add instead of gpiochip_add_data. > dev_err(gpt->dev, "gpiochip_add() failed; rc=%i\n", rc); > Other places with references not associated with patches: Documentation/zh_CN/gpio.txt Documentation/gpio/gpio-legacy.txt Documentation/gpio/driver.txt -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thu, Dec 10, 2015 at 12:27 AM, Michael Welling <mwelling@ieee.org> wrote: > On Wed, Dec 09, 2015 at 02:41:06PM +0100, Linus Walleij wrote: >> @@ -354,7 +349,7 @@ 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) > > Another place that dev_err references gpiochip_add instead of gpiochip_add_data. > >> dev_err(gpt->dev, "gpiochip_add() failed; rc=%i\n", rc); OK fixed it. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sun, Dec 13, 2015 at 10:02:20PM +0100, Linus Walleij wrote: > On Thu, Dec 10, 2015 at 12:27 AM, Michael Welling <mwelling@ieee.org> wrote: > > On Wed, Dec 09, 2015 at 02:41:06PM +0100, Linus Walleij wrote: > >> @@ -354,7 +349,7 @@ 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) > > > > Another place that dev_err references gpiochip_add instead of gpiochip_add_data. > > > >> dev_err(gpt->dev, "gpiochip_add() failed; rc=%i\n", rc); > > OK fixed it. Sorry for nit picking. The series otherwises looks good. Reviewed-by: Michael Welling <mwelling@ieee.org> > > Yours, > Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c index 3048e34db6d8..f112e96ab8a3 100644 --- a/arch/powerpc/platforms/52xx/mpc52xx_gpt.c +++ b/arch/powerpc/platforms/52xx/mpc52xx_gpt.c @@ -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,7 +349,7 @@ 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);
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> --- Power maintainers: please ACK this. I cannot really say if this should ideally be broken out as a separate driver in drivers/gpio or if it is better to keep it here. For now just refactoring... --- arch/powerpc/platforms/52xx/mpc52xx_gpt.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)