generic: ar8216: move register inititalization into hw_init
SVN-Revision: 30855
This commit is contained in:
parent
e3538fa852
commit
291e2dd583
1 changed files with 25 additions and 18 deletions
|
@ -637,6 +637,17 @@ ar8216_hw_apply(struct switch_dev *dev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
ar8216_hw_init(struct ar8216_priv *priv)
|
||||||
|
{
|
||||||
|
/* XXX: undocumented magic from atheros, required! */
|
||||||
|
priv->write(priv, 0x38, 0xc000050e);
|
||||||
|
|
||||||
|
ar8216_rmw(priv, AR8216_REG_GLOBAL_CTRL,
|
||||||
|
AR8216_GCTRL_MTU, 1518 + 8 + 2);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ar8236_hw_init(struct ar8216_priv *priv) {
|
ar8236_hw_init(struct ar8216_priv *priv) {
|
||||||
static int initialized;
|
static int initialized;
|
||||||
|
@ -656,6 +667,10 @@ ar8236_hw_init(struct ar8216_priv *priv) {
|
||||||
}
|
}
|
||||||
msleep(1000);
|
msleep(1000);
|
||||||
|
|
||||||
|
/* enable jumbo frames */
|
||||||
|
ar8216_rmw(priv, AR8216_REG_GLOBAL_CTRL,
|
||||||
|
AR8316_GCTRL_MTU, 9018 + 8 + 2);
|
||||||
|
|
||||||
initialized = true;
|
initialized = true;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -720,6 +735,13 @@ ar8316_hw_init(struct ar8216_priv *priv) {
|
||||||
msleep(1000);
|
msleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* enable jumbo frames */
|
||||||
|
ar8216_rmw(priv, AR8216_REG_GLOBAL_CTRL,
|
||||||
|
AR8316_GCTRL_MTU, 9018 + 8 + 2);
|
||||||
|
|
||||||
|
/* enable cpu port to receive multicast and broadcast frames */
|
||||||
|
priv->write(priv, AR8216_REG_FLOOD_MASK, 0x003f003f);
|
||||||
|
|
||||||
out:
|
out:
|
||||||
priv->initialized = true;
|
priv->initialized = true;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -768,23 +790,6 @@ ar8216_reset_switch(struct switch_dev *dev)
|
||||||
for (i = 0; i < AR8216_NUM_PORTS; i++)
|
for (i = 0; i < AR8216_NUM_PORTS; i++)
|
||||||
ar8216_init_port(priv, i);
|
ar8216_init_port(priv, i);
|
||||||
|
|
||||||
/* XXX: undocumented magic from atheros, required! */
|
|
||||||
priv->write(priv, 0x38, 0xc000050e);
|
|
||||||
|
|
||||||
if (priv->chip == AR8216) {
|
|
||||||
ar8216_rmw(priv, AR8216_REG_GLOBAL_CTRL,
|
|
||||||
AR8216_GCTRL_MTU, 1518 + 8 + 2);
|
|
||||||
} else if (priv->chip == AR8316 ||
|
|
||||||
priv->chip == AR8236) {
|
|
||||||
/* enable jumbo frames */
|
|
||||||
ar8216_rmw(priv, AR8216_REG_GLOBAL_CTRL,
|
|
||||||
AR8316_GCTRL_MTU, 9018 + 8 + 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (priv->chip == AR8316) {
|
|
||||||
/* enable cpu port to receive multicast and broadcast frames */
|
|
||||||
priv->write(priv, AR8216_REG_FLOOD_MASK, 0x003f003f);
|
|
||||||
}
|
|
||||||
mutex_unlock(&priv->reg_mutex);
|
mutex_unlock(&priv->reg_mutex);
|
||||||
return ar8216_hw_apply(dev);
|
return ar8216_hw_apply(dev);
|
||||||
}
|
}
|
||||||
|
@ -908,7 +913,9 @@ ar8216_config_init(struct phy_device *pdev)
|
||||||
priv->init = true;
|
priv->init = true;
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
if (priv->chip == AR8236)
|
if (priv->chip == AR8216)
|
||||||
|
ret = ar8216_hw_init(priv);
|
||||||
|
else if (priv->chip == AR8236)
|
||||||
ret = ar8236_hw_init(priv);
|
ret = ar8236_hw_init(priv);
|
||||||
else if (priv->chip == AR8316)
|
else if (priv->chip == AR8316)
|
||||||
ret = ar8316_hw_init(priv);
|
ret = ar8316_hw_init(priv);
|
||||||
|
|
Loading…
Reference in a new issue