diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2009-08-17 21:42:38 +0200 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2009-08-17 21:42:38 +0200 |
| commit | bb7d2a77c2bbec28647cccd65e5cb662802de157 (patch) | |
| tree | ff022cb45bc25ce2dce0ab0762b2643c2aad4abd /include/linux | |
| parent | a190a28b79c9e42f3a1e98012b454835e4322e2f (diff) | |
| parent | d94ddace23997c2899e8137f088488773b35eadb (diff) | |
| download | lwn-bb7d2a77c2bbec28647cccd65e5cb662802de157.tar.gz lwn-bb7d2a77c2bbec28647cccd65e5cb662802de157.zip | |
Merge branch 'rt/head' into rt/2.6.31-rc6
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/interrupt.h | 6 | ||||
| -rw-r--r-- | include/linux/irq.h | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 874eb071b2a1..f7bbea6a98a7 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -50,6 +50,9 @@ * IRQF_IRQPOLL - Interrupt is used for polling (only the interrupt that is * registered first in an shared interrupt is considered for * performance reasons) + * IRQF_ONESHOT - Interrupt is not reenabled after the hardirq handler finished. + * Used by threaded interrupts which need to keep the + * irq line disabled until the threaded handler has been run. * IRQF_NODELAY - Interrupt is not force threaded */ #define IRQF_DISABLED 0x00000020 @@ -60,7 +63,8 @@ #define IRQF_PERCPU 0x00000400 #define IRQF_NOBALANCING 0x00000800 #define IRQF_IRQPOLL 0x00001000 -#define IRQF_NODELAY 0x00002000 +#define IRQF_ONESHOT 0x00002000 +#define IRQF_NODELAY 0x00004000 #define IRQF_TIMER (__IRQF_TIMER | IRQF_NODELAY) diff --git a/include/linux/irq.h b/include/linux/irq.h index c168a2fd8377..9a0a74f07a69 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h @@ -69,6 +69,8 @@ typedef void (*irq_flow_handler_t)(unsigned int irq, #define IRQ_MOVE_PCNTXT 0x01000000 /* IRQ migration from process context */ #define IRQ_AFFINITY_SET 0x02000000 /* IRQ affinity was set from userspace*/ #define IRQ_SUSPENDED 0x04000000 /* IRQ has gone through suspend sequence */ +#define IRQ_ONESHOT 0x08000000 /* IRQ is not unmasked after hardirq */ +#define IRQ_NESTED_THREAD 0x10000000 /* IRQ is nested into another, no own handler thread */ #ifdef CONFIG_IRQ_PER_CPU # define CHECK_IRQ_PER_CPU(var) ((var) & IRQ_PER_CPU) @@ -100,6 +102,9 @@ struct msi_desc; * @set_type: set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ * @set_wake: enable/disable power-management wake-on of an IRQ * + * @bus_lock: function to lock access to slow bus (i2c) chips + * @bus_sync_unlock: function to sync and unlock slow bus (i2c) chips + * * @release: release function solely used by UML * @typename: obsoleted by name, kept as migration helper */ @@ -123,6 +128,9 @@ struct irq_chip { int (*set_type)(unsigned int irq, unsigned int flow_type); int (*set_wake)(unsigned int irq, unsigned int on); + void (*bus_lock)(unsigned int irq); + void (*bus_sync_unlock)(unsigned int irq); + /* Currently used only by UML, might disappear one day.*/ #ifdef CONFIG_IRQ_RELEASE_METHOD void (*release)(unsigned int irq, void *dev_id); @@ -380,6 +388,8 @@ set_irq_chained_handler(unsigned int irq, __set_irq_handler(irq, handle, 1, NULL); } +extern void set_irq_nested_thread(unsigned int irq, int nest); + extern void set_irq_noprobe(unsigned int irq); extern void set_irq_probe(unsigned int irq); |
