
Dear Manikandan Pillai,
In message 1239162275-13087-1-git-send-email-mani.pillai@ti.com you wrote:
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.
This patch (commit ID ca9c8a1e in the master branch) causes compile warnings on all systems that use this driver, for example:
+ ./MAKEALL imx31_litekit Configuring for imx31_litekit board... smc911x.c: In function 'smc911x_shutdown': smc911x.c:130: warning: large integer implicitly truncated to unsigned type smc911x.c:132: warning: large integer implicitly truncated to unsigned type smc911x.c:134: warning: large integer implicitly truncated to unsigned type smc911x.c:136: warning: large integer implicitly truncated to unsigned type text data bss dec hex filename 114556 5228 24584 144368 233f0 /work/wd/tmp-arm/u-boot
The problem seems to come from this part of the code:
+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);
wher eyou ar epssing long constants (TX_CFG, RX_CFG) into smc911x_set_mac_csr(), but smc911x_set_mac_csr() is declared in "drivers/net/smc911x.h" to take an "unsigned character" argument only:
static u32 smc911x_get_mac_csr(u8 reg)
Please check what's wrong.
Please either provide a fix, or I will have to consider to revert this patch for the upcoming release.
Thanks.
Best regards,
Wolfgang Denk