diff options
author | Giuseppe CAVALLARO | 2016-06-24 15:16:26 +0200 |
---|---|---|
committer | David S. Miller | 2016-06-28 14:54:23 +0200 |
commit | 02e57b9d7c8ce9e403f15f48fb91dd6549aaf465 (patch) | |
tree | b989243d2535a058aa1abbd412d58e5eea50487e /drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c | |
parent | drivers: net: stmmac: rework core ISR to better manage PCS and PMT (diff) | |
download | kernel-qcow2-linux-02e57b9d7c8ce9e403f15f48fb91dd6549aaf465.tar.gz kernel-qcow2-linux-02e57b9d7c8ce9e403f15f48fb91dd6549aaf465.tar.xz kernel-qcow2-linux-02e57b9d7c8ce9e403f15f48fb91dd6549aaf465.zip |
drivers: net: stmmac: add port selection programming
In case of SGMII more, for example when a MAC2MAC connection
is needed, the port selection bits (inside the MAC configuration
registers) have to be programmed according to the link selected.
So the patch adds a new DT parameter to pass the port selection
and to programmed related PCS and CORE to use it.
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c')
-rw-r--r-- | drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c index 0d31f2f80d07..cbefe9e2207c 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_core.c @@ -46,6 +46,21 @@ static void dwmac1000_core_init(struct mac_device_info *hw, int mtu) if (mtu > 2000) value |= GMAC_CONTROL_JE; + if (hw->ps) { + value |= GMAC_CONTROL_TE; + + if (hw->ps == SPEED_1000) { + value &= ~GMAC_CONTROL_PS; + } else { + value |= GMAC_CONTROL_PS; + + if (hw->ps == SPEED_10) + value &= ~GMAC_CONTROL_FES; + else + value |= GMAC_CONTROL_FES; + } + } + writel(value, ioaddr + GMAC_CONTROL); /* Mask GMAC interrupts */ |