diff options
Diffstat (limited to 'kernel/irq/resend.c')
| -rw-r--r-- | kernel/irq/resend.c | 15 | 
1 files changed, 13 insertions, 2 deletions
diff --git a/kernel/irq/resend.c b/kernel/irq/resend.c index c48ce19a257f..8ccd32a0cc80 100644 --- a/kernel/irq/resend.c +++ b/kernel/irq/resend.c @@ -86,6 +86,18 @@ static int irq_sw_resend(struct irq_desc *desc)  }  #endif +static int try_retrigger(struct irq_desc *desc) +{ +	if (desc->irq_data.chip->irq_retrigger) +		return desc->irq_data.chip->irq_retrigger(&desc->irq_data); + +#ifdef CONFIG_IRQ_DOMAIN_HIERARCHY +	return irq_chip_retrigger_hierarchy(&desc->irq_data); +#else +	return 0; +#endif +} +  /*   * IRQ resend   * @@ -113,8 +125,7 @@ int check_irq_resend(struct irq_desc *desc, bool inject)  	desc->istate &= ~IRQS_PENDING; -	if (!desc->irq_data.chip->irq_retrigger || -	    !desc->irq_data.chip->irq_retrigger(&desc->irq_data)) +	if (!try_retrigger(desc))  		err = irq_sw_resend(desc);  	/* If the retrigger was successfull, mark it with the REPLAY bit */  |