aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2015-01-18 20:17:07 +0000
committerFelix Fietkau <nbd@openwrt.org>2015-01-18 20:17:07 +0000
commit8b61d50febc941e1b4e30e5ba103340c8637ae6a (patch)
treefa542344ab95800ea293d3028bee516669f1ec0f /target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
parent71a43766c287302cdb7dc9fc6eca5a39924e65db (diff)
downloadmaster-187ad058-8b61d50febc941e1b4e30e5ba103340c8637ae6a.tar.gz
master-187ad058-8b61d50febc941e1b4e30e5ba103340c8637ae6a.tar.bz2
master-187ad058-8b61d50febc941e1b4e30e5ba103340c8637ae6a.zip
ralink: use fe_reset to control all reset
Signed-off-by: michael lee <igvtee@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44044 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c')
-rw-r--r--target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
index 4252ff3ad2..28650bbceb 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
@@ -60,6 +60,8 @@
#define NEXT_TX_DESP_IDX(X) (((X) + 1) & (NUM_DMA_DESC - 1))
#define NEXT_RX_DESP_IDX(X) (((X) + 1) & (NUM_DMA_DESC - 1))
+#define SYSC_REG_RSTCTRL 0x34
+
static int fe_msg_level = -1;
module_param_named(msg_level, fe_msg_level, int, 0);
MODULE_PARM_DESC(msg_level, "Message level (-1=defaults,0=none,...,16=all)");
@@ -112,6 +114,20 @@ u32 fe_reg_r32(enum fe_reg reg)
return fe_r32(fe_reg_table[reg]);
}
+void fe_reset(u32 reset_bits)
+{
+ u32 t;
+
+ t = rt_sysc_r32(SYSC_REG_RSTCTRL);
+ t |= reset_bits;
+ rt_sysc_w32(t , SYSC_REG_RSTCTRL);
+ udelay(10);
+
+ t &= ~reset_bits;
+ rt_sysc_w32(t, SYSC_REG_RSTCTRL);
+ udelay(10);
+}
+
static inline void fe_int_disable(u32 mask)
{
fe_reg_w32(fe_reg_r32(FE_REG_FE_INT_ENABLE) & ~mask,