projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ar71xx: add a new driver for the ar7240 switch using swconfig.
[openwrt.git]
/
target
/
linux
/
ar71xx
/
files
/
drivers
/
net
/
ag71xx
/
ag71xx_main.c
diff --git
a/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
b/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
index
a57b6d4
..
fc838f4
100644
(file)
--- a/
target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
+++ b/
target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c
@@
-454,6
+454,12
@@
static void ag71xx_dma_reset(struct ag71xx *ag)
ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0);
ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0);
ag71xx_wr(ag, AG71XX_REG_RX_CTRL, 0);
ag71xx_wr(ag, AG71XX_REG_TX_CTRL, 0);
+ /*
+ * give the hardware some time to really stop all rx/tx activity
+ * clearing the descriptors too early causes random memory corruption
+ */
+ mdelay(1);
+
/* clear descriptor addresses */
ag71xx_wr(ag, AG71XX_REG_TX_DESC, 0);
ag71xx_wr(ag, AG71XX_REG_RX_DESC, 0);
/* clear descriptor addresses */
ag71xx_wr(ag, AG71XX_REG_TX_DESC, 0);
ag71xx_wr(ag, AG71XX_REG_RX_DESC, 0);
@@
-567,12
+573,16
@@
static void ag71xx_hw_stop(struct ag71xx *ag)
static int ag71xx_open(struct net_device *dev)
{
struct ag71xx *ag = netdev_priv(dev);
static int ag71xx_open(struct net_device *dev)
{
struct ag71xx *ag = netdev_priv(dev);
+ struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag);
int ret;
ret = ag71xx_rings_init(ag);
if (ret)
goto err;
int ret;
ret = ag71xx_rings_init(ag);
if (ret)
goto err;
+ if (pdata->is_ar724x)
+ ag71xx_hw_init(ag);
+
napi_enable(&ag->napi);
netif_carrier_off(dev);
napi_enable(&ag->napi);
netif_carrier_off(dev);
This page took
0.031609 seconds
and
4
git commands to generate.