diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/irq/chip.c | 44 | 
1 files changed, 44 insertions, 0 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index b76703b2c0af..b3fa2d87d2f3 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -1298,6 +1298,50 @@ EXPORT_SYMBOL_GPL(handle_fasteoi_mask_irq);  #endif /* CONFIG_IRQ_FASTEOI_HIERARCHY_HANDLERS */  /** + * irq_chip_set_parent_state - set the state of a parent interrupt. + * + * @data: Pointer to interrupt specific data + * @which: State to be restored (one of IRQCHIP_STATE_*) + * @val: Value corresponding to @which + * + * Conditional success, if the underlying irqchip does not implement it. + */ +int irq_chip_set_parent_state(struct irq_data *data, +			      enum irqchip_irq_state which, +			      bool val) +{ +	data = data->parent_data; + +	if (!data || !data->chip->irq_set_irqchip_state) +		return 0; + +	return data->chip->irq_set_irqchip_state(data, which, val); +} +EXPORT_SYMBOL_GPL(irq_chip_set_parent_state); + +/** + * irq_chip_get_parent_state - get the state of a parent interrupt. + * + * @data: Pointer to interrupt specific data + * @which: one of IRQCHIP_STATE_* the caller wants to know + * @state: a pointer to a boolean where the state is to be stored + * + * Conditional success, if the underlying irqchip does not implement it. + */ +int irq_chip_get_parent_state(struct irq_data *data, +			      enum irqchip_irq_state which, +			      bool *state) +{ +	data = data->parent_data; + +	if (!data || !data->chip->irq_get_irqchip_state) +		return 0; + +	return data->chip->irq_get_irqchip_state(data, which, state); +} +EXPORT_SYMBOL_GPL(irq_chip_get_parent_state); + +/**   * irq_chip_enable_parent - Enable the parent interrupt (defaults to unmask if   * NULL)   * @data:	Pointer to interrupt specific data  | 

