diff options
Diffstat (limited to 'arch/avr32/mach-at32ap/include/mach/gpio.h')
| -rw-r--r-- | arch/avr32/mach-at32ap/include/mach/gpio.h | 45 | 
1 files changed, 45 insertions, 0 deletions
diff --git a/arch/avr32/mach-at32ap/include/mach/gpio.h b/arch/avr32/mach-at32ap/include/mach/gpio.h new file mode 100644 index 00000000000..0180f584ef0 --- /dev/null +++ b/arch/avr32/mach-at32ap/include/mach/gpio.h @@ -0,0 +1,45 @@ +#ifndef __ASM_AVR32_ARCH_GPIO_H +#define __ASM_AVR32_ARCH_GPIO_H + +#include <linux/compiler.h> +#include <asm/irq.h> + + +/* Some GPIO chips can manage IRQs; some can't.  The exact numbers can + * be changed if needed, but for the moment they're not configurable. + */ +#define ARCH_NR_GPIOS	(NR_GPIO_IRQS + 2 * 32) + + +/* Arch-neutral GPIO API, supporting both "native" and external GPIOs. */ +#include <asm-generic/gpio.h> + +static inline int gpio_get_value(unsigned int gpio) +{ +	return __gpio_get_value(gpio); +} + +static inline void gpio_set_value(unsigned int gpio, int value) +{ +	__gpio_set_value(gpio, value); +} + +static inline int gpio_cansleep(unsigned int gpio) +{ +	return __gpio_cansleep(gpio); +} + + +static inline int gpio_to_irq(unsigned int gpio) +{ +	if (gpio < NR_GPIO_IRQS) +		return gpio + GPIO_IRQ_BASE; +	return -EINVAL; +} + +static inline int irq_to_gpio(unsigned int irq) +{ +	return irq - GPIO_IRQ_BASE; +} + +#endif /* __ASM_AVR32_ARCH_GPIO_H */  |