diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-08-22 07:45:36 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-08-22 07:45:36 -0700 |
commit | 84f3fe460838df2ecd80bf9ed943a1b557e81354 (patch) | |
tree | e92e29c7ef42681541439e25453274998e368d97 /kernel | |
parent | f8a89fc05a81d8cae63890e8d52489de8e700fee (diff) | |
parent | 8200fe4347870d4ad6475048bcdf3e7c106c5268 (diff) | |
download | op-kernel-dev-84f3fe460838df2ecd80bf9ed943a1b557e81354.zip op-kernel-dev-84f3fe460838df2ecd80bf9ed943a1b557e81354.tar.gz |
Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq fixes from Thomas Gleixner:
"A series of small fixlets for a regression visible on OMAP devices
caused by the conversion of the OMAP interrupt chips to hierarchical
interrupt domains. Mostly one liners on the driver side plus a small
helper function in the core to avoid open coded mess in the drivers"
* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
irqchip/crossbar: Restore set_wake functionality
irqchip/crossbar: Restore the mask on suspend behaviour
ARM: OMAP: wakeupgen: Restore the irq_set_type() mechanism
irqchip/crossbar: Restore the irq_set_type() mechanism
genirq: Introduce irq_chip_set_type_parent() helper
genirq: Don't return ENOSYS in irq_chip_retrigger_hierarchy
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/irq/chip.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 27f4332..ae21682 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -985,6 +985,23 @@ int irq_chip_set_affinity_parent(struct irq_data *data, } /** + * irq_chip_set_type_parent - Set IRQ type on the parent interrupt + * @data: Pointer to interrupt specific data + * @type: IRQ_TYPE_{LEVEL,EDGE}_* value - see include/linux/irq.h + * + * Conditional, as the underlying parent chip might not implement it. + */ +int irq_chip_set_type_parent(struct irq_data *data, unsigned int type) +{ + data = data->parent_data; + + if (data->chip->irq_set_type) + return data->chip->irq_set_type(data, type); + + return -ENOSYS; +} + +/** * irq_chip_retrigger_hierarchy - Retrigger an interrupt in hardware * @data: Pointer to interrupt specific data * @@ -997,7 +1014,7 @@ int irq_chip_retrigger_hierarchy(struct irq_data *data) if (data->chip && data->chip->irq_retrigger) return data->chip->irq_retrigger(data); - return -ENOSYS; + return 0; } /** |