aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpio/gpio-zevio.c
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2015-12-07 09:26:02 -0500
committerLinus Walleij <linus.walleij@linaro.org>2016-01-05 05:21:19 -0500
commit9a3ad668a081163ad5108a6f5d3a7ddaa0390098 (patch)
tree30ca633161b53e3e4e88da362171d3da4ad5b7e7 /drivers/gpio/gpio-zevio.c
parente730a5953af4c54a50fb7712af4dd9468dedcd22 (diff)
gpio: zevio: use gpiochip data pointer
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: Fabian Vogt <fabian@ritter-vogt.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/gpio/gpio-zevio.c')
-rw-r--r--drivers/gpio/gpio-zevio.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/drivers/gpio/gpio-zevio.c b/drivers/gpio/gpio-zevio.c
index 65b61dcc6268..cda6d922be98 100644
--- a/drivers/gpio/gpio-zevio.c
+++ b/drivers/gpio/gpio-zevio.c
@@ -52,9 +52,6 @@
52#define ZEVIO_GPIO_INPUT 0x18 52#define ZEVIO_GPIO_INPUT 0x18
53#define ZEVIO_GPIO_INT_STICKY 0x20 53#define ZEVIO_GPIO_INT_STICKY 0x20
54 54
55#define to_zevio_gpio(chip) container_of(to_of_mm_gpio_chip(chip), \
56 struct zevio_gpio, chip)
57
58/* Bit number of GPIO in its section */ 55/* Bit number of GPIO in its section */
59#define ZEVIO_GPIO_BIT(gpio) (gpio&7) 56#define ZEVIO_GPIO_BIT(gpio) (gpio&7)
60 57
@@ -80,7 +77,7 @@ static inline void zevio_gpio_port_set(struct zevio_gpio *c, unsigned pin,
80/* Functions for struct gpio_chip */ 77/* Functions for struct gpio_chip */
81static int zevio_gpio_get(struct gpio_chip *chip, unsigned pin) 78static int zevio_gpio_get(struct gpio_chip *chip, unsigned pin)
82{ 79{
83 struct zevio_gpio *controller = to_zevio_gpio(chip); 80 struct zevio_gpio *controller = gpiochip_get_data(chip);
84 u32 val, dir; 81 u32 val, dir;
85 82
86 spin_lock(&controller->lock); 83 spin_lock(&controller->lock);
@@ -96,7 +93,7 @@ static int zevio_gpio_get(struct gpio_chip *chip, unsigned pin)
96 93
97static void zevio_gpio_set(struct gpio_chip *chip, unsigned pin, int value) 94static void zevio_gpio_set(struct gpio_chip *chip, unsigned pin, int value)
98{ 95{
99 struct zevio_gpio *controller = to_zevio_gpio(chip); 96 struct zevio_gpio *controller = gpiochip_get_data(chip);
100 u32 val; 97 u32 val;
101 98
102 spin_lock(&controller->lock); 99 spin_lock(&controller->lock);
@@ -112,7 +109,7 @@ static void zevio_gpio_set(struct gpio_chip *chip, unsigned pin, int value)
112 109
113static int zevio_gpio_direction_input(struct gpio_chip *chip, unsigned pin) 110static int zevio_gpio_direction_input(struct gpio_chip *chip, unsigned pin)
114{ 111{
115 struct zevio_gpio *controller = to_zevio_gpio(chip); 112 struct zevio_gpio *controller = gpiochip_get_data(chip);
116 u32 val; 113 u32 val;
117 114
118 spin_lock(&controller->lock); 115 spin_lock(&controller->lock);
@@ -129,7 +126,7 @@ static int zevio_gpio_direction_input(struct gpio_chip *chip, unsigned pin)
129static int zevio_gpio_direction_output(struct gpio_chip *chip, 126static int zevio_gpio_direction_output(struct gpio_chip *chip,
130 unsigned pin, int value) 127 unsigned pin, int value)
131{ 128{
132 struct zevio_gpio *controller = to_zevio_gpio(chip); 129 struct zevio_gpio *controller = gpiochip_get_data(chip);
133 u32 val; 130 u32 val;
134 131
135 spin_lock(&controller->lock); 132 spin_lock(&controller->lock);
@@ -187,7 +184,9 @@ static int zevio_gpio_probe(struct platform_device *pdev)
187 controller->chip.gc = zevio_gpio_chip; 184 controller->chip.gc = zevio_gpio_chip;
188 controller->chip.gc.parent = &pdev->dev; 185 controller->chip.gc.parent = &pdev->dev;
189 186
190 status = of_mm_gpiochip_add(pdev->dev.of_node, &(controller->chip)); 187 status = of_mm_gpiochip_add_data(pdev->dev.of_node,
188 &(controller->chip),
189 controller);
191 if (status) { 190 if (status) {
192 dev_err(&pdev->dev, "failed to add gpiochip: %d\n", status); 191 dev_err(&pdev->dev, "failed to add gpiochip: %d\n", status);
193 return status; 192 return status;