diff options
| author | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-12-22 12:12:37 +0000 | 
|---|---|---|
| committer | juhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-12-22 12:12:37 +0000 | 
| commit | 565673cb046dbdc776fdfd34ab06884d6b3e4428 (patch) | |
| tree | 0399fb798611eef68320d442bc80e77a7ed20805 /target/linux/generic/files/drivers/net/phy | |
| parent | e1ab1fcace1fb828b007bafca84a70185cb2dd72 (diff) | |
generic: ar8316: allow to configure port 6 via platform data on AR8327
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34847 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy')
| -rw-r--r-- | target/linux/generic/files/drivers/net/phy/ar8216.c | 35 | 
1 files changed, 18 insertions, 17 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index f20cc281b..e47a7da28 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -1074,19 +1074,13 @@ ar8327_init_globals(struct ar8216_priv *priv)  }  static void -ar8327_init_cpuport(struct ar8216_priv *priv) +ar8327_config_port(struct ar8216_priv *priv, unsigned int port, +		    struct ar8327_port_cfg *cfg)  { -	struct ar8327_platform_data *pdata; -	struct ar8327_port_cfg *cfg;  	u32 t; -	pdata = priv->phy->dev.platform_data; -	if (!pdata) -		return; - -	cfg = &pdata->port0_cfg; -	if (!cfg->force_link) { -		priv->write(priv, AR8327_REG_PORT_STATUS(AR8216_PORT_CPU), +	if (!cfg || !cfg->force_link) { +		priv->write(priv, AR8327_REG_PORT_STATUS(port),  			    AR8216_PORT_STATUS_LINK_AUTO);  		return;  	} @@ -1095,6 +1089,7 @@ ar8327_init_cpuport(struct ar8216_priv *priv)  	t |= cfg->duplex ? AR8216_PORT_STATUS_DUPLEX : 0;  	t |= cfg->rxpause ? AR8216_PORT_STATUS_RXFLOW : 0;  	t |= cfg->txpause ? AR8216_PORT_STATUS_TXFLOW : 0; +  	switch (cfg->speed) {  	case AR8327_PORT_SPEED_10:  		t |= AR8216_PORT_SPEED_10M; @@ -1107,21 +1102,27 @@ ar8327_init_cpuport(struct ar8216_priv *priv)  		break;  	} -	priv->write(priv, AR8327_REG_PORT_STATUS(AR8216_PORT_CPU), t); +	priv->write(priv, AR8327_REG_PORT_STATUS(port), t);  }  static void  ar8327_init_port(struct ar8216_priv *priv, int port)  { +	struct ar8327_platform_data *pdata; +	struct ar8327_port_cfg *cfg;  	u32 t; -	if (port == AR8216_PORT_CPU) { -		ar8327_init_cpuport(priv); -	} else { -		t = AR8216_PORT_STATUS_LINK_AUTO; -		priv->write(priv, AR8327_REG_PORT_STATUS(port), t); -	} +	pdata = priv->phy->dev.platform_data; + +	if (pdata && port == AR8216_PORT_CPU) +		cfg = &pdata->port0_cfg; +	else if (pdata && port == 6) +		cfg = &pdata->port6_cfg; +	else +		cfg = NULL; +	ar8327_config_port(priv, port, cfg); +	  	priv->write(priv, AR8327_REG_PORT_HEADER(port), 0);  	priv->write(priv, AR8327_REG_PORT_VLAN0(port), 0);  | 
