ARM: scoop: use gpiochip data pointer
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 8 Dec 2015 09:51:43 +0000 (10:51 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 19 Feb 2016 08:51:41 +0000 (09:51 +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: arm@kernel.org
Cc: Richard Purdie <rpurdie@rpsys.net>
Acked-by: Olof Johansson <olof@lixom.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
arch/arm/common/scoop.c

index e0df333..9ba45ad 100644 (file)
@@ -69,7 +69,7 @@ static void __scoop_gpio_set(struct scoop_dev *sdev,
 
 static void scoop_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 {
-       struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+       struct scoop_dev *sdev = gpiochip_get_data(chip);
        unsigned long flags;
 
        spin_lock_irqsave(&sdev->scoop_lock, flags);
@@ -81,7 +81,7 @@ static void scoop_gpio_set(struct gpio_chip *chip, unsigned offset, int value)
 
 static int scoop_gpio_get(struct gpio_chip *chip, unsigned offset)
 {
-       struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+       struct scoop_dev *sdev = gpiochip_get_data(chip);
 
        /* XXX: I'm unsure, but it seems so */
        return !!(ioread16(sdev->base + SCOOP_GPRR) & (1 << (offset + 1)));
@@ -90,7 +90,7 @@ static int scoop_gpio_get(struct gpio_chip *chip, unsigned offset)
 static int scoop_gpio_direction_input(struct gpio_chip *chip,
                        unsigned offset)
 {
-       struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+       struct scoop_dev *sdev = gpiochip_get_data(chip);
        unsigned long flags;
        unsigned short gpcr;
 
@@ -108,7 +108,7 @@ static int scoop_gpio_direction_input(struct gpio_chip *chip,
 static int scoop_gpio_direction_output(struct gpio_chip *chip,
                        unsigned offset, int value)
 {
-       struct scoop_dev *sdev = container_of(chip, struct scoop_dev, gpio);
+       struct scoop_dev *sdev = gpiochip_get_data(chip);
        unsigned long flags;
        unsigned short gpcr;
 
@@ -224,7 +224,7 @@ static int scoop_probe(struct platform_device *pdev)
                devptr->gpio.direction_input = scoop_gpio_direction_input;
                devptr->gpio.direction_output = scoop_gpio_direction_output;
 
-               ret = gpiochip_add(&devptr->gpio);
+               ret = gpiochip_add_data(&devptr->gpio, devptr);
                if (ret)
                        goto err_gpio;
        }