diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-19 13:29:42 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-22 21:04:29 -0400 |
commit | 3fca40c704dd013797f2c0c518f37cd2cc8e19fe (patch) | |
tree | 250169398a74aca872c11717135f84826cbfbdad | |
parent | 3a2b4f7c355ff1c97e4adebadf0a1aefd7c4518a (diff) |
irq: Add IRQ_TYPE_DEFAULT for use by PIC drivers
This is meant typically to allow a PIC driver's irq domain map() callback
to establish sane defaults for the interrupt (and make sure that the HW
and the irq_desc are in sync as far as the trigger is concerned).
The irq core may not call the set_trigger callback if it thinks the
trigger is already set to the right setting, so we need to ensure new
descriptors are properly synchronized with the hardware.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r-- | include/linux/irq.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 7810406f3d80..b27cfcfd3a59 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -49,6 +49,12 @@ typedef void (*irq_preflow_handler_t)(struct irq_data *data); | |||
49 | * IRQ_TYPE_LEVEL_LOW - low level triggered | 49 | * IRQ_TYPE_LEVEL_LOW - low level triggered |
50 | * IRQ_TYPE_LEVEL_MASK - Mask to filter out the level bits | 50 | * IRQ_TYPE_LEVEL_MASK - Mask to filter out the level bits |
51 | * IRQ_TYPE_SENSE_MASK - Mask for all the above bits | 51 | * IRQ_TYPE_SENSE_MASK - Mask for all the above bits |
52 | * IRQ_TYPE_DEFAULT - For use by some PICs to ask irq_set_type | ||
53 | * to setup the HW to a sane default (used | ||
54 | * by irqdomain map() callbacks to synchronize | ||
55 | * the HW state and SW flags for a newly | ||
56 | * allocated descriptor). | ||
57 | * | ||
52 | * IRQ_TYPE_PROBE - Special flag for probing in progress | 58 | * IRQ_TYPE_PROBE - Special flag for probing in progress |
53 | * | 59 | * |
54 | * Bits which can be modified via irq_set/clear/modify_status_flags() | 60 | * Bits which can be modified via irq_set/clear/modify_status_flags() |
@@ -77,6 +83,7 @@ enum { | |||
77 | IRQ_TYPE_LEVEL_LOW = 0x00000008, | 83 | IRQ_TYPE_LEVEL_LOW = 0x00000008, |
78 | IRQ_TYPE_LEVEL_MASK = (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH), | 84 | IRQ_TYPE_LEVEL_MASK = (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH), |
79 | IRQ_TYPE_SENSE_MASK = 0x0000000f, | 85 | IRQ_TYPE_SENSE_MASK = 0x0000000f, |
86 | IRQ_TYPE_DEFAULT = IRQ_TYPE_SENSE_MASK, | ||
80 | 87 | ||
81 | IRQ_TYPE_PROBE = 0x00000010, | 88 | IRQ_TYPE_PROBE = 0x00000010, |
82 | 89 | ||