summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Agner <stefan.agner@toradex.com>2015-05-11 11:05:13 +0200
committerStefan Agner <stefan.agner@toradex.com>2015-05-11 11:05:13 +0200
commitfd2c7bbe3b6a93ee59b29df2b345cedb4fea0b6b (patch)
treedd866544f06210ee21d90515058356e19d230c54
parent7863765e0f3d2a20a0a69e49c44c1e2f96608c8f (diff)
irqchip: vf610-gpc: fix domain hierarchy enable/disable
To make sure enable/disable callbacks get called in drivers higher up in the IRQ domain hierarchy, we need to call the parents enable/ disable functions explicitly.
-rw-r--r--drivers/irqchip/irq-vf610-gpc.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-vf610-gpc.c b/drivers/irqchip/irq-vf610-gpc.c
index 29e789dace47..060dc3f2343d 100644
--- a/drivers/irqchip/irq-vf610-gpc.c
+++ b/drivers/irqchip/irq-vf610-gpc.c
@@ -53,10 +53,24 @@ static int vf610_gpc_irq_set_wake(struct irq_data *d, unsigned int on)
return 0;
}
+static void vf610_gpc_enable_parent(struct irq_data *data)
+{
+ data = data->parent_data;
+ data->chip->irq_enable(data);
+}
+
+static void vf610_gpc_disable_parent(struct irq_data *data)
+{
+ data = data->parent_data;
+ data->chip->irq_disable(data);
+}
+
static struct irq_chip vf610_gpc_chip = {
.name = "vf610-gpc",
.irq_mask = irq_chip_mask_parent,
.irq_unmask = irq_chip_unmask_parent,
+ .irq_enable = vf610_gpc_enable_parent,
+ .irq_disable = vf610_gpc_disable_parent,
.irq_eoi = irq_chip_eoi_parent,
.irq_retrigger = irq_chip_retrigger_hierarchy,
.irq_set_wake = vf610_gpc_irq_set_wake,