• Daniel Drake's avatar
    libertas_sdio: handle spurious interrupts · d2ac49fe
    Daniel Drake authored
    Commit 06e8935f adds an IRQ handling
    optimization for single-function SDIO cards like this one, but at the
    same time exposes a small hardware bug.
    
    During hardware init, an interrupt is generated with (apparently) no
    source. Previously, mmc threw this interrupt away, but now (due to the
    optimization), the mmc layer passes this onto libertas, before it is ready
    (and before it has enabled interrupts), causing a crash.
    
    Work around this hardware bug by registering the IRQ handler later and
    making it capable of handling interrupts with no cause. The change that
    makes the IRQ handler registration happen later actually eliminates
    the spurious interrupt as well.
    Signed-off-by: default avatarDaniel Drake <dsd@laptop.org>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    d2ac49fe
if_sdio.c 29 KB