]> git.baikalelectronics.ru Git - kernel.git/commit
at86rf230: change irq handling to prevent lockups with edge type irq
authorSascha Herrmann <sascha@ps.nvbi.de>
Sun, 14 Apr 2013 22:33:29 +0000 (22:33 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 16 Apr 2013 20:34:08 +0000 (16:34 -0400)
commitd0599ae7ec518bd1d4b9ffcc1973d854c6ed3cbf
tree0db034d9f4706f706e1820997c2951d577502340
parenta9d11879621233bfe5b3da0c5ad408b8ae1d9849
at86rf230: change irq handling to prevent lockups with edge type irq

Implemented separate irq handling for edge and level type interrupt
configuration. For edge type interrupts calls to disable_irq_nosync()
and enable_irq() are removed. The at86rf230 resets the irq line only
after the irq status register is read. Disabling the irq can lock the
driver in situations where a irq is set by the radio while the driver
is still reading the frame buffer.

With irq_type configuration set to 0 the original behavior is
preserverd.

Additional the irq filter register is set to filter out all unused
interrupts and the irq status register is read in the probe
function to clear the irq line.

Signed-off-by: Sascha Herrmann <sascha@ps.nvbi.de>
Conflicts:
drivers/net/ieee802154/at86rf230.c
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ieee802154/at86rf230.c