genirq: introduce irq_chip_mask_ack_parent()
The hierarchical irqchip never before ran into a situation where the parent is not "simple", i.e. does not implement .irq_ack() and .irq_mask() like most, but the qcom-pm8xxx.c happens to implement only .irq_mask_ack(). Since we want to make ssbi-gpio a hierarchical child of this irqchip, it must *also* only implement .irq_mask_ack() and call down to the parent, and for this we of course need irq_chip_mask_ack_parent(). Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: Thomas Gleixner <tglx@linutronix.de> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Brian Masney <masneyb@onstation.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
@@ -605,6 +605,7 @@ extern void irq_chip_disable_parent(struct irq_data *data);
|
|||||||
extern void irq_chip_ack_parent(struct irq_data *data);
|
extern void irq_chip_ack_parent(struct irq_data *data);
|
||||||
extern int irq_chip_retrigger_hierarchy(struct irq_data *data);
|
extern int irq_chip_retrigger_hierarchy(struct irq_data *data);
|
||||||
extern void irq_chip_mask_parent(struct irq_data *data);
|
extern void irq_chip_mask_parent(struct irq_data *data);
|
||||||
|
extern void irq_chip_mask_ack_parent(struct irq_data *data);
|
||||||
extern void irq_chip_unmask_parent(struct irq_data *data);
|
extern void irq_chip_unmask_parent(struct irq_data *data);
|
||||||
extern void irq_chip_eoi_parent(struct irq_data *data);
|
extern void irq_chip_eoi_parent(struct irq_data *data);
|
||||||
extern int irq_chip_set_affinity_parent(struct irq_data *data,
|
extern int irq_chip_set_affinity_parent(struct irq_data *data,
|
||||||
|
@@ -1277,6 +1277,17 @@ void irq_chip_mask_parent(struct irq_data *data)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(irq_chip_mask_parent);
|
EXPORT_SYMBOL_GPL(irq_chip_mask_parent);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* irq_chip_mask_ack_parent - Mask and acknowledge the parent interrupt
|
||||||
|
* @data: Pointer to interrupt specific data
|
||||||
|
*/
|
||||||
|
void irq_chip_mask_ack_parent(struct irq_data *data)
|
||||||
|
{
|
||||||
|
data = data->parent_data;
|
||||||
|
data->chip->irq_mask_ack(data);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(irq_chip_mask_ack_parent);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* irq_chip_unmask_parent - Unmask the parent interrupt
|
* irq_chip_unmask_parent - Unmask the parent interrupt
|
||||||
* @data: Pointer to interrupt specific data
|
* @data: Pointer to interrupt specific data
|
||||||
|
Reference in New Issue
Block a user