diff options
| author | Dmitry Shmidt <dimitrysh@google.com> | 2016-11-07 10:23:59 -0800 |
|---|---|---|
| committer | Dmitry Shmidt <dimitrysh@google.com> | 2016-11-07 10:23:59 -0800 |
| commit | 5577070b6bed1b38916ae65ad51d450774493545 (patch) | |
| tree | ff16493346602fa7f8c5e881d4b41fbe50e6072f /kernel | |
| parent | c302df26cb5bf9f60633785cf5b5ed162a138dfe (diff) | |
| parent | 887b692a469f9a9a666654e607103f5204ac5eb7 (diff) | |
Merge tag 'v4.4.30' into android-4.4.y
This is the 4.4.30 stable release
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/irq/generic-chip.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c index abd286afbd27..a4775f3451b9 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -411,8 +411,29 @@ int irq_map_generic_chip(struct irq_domain *d, unsigned int virq, } EXPORT_SYMBOL_GPL(irq_map_generic_chip); +static void irq_unmap_generic_chip(struct irq_domain *d, unsigned int virq) +{ + struct irq_data *data = irq_domain_get_irq_data(d, virq); + struct irq_domain_chip_generic *dgc = d->gc; + unsigned int hw_irq = data->hwirq; + struct irq_chip_generic *gc; + int irq_idx; + + gc = irq_get_domain_generic_chip(d, hw_irq); + if (!gc) + return; + + irq_idx = hw_irq % dgc->irqs_per_chip; + + clear_bit(irq_idx, &gc->installed); + irq_domain_set_info(d, virq, hw_irq, &no_irq_chip, NULL, NULL, NULL, + NULL); + +} + struct irq_domain_ops irq_generic_chip_ops = { .map = irq_map_generic_chip, + .unmap = irq_unmap_generic_chip, .xlate = irq_domain_xlate_onetwocell, }; EXPORT_SYMBOL_GPL(irq_generic_chip_ops); |
