Skip to content
Snippets Groups Projects
Commit 9bd15141 authored by Marinus Enzinger's avatar Marinus Enzinger
Browse files

[w5100] Fixed RX interrupt handling

parent ab007162
No related branches found
No related tags found
No related merge requests found
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#define ENABLE_DEBUG (0) #define ENABLE_DEBUG (0)
#include "debug.h" #include "debug.h"
#define SPI_CONF SPI_MODE_0 #define SPI_CONF SPI_MODE_0
#define RMSR_DEFAULT_VALUE (0x55) #define RMSR_DEFAULT_VALUE (0x55)
...@@ -285,14 +284,21 @@ static void isr(netdev_t *netdev) ...@@ -285,14 +284,21 @@ static void isr(netdev_t *netdev)
uint8_t ir; uint8_t ir;
w5100_t *dev = (w5100_t *)netdev; w5100_t *dev = (w5100_t *)netdev;
/* we only react on RX events, and if we see one, we read from the RX buffer /* read interrupt register */
* until it is empty */
spi_acquire(dev->p.spi, dev->p.cs, SPI_CONF, dev->p.clk); spi_acquire(dev->p.spi, dev->p.cs, SPI_CONF, dev->p.clk);
ir = rreg(dev, S0_IR); ir = rreg(dev, S0_IR);
spi_release(dev->p.spi); spi_release(dev->p.spi);
/* we only react on RX events, and if we see one, we read from the RX buffer
* until it is empty */
while (ir & IR_RECV) { while (ir & IR_RECV) {
DEBUG("[w5100] netdev RX complete\n"); DEBUG("[w5100] netdev RX complete\n");
netdev->event_callback(netdev, NETDEV_EVENT_RX_COMPLETE); netdev->event_callback(netdev, NETDEV_EVENT_RX_COMPLETE);
/* reread interrupt register */
spi_acquire(dev->p.spi, dev->p.cs, SPI_CONF, dev->p.clk);
ir = rreg(dev, S0_IR);
spi_release(dev->p.spi);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment