Commit c7ceae12 authored by Gilles Chanteperdrix's avatar Gilles Chanteperdrix Committed by Philippe Gerum
Browse files

ipipe: handle irq domain hierarchy parent masking

Children of an irq chip using the handle_fasteoi_irq handler need a way
to call the irq_hold/irq_release parent chip methods instead of the
irq_mask/irq_unmask irq, as these methods mask the virtual irq thus
causing each interrupt to be masked upon first occurence and never be
unmasked.
parent 608d51d8
......@@ -468,6 +468,11 @@ extern int irq_chip_retrigger_hierarchy(struct irq_data *data);
extern void irq_chip_mask_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);
#ifdef CONFIG_IPIPE
extern void irq_chip_hold_parent(struct irq_data *data);
extern void irq_chip_release_parent(struct irq_data *data);
#endif
extern int irq_chip_set_affinity_parent(struct irq_data *data,
const struct cpumask *dest,
bool force);
......
......@@ -1125,6 +1125,20 @@ void irq_chip_eoi_parent(struct irq_data *data)
data->chip->irq_eoi(data);
}
#ifdef CONFIG_IPIPE
void irq_chip_hold_parent(struct irq_data *data)
{
data = data->parent_data;
data->chip->irq_hold(data);
}
void irq_chip_release_parent(struct irq_data *data)
{
data = data->parent_data;
data->chip->irq_release(data);
}
#endif
/**
* irq_chip_set_affinity_parent - Set affinity on the parent interrupt
* @data: Pointer to interrupt specific data
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment