]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
avr32: gpio: use gpiochip data pointer
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 8 Dec 2015 12:48:02 +0000 (13:48 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 6 Jan 2016 23:07:39 +0000 (00:07 +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: Haavard Skinnemoen <hskinnemoen@gmail.com>
Acked-by: Hans-Christian Noren Egtvedt <egtvedt@samfundet.no>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/avr32/mach-at32ap/pio.c

index aa74491771fa6fa88c3a5338d61afb86cb45a69e..5020057ac7a2405f487cd082e90144b322ca46e1 100644 (file)
@@ -203,7 +203,7 @@ fail:
 
 static int direction_input(struct gpio_chip *chip, unsigned offset)
 {
-       struct pio_device *pio = container_of(chip, struct pio_device, chip);
+       struct pio_device *pio = gpiochip_get_data(chip);
        u32 mask = 1 << offset;
 
        if (!(pio_readl(pio, PSR) & mask))
@@ -215,7 +215,7 @@ static int direction_input(struct gpio_chip *chip, unsigned offset)
 
 static int gpio_get(struct gpio_chip *chip, unsigned offset)
 {
-       struct pio_device *pio = container_of(chip, struct pio_device, chip);
+       struct pio_device *pio = gpiochip_get_data(chip);
 
        return (pio_readl(pio, PDSR) >> offset) & 1;
 }
@@ -224,7 +224,7 @@ static void gpio_set(struct gpio_chip *chip, unsigned offset, int value);
 
 static int direction_output(struct gpio_chip *chip, unsigned offset, int value)
 {
-       struct pio_device *pio = container_of(chip, struct pio_device, chip);
+       struct pio_device *pio = gpiochip_get_data(chip);
        u32 mask = 1 << offset;
 
        if (!(pio_readl(pio, PSR) & mask))
@@ -237,7 +237,7 @@ static int direction_output(struct gpio_chip *chip, unsigned offset, int value)
 
 static void gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 {
-       struct pio_device *pio = container_of(chip, struct pio_device, chip);
+       struct pio_device *pio = gpiochip_get_data(chip);
        u32 mask = 1 << offset;
 
        if (value)
@@ -335,7 +335,7 @@ gpio_irq_setup(struct pio_device *pio, int irq, int gpio_irq)
  */
 static void pio_bank_show(struct seq_file *s, struct gpio_chip *chip)
 {
-       struct pio_device *pio = container_of(chip, struct pio_device, chip);
+       struct pio_device *pio = gpiochip_get_data(chip);
        u32                     psr, osr, imr, pdsr, pusr, ifsr, mdsr;
        unsigned                i;
        u32                     mask;
@@ -406,7 +406,7 @@ static int __init pio_probe(struct platform_device *pdev)
        pio->chip.set = gpio_set;
        pio->chip.dbg_show = pio_bank_show;
 
-       gpiochip_add(&pio->chip);
+       gpiochip_add_data(&pio->chip, pio);
 
        gpio_irq_setup(pio, irq, gpio_irq_base);