]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
staging: vme: use gpiochip data pointer
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 8 Dec 2015 22:06:50 +0000 (23:06 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Tue, 26 Apr 2016 13:35:16 +0000 (15:35 +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: Manohar Vanga <manohar.vanga@gmail.com>
Cc: devel@driverdev.osuosl.org
Acked-by: Martyn Welch <martyn@welchs.me.uk>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/staging/vme/devices/vme_pio2_gpio.c

index df992c3cb5ce0e2f2a95538fcb7300d1be2fb92d..6d361201d98cf59a293ab3c335bbc38b7ab4497e 100644 (file)
@@ -17,7 +17,7 @@
 #include <linux/device.h>
 #include <linux/platform_device.h>
 #include <linux/ctype.h>
-#include <linux/gpio.h>
+#include <linux/gpio/driver.h>
 #include <linux/slab.h>
 #include <linux/vme.h>
 
 
 static const char driver_name[] = "pio2_gpio";
 
-static struct pio2_card *gpio_to_pio2_card(struct gpio_chip *chip)
-{
-       return container_of(chip, struct pio2_card, gc);
-}
-
 static int pio2_gpio_get(struct gpio_chip *chip, unsigned int offset)
 {
        u8 reg;
        int retval;
-       struct pio2_card *card = gpio_to_pio2_card(chip);
+       struct pio2_card *card = gpiochip_get_data(chip);
 
        if ((card->bank[PIO2_CHANNEL_BANK[offset]].config == OUTPUT) |
            (card->bank[PIO2_CHANNEL_BANK[offset]].config == NOFIT)) {
@@ -71,7 +66,7 @@ static void pio2_gpio_set(struct gpio_chip *chip,
 {
        u8 reg;
        int retval;
-       struct pio2_card *card = gpio_to_pio2_card(chip);
+       struct pio2_card *card = gpiochip_get_data(chip);
 
        if ((card->bank[PIO2_CHANNEL_BANK[offset]].config == INPUT) |
            (card->bank[PIO2_CHANNEL_BANK[offset]].config == NOFIT)) {
@@ -100,7 +95,7 @@ static void pio2_gpio_set(struct gpio_chip *chip,
 static int pio2_gpio_dir_in(struct gpio_chip *chip, unsigned offset)
 {
        int data;
-       struct pio2_card *card = gpio_to_pio2_card(chip);
+       struct pio2_card *card = gpiochip_get_data(chip);
 
        if ((card->bank[PIO2_CHANNEL_BANK[offset]].config == OUTPUT) |
            (card->bank[PIO2_CHANNEL_BANK[offset]].config == NOFIT)) {
@@ -119,7 +114,7 @@ static int pio2_gpio_dir_in(struct gpio_chip *chip, unsigned offset)
 static int pio2_gpio_dir_out(struct gpio_chip *chip, unsigned offset, int value)
 {
        int data;
-       struct pio2_card *card = gpio_to_pio2_card(chip);
+       struct pio2_card *card = gpiochip_get_data(chip);
 
        if ((card->bank[PIO2_CHANNEL_BANK[offset]].config == INPUT) |
            (card->bank[PIO2_CHANNEL_BANK[offset]].config == NOFIT)) {
@@ -205,7 +200,7 @@ int pio2_gpio_init(struct pio2_card *card)
        card->gc.set = pio2_gpio_set;
 
        /* This function adds a memory mapped GPIO chip */
-       retval = gpiochip_add(&card->gc);
+       retval = gpiochip_add_data(&card->gc, card);
        if (retval) {
                dev_err(&card->vdev->dev, "Unable to register GPIO\n");
                kfree(card->gc.label);