diff options
Diffstat (limited to 'drivers/gpio/gpio-pl061.c')
| -rw-r--r-- | drivers/gpio/gpio-pl061.c | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c index d1d603585a9..06ed257c5d3 100644 --- a/drivers/gpio/gpio-pl061.c +++ b/drivers/gpio/gpio-pl061.c @@ -23,6 +23,7 @@  #include <linux/amba/bus.h>  #include <linux/amba/pl061.h>  #include <linux/slab.h> +#include <linux/pinctrl/consumer.h>  #include <linux/pm.h>  #include <asm/mach/irq.h> @@ -60,6 +61,17 @@ struct pl061_gpio {  #endif  }; +static int pl061_gpio_request(struct gpio_chip *chip, unsigned offset) +{ +	/* +	 * Map back to global GPIO space and request muxing, the direction +	 * parameter does not matter for this controller. +	 */ +	int gpio = chip->base + offset; + +	return pinctrl_request_gpio(gpio); +} +  static int pl061_direction_input(struct gpio_chip *gc, unsigned offset)  {  	struct pl061_gpio *chip = container_of(gc, struct pl061_gpio, gc); @@ -274,6 +286,7 @@ static int pl061_probe(struct amba_device *adev, const struct amba_id *id)  	spin_lock_init(&chip->lock); +	chip->gc.request = pl061_gpio_request;  	chip->gc.direction_input = pl061_direction_input;  	chip->gc.direction_output = pl061_direction_output;  	chip->gc.get = pl061_get_value;  |