diff options
| author | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-02-11 15:56:01 +0100 | 
|---|---|---|
| committer | Nicolas Ferre <nicolas.ferre@atmel.com> | 2012-03-01 13:29:02 +0100 | 
| commit | b134ce854ad63421bd5c7d34623a1337d525a435 (patch) | |
| tree | 41a74511132c744a32e0fb02b4e9da5510cade3d /arch/arm/mach-at91/gpio.c | |
| parent | 5bc067b71928d3f470d051847aefa55724fd0c95 (diff) | |
| download | olio-linux-3.10-b134ce854ad63421bd5c7d34623a1337d525a435.tar.xz olio-linux-3.10-b134ce854ad63421bd5c7d34623a1337d525a435.zip  | |
ARM: at91/gpio: add .to_irq gpio_chip handler
Replace the gpio_to_irq() macro by a plain gpiolib .to_irq() handler.
This call is using the irqdomain to translate hardware to Linux
IRQ numbers.
The irq_to_gpio() macro is completely removed.
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Diffstat (limited to 'arch/arm/mach-at91/gpio.c')
| -rw-r--r-- | arch/arm/mach-at91/gpio.c | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/gpio.c b/arch/arm/mach-at91/gpio.c index 0dc3f5ead7b..e8f5831e573 100644 --- a/arch/arm/mach-at91/gpio.c +++ b/arch/arm/mach-at91/gpio.c @@ -11,6 +11,7 @@  #include <linux/clk.h>  #include <linux/errno.h> +#include <linux/device.h>  #include <linux/gpio.h>  #include <linux/interrupt.h>  #include <linux/irq.h> @@ -48,6 +49,7 @@ static int at91_gpiolib_direction_output(struct gpio_chip *chip,  					 unsigned offset, int val);  static int at91_gpiolib_direction_input(struct gpio_chip *chip,  					unsigned offset); +static int at91_gpiolib_to_irq(struct gpio_chip *chip, unsigned offset);  #define AT91_GPIO_CHIP(name, base_gpio, nr_gpio)			\  	{								\ @@ -59,6 +61,7 @@ static int at91_gpiolib_direction_input(struct gpio_chip *chip,  			.set		  = at91_gpiolib_set,		\  			.dbg_show	  = at91_gpiolib_dbg_show,	\  			.base		  = base_gpio,			\ +			.to_irq		  = at91_gpiolib_to_irq,	\  			.ngpio		  = nr_gpio,			\  		},							\  	} @@ -640,6 +643,16 @@ static void at91_gpiolib_dbg_show(struct seq_file *s, struct gpio_chip *chip)  	}  } +static int at91_gpiolib_to_irq(struct gpio_chip *chip, unsigned offset) +{ +	struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); +	int virq = irq_find_mapping(at91_gpio->domain, offset); + +	dev_dbg(chip->dev, "%s: request IRQ for GPIO %d, return %d\n", +				chip->label, offset + chip->base, virq); +	return virq; +} +  static int __init at91_gpio_setup_clk(int idx)  {  	struct at91_gpio_chip *at91_gpio = &gpio_chip[idx];  |