aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManikandan Pillai <mani.pillai@ti.com>2009-04-08 09:14:35 +0530
committerBen Warren <biggerbadderben@gmail.com>2009-06-08 22:57:21 -0700
commitca9c8a1e10fac01e6a1129f82a7ce18bd818fa43 (patch)
tree0edd2964e9c7a1a13c5582b990157f64ba43cdeb
parente5a3bc2401a23f1890611f020f57f94824a534db (diff)
SMC911x driver fixed for NFS boot
eth_halt() function in the smc911x drivers used to call the smc911x_reset() function. eth_halt() used to be called after tftp transfers. This used to put the ethernet chip in reset while the linux boots up resulting in the ethernet driver not coming up. NFS boot used to fail as a result. This patch calls smc911x_shutdown() instead of smc911x_reset(). Some comments received has also been fixed. Signed-off-by: Manikandan Pillai <mani.pillai@ti.com> Signed-off-by: Ben Warren <biggerbadderben@gmail.com>
-rw-r--r--drivers/net/smc911x.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/net/smc911x.c b/drivers/net/smc911x.c
index 8c9a2a8a0..455b055a9 100644
--- a/drivers/net/smc911x.c
+++ b/drivers/net/smc911x.c
@@ -117,6 +117,27 @@ static int smc911x_phy_reset(void)
return 0;
}
+static void smc911x_shutdown(void)
+{
+ unsigned int cr;
+
+ /* Turn of Rx and TX */
+ cr = smc911x_get_mac_csr(MAC_CR);
+ cr &= ~(MAC_CR_TXEN | MAC_CR_RXEN | MAC_CR_HBDIS);
+ smc911x_set_mac_csr(MAC_CR, cr);
+
+ /* Stop Transmission */
+ cr = smc911x_get_mac_csr(TX_CFG);
+ cr &= ~(TX_CFG_STOP_TX);
+ smc911x_set_mac_csr(TX_CFG, cr);
+ /* Stop receiving packets */
+ cr = smc911x_get_mac_csr(RX_CFG);
+ cr &= ~(RX_CFG_RXDOFF);
+ smc911x_set_mac_csr(RX_CFG, cr);
+
+}
+
+
static void smc911x_phy_configure(void)
{
int timeout;
@@ -225,7 +246,7 @@ int eth_send(volatile void *packet, int length)
void eth_halt(void)
{
- smc911x_reset();
+ smc911x_shutdown();
}
int eth_rx(void)