diff options
author | Heiko Stuebner <heiko@sntech.de> | 2013-02-12 10:12:09 -0800 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2013-03-05 20:21:31 +0900 |
commit | 1c8408e3137bcb78d9ab8af832111f455d11e99c (patch) | |
tree | 35d1896ca67c6f007179256678754243e63a97e6 /drivers/gpio/gpio-samsung.c | |
parent | 9eecbe509607265d28d76b39bc479f01b6d55e01 (diff) | |
download | linux-1c8408e3137bcb78d9ab8af832111f455d11e99c.tar.gz linux-1c8408e3137bcb78d9ab8af832111f455d11e99c.tar.bz2 linux-1c8408e3137bcb78d9ab8af832111f455d11e99c.zip |
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/gpio-samsung.c')
-rw-r--r-- | drivers/gpio/gpio-samsung.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-samsung.c b/drivers/gpio/gpio-samsung.c index b3643ff007e4..db098cea3a55 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; |