From: Iban Rodriguez <irodriguez@xxxxxxxxxxx> Date: Fri, 13 May 2016 12:11:46 +0200 Add function to set multiple GPIO of the same chip at the same time and register it. Signed-off-by: Iban Rodriguez <irodriguez@xxxxxxxxxxx> Signed-off-by: Michal Simek <michal.simek@xxxxxxxxxx> Signed-off-by: Alexander Hedges <ahedges@xxxxxxx> (cherry picked from commit 63bcc8b82965b185e632170dca04185539d970f9) --- drivers/gpio/gpio-xilinx.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-xilinx.c b/drivers/gpio/gpio-xilinx.c index 8e5d7440dbf0..fd14ea4ea19e 100644 --- a/drivers/gpio/gpio-xilinx.c +++ b/drivers/gpio/gpio-xilinx.c @@ -130,6 +130,7 @@ static void xgpio_set(struct gpio_chip *gc, unsigned int gpio, int val) * @bits: Value to be wrote on each GPIO * * This function writes the specified values into the specified signals of the +IO at once * GPIO devices. */ static void xgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask, @@ -137,7 +138,9 @@ static void xgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask, { unsigned long flags; struct of_mm_gpio_chip *mm_gc = to_of_mm_gpio_chip(gc); - struct xgpio_instance *chip = gpiochip_get_data(gc); + struct xgpio_instance *chip = + container_of(mm_gc, struct xgpio_instance, mmchip); + void __iomem *regs = mm_gc->regs; int i; spin_lock_irqsave(&chip->gpio_lock, flags); @@ -154,7 +157,7 @@ static void xgpio_set_multiple(struct gpio_chip *gc, unsigned long *mask, } } - xgpio_writereg(mm_gc->regs + XGPIO_DATA_OFFSET, + xgpio_writereg(regs + chip->offset + XGPIO_DATA_OFFSET, chip->gpio_state); spin_unlock_irqrestore(&chip->gpio_lock, flags); @@ -586,6 +589,7 @@ static int xgpio_of_probe(struct platform_device *pdev) chip->mmchip.gc.direction_output = xgpio_dir_out; chip->mmchip.gc.get = xgpio_get; chip->mmchip.gc.set = xgpio_set; + chip->mmchip.gc.set_multiple = xgpio_set_multiple; chip->mmchip.save_regs = xgpio_save_regs; -- 2.17.1 -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html