summaryrefslogtreecommitdiff
path: root/drivers/net/fjes/fjes_main.c
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2015-09-21 10:37:54 +0300
committerMarcel Holtmann <marcel@holtmann.org>2015-09-22 12:51:20 +0300
commit57c1bc7ea8a4857070722c23ce98e01f256c9306 (patch)
treeb6bed2b40a81231d98627b1be5aaf025d68d9bd6 /drivers/net/fjes/fjes_main.c
parent02c7b6922899621aa8e8babe27fca7b6b2e497b0 (diff)
downloadlinux-57c1bc7ea8a4857070722c23ce98e01f256c9306.tar.xz
at86rf230: support edge triggered irq
This patch adds support for edge triggered irq types. We remove the locking for irq resources by enable/disable irq and allocate directly some heap buffer at isr. We have still a enable/disable irq path but this is for level-triggered irq's which need to be disabled until spi_async clear the irq line. There is usually a little race condition between "irq line cleared" and "enable_irq". When in this time a edge triggered irq arrived, we will not recognize this interrupt. This case can't happend at at86rf230. The reason is that we unmask TRX_END irq's only which indicates a transmit or receive completion, which depends on the current state. On Transmit: TRX_END arrived and transceiver is in TX_ARET_ON state again, in this state no other TRX_END can happen until we leave the state. On Receive: This is protected with the RX_SAFE_MODE bit which leaves the transceiver in RX_AACK_BUSY until we readed the framebuffer. In this state no other TRX_END can happen. Tested with RPi where I first detected issues between edge/level irq's. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/net/fjes/fjes_main.c')
0 files changed, 0 insertions, 0 deletions