|
|
@ -733,6 +733,8 @@ static int |
|
|
|
ar8327_hw_init(struct ar8216_priv *priv) |
|
|
|
ar8327_hw_init(struct ar8216_priv *priv) |
|
|
|
{ |
|
|
|
{ |
|
|
|
struct ar8327_platform_data *pdata; |
|
|
|
struct ar8327_platform_data *pdata; |
|
|
|
|
|
|
|
struct ar8327_led_cfg *led_cfg; |
|
|
|
|
|
|
|
u32 pos, new_pos; |
|
|
|
u32 t; |
|
|
|
u32 t; |
|
|
|
int i; |
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
|
@ -747,7 +749,26 @@ ar8327_hw_init(struct ar8216_priv *priv) |
|
|
|
t = ar8327_get_pad_cfg(pdata->pad6_cfg); |
|
|
|
t = ar8327_get_pad_cfg(pdata->pad6_cfg); |
|
|
|
priv->write(priv, AR8327_REG_PAD6_MODE, t); |
|
|
|
priv->write(priv, AR8327_REG_PAD6_MODE, t); |
|
|
|
|
|
|
|
|
|
|
|
priv->write(priv, AR8327_REG_POWER_ON_STRIP, 0x40000000); |
|
|
|
pos = priv->read(priv, AR8327_REG_POWER_ON_STRIP); |
|
|
|
|
|
|
|
new_pos = pos; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
led_cfg = pdata->led_cfg; |
|
|
|
|
|
|
|
if (led_cfg) { |
|
|
|
|
|
|
|
if (led_cfg->open_drain) |
|
|
|
|
|
|
|
new_pos |= AR8327_POWER_ON_STRIP_LED_OPEN_EN; |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
new_pos &= ~AR8327_POWER_ON_STRIP_LED_OPEN_EN; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
priv->write(priv, AR8327_REG_LED_CTRL0, led_cfg->led_ctrl0); |
|
|
|
|
|
|
|
priv->write(priv, AR8327_REG_LED_CTRL1, led_cfg->led_ctrl1); |
|
|
|
|
|
|
|
priv->write(priv, AR8327_REG_LED_CTRL2, led_cfg->led_ctrl2); |
|
|
|
|
|
|
|
priv->write(priv, AR8327_REG_LED_CTRL3, led_cfg->led_ctrl3); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (new_pos != pos) { |
|
|
|
|
|
|
|
new_pos |= AR8327_POWER_ON_STRIP_POWER_ON_SEL; |
|
|
|
|
|
|
|
priv->write(priv, AR8327_REG_POWER_ON_STRIP, new_pos); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < AR8327_NUM_PHYS; i++) |
|
|
|
for (i = 0; i < AR8327_NUM_PHYS; i++) |
|
|
|
ar8327_phy_fixup(priv, i); |
|
|
|
ar8327_phy_fixup(priv, i); |
|
|
|