gpio: tz1090-pdc: use gpiochip data pointer
authorLinus Walleij <linus.walleij@linaro.org>
Mon, 7 Dec 2015 13:57:25 +0000 (14:57 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 5 Jan 2016 10:21:16 +0000 (11:21 +0100)
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: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpio-tz1090-pdc.c

index b08b22b..5b77817 100644 (file)
@@ -49,7 +49,6 @@ struct tz1090_pdc_gpio {
        void __iomem *reg;
        int irq[GPIO_PDC_NIRQ];
 };
-#define to_pdc(c)      container_of(c, struct tz1090_pdc_gpio, chip)
 
 /* Register accesses into the PDC MMIO area */
 
@@ -70,7 +69,7 @@ static inline unsigned int pdc_read(struct tz1090_pdc_gpio *priv,
 static int tz1090_pdc_gpio_direction_input(struct gpio_chip *chip,
                                           unsigned int offset)
 {
-       struct tz1090_pdc_gpio *priv = to_pdc(chip);
+       struct tz1090_pdc_gpio *priv = gpiochip_get_data(chip);
        u32 value;
        int lstat;
 
@@ -87,7 +86,7 @@ static int tz1090_pdc_gpio_direction_output(struct gpio_chip *chip,
                                            unsigned int offset,
                                            int output_value)
 {
-       struct tz1090_pdc_gpio *priv = to_pdc(chip);
+       struct tz1090_pdc_gpio *priv = gpiochip_get_data(chip);
        u32 value;
        int lstat;
 
@@ -112,14 +111,14 @@ static int tz1090_pdc_gpio_direction_output(struct gpio_chip *chip,
 
 static int tz1090_pdc_gpio_get(struct gpio_chip *chip, unsigned int offset)
 {
-       struct tz1090_pdc_gpio *priv = to_pdc(chip);
+       struct tz1090_pdc_gpio *priv = gpiochip_get_data(chip);
        return !!(pdc_read(priv, REG_SOC_GPIO_STATUS) & BIT(offset));
 }
 
 static void tz1090_pdc_gpio_set(struct gpio_chip *chip, unsigned int offset,
                                int output_value)
 {
-       struct tz1090_pdc_gpio *priv = to_pdc(chip);
+       struct tz1090_pdc_gpio *priv = gpiochip_get_data(chip);
        u32 value;
        int lstat;
 
@@ -139,7 +138,7 @@ static void tz1090_pdc_gpio_set(struct gpio_chip *chip, unsigned int offset,
 
 static int tz1090_pdc_gpio_to_irq(struct gpio_chip *chip, unsigned int offset)
 {
-       struct tz1090_pdc_gpio *priv = to_pdc(chip);
+       struct tz1090_pdc_gpio *priv = gpiochip_get_data(chip);
        unsigned int syswake = offset - GPIO_PDC_IRQ_FIRST;
        int irq;
 
@@ -207,7 +206,7 @@ static int tz1090_pdc_gpio_probe(struct platform_device *pdev)
                priv->irq[i] = irq_of_parse_and_map(np, i);
 
        /* Add the GPIO bank */
-       gpiochip_add(&priv->chip);
+       gpiochip_add_data(&priv->chip, priv);
 
        return 0;
 }