Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc: qe_lib-gpio: 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: Anatolij Gustschin <agust@denx.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

+8 -12
+8 -12
drivers/soc/fsl/qe/gpio.c
··· 18 18 #include <linux/io.h> 19 19 #include <linux/of.h> 20 20 #include <linux/of_gpio.h> 21 + #include <linux/gpio/driver.h> 22 + /* FIXME: needed for gpio_to_chip() get rid of this */ 21 23 #include <linux/gpio.h> 22 24 #include <linux/slab.h> 23 25 #include <linux/export.h> ··· 39 37 struct qe_pio_regs saved_regs; 40 38 }; 41 39 42 - static inline struct qe_gpio_chip * 43 - to_qe_gpio_chip(struct of_mm_gpio_chip *mm_gc) 44 - { 45 - return container_of(mm_gc, struct qe_gpio_chip, mm_gc); 46 - } 47 - 48 40 static void qe_gpio_save_regs(struct of_mm_gpio_chip *mm_gc) 49 41 { 50 - struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc); 42 + struct qe_gpio_chip *qe_gc = gpiochip_get_data(&mm_gc->gc); 51 43 struct qe_pio_regs __iomem *regs = mm_gc->regs; 52 44 53 45 qe_gc->cpdata = in_be32(&regs->cpdata); ··· 65 69 static void qe_gpio_set(struct gpio_chip *gc, unsigned int gpio, int val) 66 70 { 67 71 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 68 - struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc); 72 + struct qe_gpio_chip *qe_gc = gpiochip_get_data(gc); 69 73 struct qe_pio_regs __iomem *regs = mm_gc->regs; 70 74 unsigned long flags; 71 75 u32 pin_mask = 1 << (QE_PIO_PINS - 1 - gpio); ··· 85 89 static int qe_gpio_dir_in(struct gpio_chip *gc, unsigned int gpio) 86 90 { 87 91 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 88 - struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc); 92 + struct qe_gpio_chip *qe_gc = gpiochip_get_data(gc); 89 93 unsigned long flags; 90 94 91 95 spin_lock_irqsave(&qe_gc->lock, flags); ··· 100 104 static int qe_gpio_dir_out(struct gpio_chip *gc, unsigned int gpio, int val) 101 105 { 102 106 struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); 103 - struct qe_gpio_chip *qe_gc = to_qe_gpio_chip(mm_gc); 107 + struct qe_gpio_chip *qe_gc = gpiochip_get_data(gc); 104 108 unsigned long flags; 105 109 106 110 qe_gpio_set(gc, gpio, val); ··· 161 165 } 162 166 163 167 mm_gc = to_of_mm_gpio_chip(gc); 164 - qe_gc = to_qe_gpio_chip(mm_gc); 168 + qe_gc = gpiochip_get_data(gc); 165 169 166 170 spin_lock_irqsave(&qe_gc->lock, flags); 167 171 ··· 298 302 gc->get = qe_gpio_get; 299 303 gc->set = qe_gpio_set; 300 304 301 - ret = of_mm_gpiochip_add(np, mm_gc); 305 + ret = of_mm_gpiochip_add_data(np, mm_gc, qe_gc); 302 306 if (ret) 303 307 goto err; 304 308 continue;