]> 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)
commit0ada1ca768421de767a2f402f643f6ff9f4a16fd
treec216b63dcbf466cdf6ceac26d11a6a0a19bb5e39
parent4fdc5a5e279efadd411c24c23f537c071fd28e16
libertas_sdio: handle spurious interrupts

Commit cf486b2ec2c928161114a21b8b529f3765262d0d 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