aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReece R. Pollack2014-07-10 16:59:03 -0500
committerMurali Karicheri2014-12-03 10:30:12 -0600
commit06fe11cd4ff34bfdfed665726ee3901cd791c03d (patch)
treebf53ed82995091f5f404b1c626b2f9fae2b05e67 /drivers/net/ethernet/ti/keystone_ethss.c
parent26f60283eba81e1149467111959f37c793135f32 (diff)
downloadlinux-06fe11cd4ff34bfdfed665726ee3901cd791c03d.tar.gz
linux-06fe11cd4ff34bfdfed665726ee3901cd791c03d.tar.xz
linux-06fe11cd4ff34bfdfed665726ee3901cd791c03d.zip
Revert "net: keystone: Clean up network interface shutdown"
This reverts commit 5d2e762de355ab33fc1a767a2dc0d6dccd40f135, which destabilizes the RT kernel.
Diffstat (limited to 'drivers/net/ethernet/ti/keystone_ethss.c')
-rw-r--r--drivers/net/ethernet/ti/keystone_ethss.c28
1 files changed, 7 insertions, 21 deletions
diff --git a/drivers/net/ethernet/ti/keystone_ethss.c b/drivers/net/ethernet/ti/keystone_ethss.c
index 4d36264c246..7fa411db024 100644
--- a/drivers/net/ethernet/ti/keystone_ethss.c
+++ b/drivers/net/ethernet/ti/keystone_ethss.c
@@ -2147,14 +2147,14 @@ static int cpsw_port_reset(struct cpsw_slave *slave)
2147 u32 i, v; 2147 u32 i, v;
2148 2148
2149 /* Set the soft reset bit */ 2149 /* Set the soft reset bit */
2150 __iowmb(); 2150 __raw_writel(SOFT_RESET,
2151 __raw_writel(SOFT_RESET, &slave->sliver->soft_reset); 2151 &slave->sliver->soft_reset);
2152 __iowmb();
2153 2152
2154 /* Wait for the bit to clear */ 2153 /* Wait for the bit to clear */
2155 for (i = 0; i < DEVICE_EMACSL_RESET_POLL_COUNT; i++) { 2154 for (i = 0; i < DEVICE_EMACSL_RESET_POLL_COUNT; i++) {
2156 v = __raw_readl(&slave->sliver->soft_reset); 2155 v = __raw_readl(&slave->sliver->soft_reset);
2157 if ((v & SOFT_RESET_MASK) != SOFT_RESET) 2156 if ((v & SOFT_RESET_MASK) !=
2157 SOFT_RESET)
2158 return 0; 2158 return 0;
2159 } 2159 }
2160 2160
@@ -2172,24 +2172,12 @@ static void cpsw_port_config(struct cpsw_slave *slave, int max_rx_len)
2172 2172
2173 __raw_writel(max_rx_len, &slave->sliver->rx_maxlen); 2173 __raw_writel(max_rx_len, &slave->sliver->rx_maxlen);
2174 2174
2175 __iowmb();
2176 __raw_writel(MACSL_ENABLE | MACSL_RX_ENABLE_EXT_CTL | 2175 __raw_writel(MACSL_ENABLE | MACSL_RX_ENABLE_EXT_CTL |
2177 MACSL_RX_ENABLE_CSF, &slave->sliver->mac_control); 2176 MACSL_RX_ENABLE_CSF, &slave->sliver->mac_control);
2178} 2177}
2179 2178
2180static void cpsw_slave_stop(struct cpsw_slave *slave, 2179static void cpsw_slave_stop(struct cpsw_slave *slave, struct cpsw_priv *priv)
2181 struct cpsw_intf *cpsw_intf)
2182{ 2180{
2183 struct cpsw_priv *priv = cpsw_intf->cpsw_priv;
2184 void __iomem *sgmii_port_regs;
2185
2186 if (slave->slave_num < 2)
2187 sgmii_port_regs = priv->sgmii_port_regs;
2188 else
2189 sgmii_port_regs = priv->sgmii_port34_regs;
2190
2191 keystone_sgmii_rtreset(sgmii_port_regs, slave->slave_num, true);
2192
2193 cpsw_port_reset(slave); 2181 cpsw_port_reset(slave);
2194 2182
2195 if (!slave->phy) 2183 if (!slave->phy)
@@ -2232,8 +2220,6 @@ static void cpsw_slave_open(struct cpsw_slave *slave,
2232 2220
2233 cpsw_port_reset(slave); 2221 cpsw_port_reset(slave);
2234 2222
2235 keystone_sgmii_rtreset(sgmii_port_regs, slave->slave_num, false);
2236
2237 cpsw_port_config(slave, priv->rx_packet_max); 2223 cpsw_port_config(slave, priv->rx_packet_max);
2238 2224
2239 cpsw_set_slave_mac(slave, cpsw_intf); 2225 cpsw_set_slave_mac(slave, cpsw_intf);
@@ -3069,7 +3055,7 @@ static int cpsw_open(void *intf_priv, struct net_device *ndev)
3069 3055
3070 for_each_slave(cpsw_intf, cpsw_slave_init, cpsw_dev); 3056 for_each_slave(cpsw_intf, cpsw_slave_init, cpsw_dev);
3071 3057
3072 for_each_slave(cpsw_intf, cpsw_slave_stop, cpsw_intf); 3058 for_each_slave(cpsw_intf, cpsw_slave_stop, cpsw_dev);
3073 3059
3074 /* Serdes init */ 3060 /* Serdes init */
3075 if (cpsw_dev->init_serdes_at_probe == 0) 3061 if (cpsw_dev->init_serdes_at_probe == 0)
@@ -3134,7 +3120,7 @@ static int cpsw_close(void *intf_priv, struct net_device *ndev)
3134 if (!cpsw_dev->ale_refcnt) 3120 if (!cpsw_dev->ale_refcnt)
3135 cpsw_ale_stop(cpsw_dev->ale); 3121 cpsw_ale_stop(cpsw_dev->ale);
3136 3122
3137 for_each_slave(cpsw_intf, cpsw_slave_stop, cpsw_intf); 3123 for_each_slave(cpsw_intf, cpsw_slave_stop, cpsw_dev);
3138 3124
3139 if(!cpsw_dev->force_no_hwtstamp) 3125 if(!cpsw_dev->force_no_hwtstamp)
3140 netcp_unregister_rxhook(netcp, CPSW_RXHOOK_ORDER, 3126 netcp_unregister_rxhook(netcp, CPSW_RXHOOK_ORDER,