aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2010-01-31 12:48:53 +0000
committerGabor Juhos <juhosg@openwrt.org>2010-01-31 12:48:53 +0000
commit9ab88ce62da56b2c6132c8331f2528349ddda125 (patch)
tree172cc7113db2cd6a4a8d37ff6e0bb027d76fac26 /target/linux/ramips
parent224edd2575503ce96e406c5793c54c12414d5924 (diff)
downloadupstream-9ab88ce62da56b2c6132c8331f2528349ddda125.tar.gz
upstream-9ab88ce62da56b2c6132c8331f2528349ddda125.tar.bz2
upstream-9ab88ce62da56b2c6132c8331f2528349ddda125.zip
ramips_eth: add helper functions to {ed,dis}able interrupts
SVN-Revision: 19446
Diffstat (limited to 'target/linux/ramips')
-rw-r--r--target/linux/ramips/files/drivers/net/ramips.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/target/linux/ramips/files/drivers/net/ramips.c b/target/linux/ramips/files/drivers/net/ramips.c
index 34d5b3e69e..d8be97c7a7 100644
--- a/target/linux/ramips/files/drivers/net/ramips.c
+++ b/target/linux/ramips/files/drivers/net/ramips.c
@@ -51,6 +51,24 @@ ramips_fe_rr(unsigned reg)
return __raw_readl(ramips_fe_base + reg);
}
+static inline void
+ramips_fe_int_disable(u32 mask)
+{
+ ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) & ~mask,
+ RAMIPS_FE_INT_ENABLE);
+ /* flush write */
+ ramips_fe_rr(RAMIPS_FE_INT_ENABLE);
+}
+
+static inline void
+ramips_fe_int_enable(u32 mask)
+{
+ ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) | mask,
+ RAMIPS_FE_INT_ENABLE);
+ /* flush write */
+ ramips_fe_rr(RAMIPS_FE_INT_ENABLE);
+}
+
static void
ramips_cleanup_dma(struct raeth_priv *re)
{
@@ -229,8 +247,7 @@ ramips_eth_rx_hw(unsigned long ptr)
if (max_rx == 0)
tasklet_schedule(&priv->rx_tasklet);
else
- ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) | RAMIPS_RX_DLY_INT,
- RAMIPS_FE_INT_ENABLE);
+ ramips_fe_int_enable(RAMIPS_RX_DLY_INT);
}
static void
@@ -248,8 +265,7 @@ ramips_eth_tx_housekeeping(unsigned long ptr)
priv->skb_free_idx = 0;
}
- ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) | RAMIPS_TX_DLY_INT,
- RAMIPS_FE_INT_ENABLE);
+ ramips_fe_int_enable(RAMIPS_TX_DLY_INT);
}
static int
@@ -284,8 +300,7 @@ ramips_eth_irq(int irq, void *dev)
ramips_fe_wr(0xFFFFFFFF, RAMIPS_FE_INT_STATUS);
if (fe_int & RAMIPS_RX_DLY_INT) {
- ramips_fe_wr(ramips_fe_rr(RAMIPS_FE_INT_ENABLE) & ~(RAMIPS_RX_DLY_INT),
- RAMIPS_FE_INT_ENABLE);
+ ramips_fe_int_disable(RAMIPS_RX_DLY_INT);
tasklet_schedule(&priv->rx_tasklet);
}