• Daniel Drake's avatar
    mwifiex: fix IRQ enable/disable · 232fde06
    Daniel Drake authored
    During tear down (e.g. mwifiex_sdio_remove during system suspend),
    mwifiex left IRQs enabled for a significant period of time when it was
    unable to handle them correctly. This caused interrupt storms and
    interfered with the bluetooth interface on the same SDIO card.
    
    Solve this by disabling interrupts at the point when they can no longer
    be handled correctly, which is at the start of mwifiex_remove_card().
    
    For cleanliness, we now enable interrupts in the mwifiex_add_card() path,
    to be symmetrical with the disabling of interrupts. We also couple the
    registration of the sdio IRQ handler with the actual enable/disable of
    interrupts at the hardware level.
    
    I also removed a write to this register in mwifiex_init_sdio which seemed
    pointless and won't cause any ill effects now that we only register
    the SDIO IRQ handler when we are ready to accept interrupts.
    
    Includes some corrections from Amitkumar Karwar.
    Signed-off-by: default avatarDaniel Drake <dsd@laptop.org>
    Acked-by: default avatarBing Zhao <bzhao@marvell.com>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    232fde06
sdio.c 51.3 KB