diff options
Diffstat (limited to 'drivers/net/dsa/bcm_sf2.c')
| -rw-r--r-- | drivers/net/dsa/bcm_sf2.c | 11 | 
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c index f277df922fcd..ba5d546d06aa 100644 --- a/drivers/net/dsa/bcm_sf2.c +++ b/drivers/net/dsa/bcm_sf2.c @@ -114,7 +114,10 @@ static void bcm_sf2_imp_setup(struct dsa_switch *ds, int port)  		/* Force link status for IMP port */  		reg = core_readl(priv, offset);  		reg |= (MII_SW_OR | LINK_STS); -		reg &= ~GMII_SPEED_UP_2G; +		if (priv->type == BCM4908_DEVICE_ID) +			reg |= GMII_SPEED_UP_2G; +		else +			reg &= ~GMII_SPEED_UP_2G;  		core_writel(priv, reg, offset);  		/* Enable Broadcast, Multicast, Unicast forwarding to IMP port */ @@ -585,8 +588,10 @@ static u32 bcm_sf2_sw_get_phy_flags(struct dsa_switch *ds, int port)  	 * in bits 15:8 and the patch level in bits 7:0 which is exactly what  	 * the REG_PHY_REVISION register layout is.  	 */ - -	return priv->hw_params.gphy_rev; +	if (priv->int_phy_mask & BIT(port)) +		return priv->hw_params.gphy_rev; +	else +		return 0;  }  static void bcm_sf2_sw_validate(struct dsa_switch *ds, int port,  |