]> git.baikalelectronics.ru Git - kernel.git/commit
libertas_sdio: handle spurious interrupts
authorDaniel Drake <dsd@laptop.org>
Thu, 2 Jun 2011 23:13:26 +0000 (00:13 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 3 Jun 2011 18:22:06 +0000 (14:22 -0400)
commitad2d076ab7a91489192cf2b4a4405c6e5f2b2efb
treec216b63dcbf466cdf6ceac26d11a6a0a19bb5e39
parente99e7d832eb1393f71ddfd6be6db02c5c549a82e
libertas_sdio: handle spurious interrupts

Commit af429aba7178446663fa9eee5058c61996dffb96 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: Daniel Drake <dsd@laptop.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/libertas/if_sdio.c