summaryrefslogtreecommitdiff
path: root/drivers/gpio
diff options
context:
space:
mode:
authorHeiko Stuebner <heiko@sntech.de>2013-02-12 18:12:09 (GMT)
committerKukjin Kim <kgene.kim@samsung.com>2013-03-05 11:21:31 (GMT)
commit1c8408e3137bcb78d9ab8af832111f455d11e99c (patch)
tree35d1896ca67c6f007179256678754243e63a97e6 /drivers/gpio
parent9eecbe509607265d28d76b39bc479f01b6d55e01 (diff)
downloadlinux-1c8408e3137bcb78d9ab8af832111f455d11e99c.tar.xz
ARM: S3C24XX: handle s3c2412 eints using new infrastructure
The s3c2412 handles the eints 0 to 3 different than all the other SoCs of the 24xx range. These eints must be acked and masked in the regular bits as well as the bits 0 to 3 of the eint registers, which are unused on the other SoCs. This of course can be realized using the new infrastructure with the eint bits in the main register being the parent interrupts of the same bits in the eint register. The s3c2412 therefore gets its own IRQ_EINT0 to 4 constants that reside in the newly created gap before IRQ_EINT4. gpio-samsung, as the only user of these is modified to return the correct values when handling gpio_to_irq requests on s3c2412 based machines. Due to lack of hardware this is compile tested only, but should hopefully work as intended. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpio-samsung.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-samsung.c b/drivers/gpio/gpio-samsung.c
index b3643ff..db098ce 100644
--- a/drivers/gpio/gpio-samsung.c
+++ b/drivers/gpio/gpio-samsung.c
@@ -1123,7 +1123,10 @@ int samsung_gpiolib_to_irq(struct gpio_chip *chip, unsigned int offset)
static int s3c24xx_gpiolib_fbank_to_irq(struct gpio_chip *chip, unsigned offset)
{
if (offset < 4)
- return IRQ_EINT0 + offset;
+ if (soc_is_s3c2412())
+ return IRQ_EINT0_2412 + offset;
+ else
+ return IRQ_EINT0 + offset;
if (offset < 8)
return IRQ_EINT4 + offset - 4;