4a2581a080
Patch from Thomas Gleixner From: Thomas Gleixner <tglx@linutronix.de> Switch the ARM irq core handling to the generic implementation. The ARM specific header files now contain mostly migration stubs and helper macros. Note that each machine type must be converted after this step seperately. This was seperated out from the patch for easier review. The main changes for the machine type code is the conversion of the type handlers to a 'type flow' and 'chip' model. This affects only the multiplex interrupt handlers. A conversion macro needs to be added to those implementations, which defines the data structure which is registered by the set_irq_chained_handler() macro. Some minor fixups of include files and the conversion of data structure access is necessary all over the place. The mostly macro based conversion was provided to allow an easy migration of the existing implementations. The code compiles on all defconfigs available in arch/arm/configs except those which were broken also before applying the conversion patches. The code has been boot and runtime tested on most ARM platforms. The results of an extensive testing and bugfixing series can be found at: http://www.linutronix.de/index.php?page=testing Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
43 lines
831 B
C
43 lines
831 B
C
#ifndef __ASM_ARM_IRQ_H
|
|
#define __ASM_ARM_IRQ_H
|
|
|
|
#include <asm/arch/irqs.h>
|
|
|
|
#ifndef irq_canonicalize
|
|
#define irq_canonicalize(i) (i)
|
|
#endif
|
|
|
|
#ifndef NR_IRQS
|
|
#define NR_IRQS 128
|
|
#endif
|
|
|
|
/*
|
|
* Use this value to indicate lack of interrupt
|
|
* capability
|
|
*/
|
|
#ifndef NO_IRQ
|
|
#define NO_IRQ ((unsigned int)(-1))
|
|
#endif
|
|
|
|
struct irqaction;
|
|
|
|
/*
|
|
* Migration helpers
|
|
*/
|
|
#define __IRQT_FALEDGE IRQ_TYPE_EDGE_FALLING
|
|
#define __IRQT_RISEDGE IRQ_TYPE_EDGE_RISING
|
|
#define __IRQT_LOWLVL IRQ_TYPE_LEVEL_LOW
|
|
#define __IRQT_HIGHLVL IRQ_TYPE_LEVEL_HIGH
|
|
|
|
#define IRQT_NOEDGE (0)
|
|
#define IRQT_RISING (__IRQT_RISEDGE)
|
|
#define IRQT_FALLING (__IRQT_FALEDGE)
|
|
#define IRQT_BOTHEDGE (__IRQT_RISEDGE|__IRQT_FALEDGE)
|
|
#define IRQT_LOW (__IRQT_LOWLVL)
|
|
#define IRQT_HIGH (__IRQT_HIGHLVL)
|
|
#define IRQT_PROBE IRQ_TYPE_PROBE
|
|
|
|
extern void migrate_irqs(void);
|
|
#endif
|
|
|