diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2010-01-31 12:48:53 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2010-01-31 12:48:53 +0000 |
commit | 9ab88ce62da56b2c6132c8331f2528349ddda125 (patch) | |
tree | 172cc7113db2cd6a4a8d37ff6e0bb027d76fac26 /target/linux/ramips | |
parent | 224edd2575503ce96e406c5793c54c12414d5924 (diff) | |
download | upstream-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.c | 27 |
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); } |