diff options
Diffstat (limited to 'arch/arm/mach-at91/gpio.c')
| -rw-r--r-- | arch/arm/mach-at91/gpio.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index be42cf0e74b..3b8f463bfa1 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c @@ -46,6 +46,7 @@ struct at91_gpio_chip {  #define to_at91_gpio_chip(c) container_of(c, struct at91_gpio_chip, chip) +static int at91_gpiolib_request(struct gpio_chip *chip, unsigned offset);  static void at91_gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip);  static void at91_gpiolib_set(struct gpio_chip *chip, unsigned offset, int val);  static int at91_gpiolib_get(struct gpio_chip *chip, unsigned offset); @@ -59,6 +60,7 @@ static int at91_gpiolib_to_irq(struct gpio_chip *chip, unsigned offset);  	{								\  		.chip = {						\  			.label		  = name,			\ +			.request	  = at91_gpiolib_request,	\  			.direction_input  = at91_gpiolib_direction_input, \  			.direction_output = at91_gpiolib_direction_output, \  			.get		  = at91_gpiolib_get,		\ @@ -862,6 +864,16 @@ void __init at91_gpio_irq_setup(void)  }  /* gpiolib support */ +static int at91_gpiolib_request(struct gpio_chip *chip, unsigned offset) +{ +	struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); +	void __iomem *pio = at91_gpio->regbase; +	unsigned mask = 1 << offset; + +	__raw_writel(mask, pio + PIO_PER); +	return 0; +} +  static int at91_gpiolib_direction_input(struct gpio_chip *chip,  					unsigned offset)  {  |