summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-s3c24xx/irq.c
Commit message (Collapse)AuthorAgeFilesLines
* ARM: S3C24XX: move irq driver to drivers/irqchipHeiko Stuebner2013-04-041-1107/+0
| | | | | | | | | This move is necessary to make use of the irqchip infrastructure for the following devicetree support for s3c24xx architectures. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: add handle_irq functionHeiko Stuebner2013-03-071-0/+58
| | | | | | | | | | | | | | | | | This removes the dependency on static irq mappings for basic irq handling and makes the s3c24xx entry-macro.S obsolete. Also the interrupts of the second full interrupt controller on the s3c2416 are really handled now, which was forgotten when adding them. The handling itself does the same as the previous assembler-code in that it tries to get the interrupt offset from the offset register first and if that produces wrong results manually searches for the interrupt bit in the pending register value. It also saves the historic comment which explains the reason behind this. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: make s3c24xx_init_intc staticHeiko Stuebner2013-03-071-1/+1
| | | | | | | It's not used anywhere else. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: move s3c24xx_init_irq to s3c2410_init_irqHeiko Stuebner2013-03-071-36/+33
| | | | | | | | | | | | | | The s3c24xx_init_irq function that was the base for all irq inits is now only used to initialize the real s3c2410 irqs. Therefore rename it and also move its declaration from plat/cpu.h to common.h The eint declaration is used by the vast majority of the SoCs and gets therefore placed outside any ifdefs. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: fix irq parent checkHeiko Stuebner2013-03-071-14/+8
| | | | | | | | | | | | | | The current parent_irq check checks for a value != 0. This does of course not work when the parent irq sits in the bit 0 of the parent register. This only affects the eint0 interrupt of the s3c2412. To fix this behaviour, check for the presence of a parent_intc in the structure. In an s3c24xx interrupt controller either all interrupts have parent interrupts or none have, so if a parent controller is available the parent_irq value always points to a parent_irq. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: fix redundant checks in the irq mapping functionHeiko Stuebner2013-03-071-14/+4
| | | | | | | | | | | | | | | | | | | | | | | | The check during the parent handling itself was wrong, as it should have checked for parent_irq_data. The interrupt controller structs always contain an irq_data array with 32 entries and the only possible error could be a parent_irq assignment of >31. As this would point to outside the irq_data array this could contain anything including non-NULL values. Therefore correct this to check the parent_irq value to be in the right range. With the same explanation of a valid interrupt controller always having a full irq_data array, the topmost irq_data check in s3c24xx_irq_map can also go away. Finally the mapping function is only called thru the irq_domain ops, in which case the intc struct is already successfully created, so there is no need to check for it again. Reported-by: Julia Lawall <julia.lawall@lip6.fr> Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: handle s3c2412 eints using new infrastructureHeiko Stuebner2013-03-051-82/+36
| | | | | | | | | | | | | | | | | | | | | | 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>
* ARM: S3C24XX: include first 4 bits of the eint register in irq mappingHeiko Stuebner2013-03-051-7/+2
| | | | | | | | | | | | | | | | | | | This patch moves the irq numbers starting with EINT4 4 points down to enable the inclusion of the first 4 bits of EINT register into the mapping removing the need for special offset handling. For most S3C24XX architectures this will simply create 4 additional unused interrupts, but enables the S3C2412 to make use of the new infrastructure to realize its special handling of the EINT0 to EINT3 interrupts. All affected parts of the Samsung code (arch + drivers) seem to use the real interrupt defines (IRQ_something) and not any form of S3C2410_IRQ(x) whose numbering is changed here starting from S3C2410_IRQ(32). This patch was runtime-tested on a s3c2416 based board. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: transform s3c2412 irqs into new structureHeiko Stuebner2013-03-051-56/+66
| | | | | | | | Contains only the new mapping structure. The special handling of the eint0 to eint3 interrupts still needs to be solved. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: modify s3c2412 irq init to initialize all irqsHeiko Stuebner2013-03-051-16/+3
| | | | | | | Combines the two independent init steps for the irqs into one. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: move s3c2412 irq init to common codeHeiko Stuebner2013-03-051-0/+154
| | | | | | | Base for further cleanups Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: transform s3c2440 irqs into new structureHeiko Stuebner2013-03-051-135/+61
| | | | | | | As always a mapping structure is everything needed. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: transform s3c2442 irqs into new structureHeiko Stuebner2013-03-051-15/+63
| | | | | | | Simply declare a correct mapping structure to use the common irq code. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: integrate s3c2440 irqs into common initHeiko Stuebner2013-03-051-33/+13
| | | | | | | Now all the arch_initcalls for s3c244x irqs are gone. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: move s3c2440 irqs to common irq codeHeiko Stuebner2013-03-051-0/+88
| | | | | | | Will be integrated in the following patch. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: create dedicated irq init functions for s3c2440 and s3c2442Heiko Stuebner2013-03-051-22/+23
| | | | | | | | s3c2440 and s3c2442 need separate init functions, as the s3c2440 contains even more differing irqs that will be moved in the following patch. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: move s3c244x irq init to common irq codeHeiko Stuebner2013-03-051-0/+105
| | | | | | | Base for further modifications. Signed-off-by: Heiko Stuebner <heiko@sntech.de> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: remove plat/irq.h in plat-samsungHeiko Stuebner2013-03-051-5/+3
| | | | | | | | | plat-samsung/irq.h did only contain functions for handling the spread out subirqs on s3c24xx arches, which are not needed anymore. Signed-off-by: Heiko Stuebner <heiko@sntech.de> [kgene.kim@samsung.com: fixed build error on bast-irq.c] Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
* ARM: S3C24XX: Remove plat-s3c24xx directory in arch/arm/Kukjin Kim2013-02-031-0/+822
This patch is for just moving plat-s3c24xx/*.c into mach-s3c24xx/, so that we could remove plat-s3c24xx directory. But since the PLAT_S3C24XX is used in drivers, the statement is not deleted and it will be sorted out next time. Cc: Ben Dooks <ben-linux@fluff.org> Cc: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
OpenPOWER on IntegriCloud