• U
    ARM: dts: imx6: RDU2: fix irq type for mv88e6xxx switch · e01a06c8
    Uwe Kleine-König 提交于
    The Marvell switches report their interrupts in a level sensitive way.
    When using edge sensitive detection a race condition in the interrupt
    handler of the swich might result in the OS to miss all future events
    which might make the switch non-functional.
    
    The problem is that both mv88e6xxx_g2_irq_thread_fn() and
    mv88e6xxx_g1_irq_thread_work() sample the irq cause register
    (MV88E6XXX_G2_INT_SRC and MV88E6XXX_G1_STS respectively) once and then
    handle the observed sources. If after sampling but before all observed
    irq sources are handled a new irq source gets active this is not noticed
    by the handler which returns unsuspecting, but the interrupt line stays
    active which prevents the edge detector to kick in.
    
    All device trees but imx6qdl-zii-rdu2 get this right (most of them by
    not specifying an interrupt parent). So fix imx6qdl-zii-rdu2
    accordingly.
    Signed-off-by: NUwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Fixes: f64992d1 ("ARM: dts: imx6: RDU2: Add Switch interrupts")
    Reviewed-by: NAndrew Lunn <andrew@lunn.ch>
    Signed-off-by: NShawn Guo <shawnguo@kernel.org>
    e01a06c8
imx6qdl-zii-rdu2.dtsi 23.9 KB