On Thu, Jun 03, 2010 at 02:01:34PM +0900, Joonyoung Shim wrote: > This patch is to support gpio_to_irq() of GPIOlib for external > interrupts. The gpio_to_irq() calls s5p_gpiolib_eint_to_irq function. How about each s3c_gpio_chip have a irq base in it? > Signed-off-by: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> > Signed-off-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> > --- > arch/arm/plat-s5p/Makefile | 1 + > arch/arm/plat-s5p/gpiolib.c | 35 ++++++++++++++++++++++++ > arch/arm/plat-samsung/include/plat/gpio-core.h | 2 + > 3 files changed, 38 insertions(+), 0 deletions(-) > create mode 100644 arch/arm/plat-s5p/gpiolib.c > > diff --git a/arch/arm/plat-s5p/Makefile b/arch/arm/plat-s5p/Makefile > index 39c242b..f6e1a13 100644 > --- a/arch/arm/plat-s5p/Makefile > +++ b/arch/arm/plat-s5p/Makefile > @@ -15,6 +15,7 @@ obj- := > obj-y += dev-uart.o > obj-y += cpu.o > obj-y += clock.o > +obj-y += gpiolib.o > obj-y += irq.o > obj-$(CONFIG_S5P_EXT_INT) += irq-eint.o > > diff --git a/arch/arm/plat-s5p/gpiolib.c b/arch/arm/plat-s5p/gpiolib.c > new file mode 100644 > index 0000000..0c27a9d > --- /dev/null > +++ b/arch/arm/plat-s5p/gpiolib.c > @@ -0,0 +1,35 @@ > +/* > + * linux/arch/arm/plat-s5p/gpiolib.c > + * > + * Copyright (C) 2010 Samsung Electronics Co.Ltd > + * Author: Joonyoung Shim <jy0922.shim@xxxxxxxxxxx> > + * > + * S5P - GPIOlib support > + * > + * This program is free software; you can redistribute it and/or modify it > + * under the terms of the GNU General Public License as published by the > + * Free Software Foundation; either version 2 of the License, or (at your > + * option) any later version. > + * > + */ > + > +#include <linux/gpio.h> > +#include <mach/irqs.h> > +#include <mach/regs-gpio.h> > + > +/* be called from gpio_to_irq() for external interrupts */ > +int s5p_gpiolib_eint_to_irq(struct gpio_chip *chip, unsigned int offset) > +{ > + switch (chip->base) { > + case EINT_GPIO_0(0): > + return IRQ_EINT(offset); > + case EINT_GPIO_1(0): > + return IRQ_EINT(8 + offset); > + case EINT_GPIO_2(0): > + return IRQ_EINT(16 + offset); > + case EINT_GPIO_3(0): > + return IRQ_EINT(24 + offset); > + default: > + return -EINVAL; > + } > +} > diff --git a/arch/arm/plat-samsung/include/plat/gpio-core.h b/arch/arm/plat-samsung/include/plat/gpio-core.h > index e358c7d..f6c5151 100644 > --- a/arch/arm/plat-samsung/include/plat/gpio-core.h > +++ b/arch/arm/plat-samsung/include/plat/gpio-core.h > @@ -121,6 +121,8 @@ extern void samsung_gpiolib_add_4bit2(struct s3c_gpio_chip *chip); > /* exported for core SoC support to change */ > extern struct s3c_gpio_cfg s3c24xx_gpiocfg_default; > > +extern int s5p_gpiolib_eint_to_irq(struct gpio_chip *chip, unsigned int offset); > + > #ifdef CONFIG_S3C_GPIO_TRACK > extern struct s3c_gpio_chip *s3c_gpios[S3C_GPIO_END]; > > -- > 1.7.0.4 > -- -- Ben Q: What's a light-year? A: One-third less calories than a regular year. -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html