• R
    [PATCH] IRQ type flags · 9ded96f2
    Russell King 提交于
    Some ARM platforms have the ability to program the interrupt controller to
    detect various interrupt edges and/or levels.  For some platforms, this is
    critical to setup correctly, particularly those which the setting is dependent
    on the device.
    
    Currently, ARM drivers do (eg) the following:
    
    	err = request_irq(irq, ...);
    
    	set_irq_type(irq, IRQT_RISING);
    
    However, if the interrupt has previously been programmed to be level sensitive
    (for whatever reason) then this will cause an interrupt storm.
    
    Hence, if we combine set_irq_type() with request_irq(), we can then safely set
    the type prior to unmasking the interrupt.  The unfortunate problem is that in
    order to support this, these flags need to be visible outside of the ARM
    architecture - drivers such as smc91x need these flags and they're
    cross-architecture.
    
    Finally, the SA_TRIGGER_* flag passed to request_irq() should reflect the
    property that the device would like.  The IRQ controller code should do its
    best to select the most appropriate supported mode.
    Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    9ded96f2
irq.c 25.1 KB