diff options
Diffstat (limited to 'kernel/irq/chip.c')
| -rw-r--r-- | kernel/irq/chip.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 637389088b3f..26ba5654d9d5 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -820,6 +820,8 @@ __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle,  	desc->name = name;  	if (handle != handle_bad_irq && is_chained) { +		unsigned int type = irqd_get_trigger_type(&desc->irq_data); +  		/*  		 * We're about to start this interrupt immediately,  		 * hence the need to set the trigger configuration. @@ -828,8 +830,10 @@ __irq_do_set_handler(struct irq_desc *desc, irq_flow_handler_t handle,  		 * chained interrupt. Reset it immediately because we  		 * do know better.  		 */ -		__irq_set_trigger(desc, irqd_get_trigger_type(&desc->irq_data)); -		desc->handle_irq = handle; +		if (type != IRQ_TYPE_NONE) { +			__irq_set_trigger(desc, type); +			desc->handle_irq = handle; +		}  		irq_settings_set_noprobe(desc);  		irq_settings_set_norequest(desc); | 
