[U-Boot] U-boot 2010.12 Ping failed on DP83849C

Kim Phillips kim.phillips at freescale.com
Fri May 6 21:08:18 CEST 2011


On Fri, 6 May 2011 08:05:18 -0700
Jerry Wang <wang3522 at yahoo.com> wrote:

> I have a custom MPC8313ERD board loaded with u-boot 1.1.6 and the network PHY is 
> NetSemi DP83849C. The PHY info is copied from DP83865 and the network works 
> fine.
> 
> Recently I am trying to upgrade u-boot to 2010.12 but I got Ping failed and host 
> is not alive message when I ping the same host.
> After enabling debug, it shows:
>        Trying TSEC0        
>         Speed: 10, half duplex
>         Using TSEC0 device
>         sending ARP for 0a350275
>         ARP broadcast 1
>         TSEC0: tsec: tx error
>         ARP broadcast 2
>         TSEC0: tsec: tx buffers full
>         ping failed; host 10.53.2.117 is not alive
> 
>     After googling the problem, I learned this may be related to the some kind 
> of bus conflict when DMA move ip packet to transmit bugger.
>    My question is what caused this error in 2010.12 version and not in 1.1.6?

there are almost 10,000 commits between those two revisions, not to
mention any local changes in your tree...git bisecting that might
take some time.

A more direct approach would be to try the top of tree, which has
the new phy lib that includes mdio commands for peeking and poking
phys.  You'd need to fill in the .uid, .mask, and .features values
when adding the DP83849C driver though.

Kim

diff --git a/drivers/net/phy/natsemi.c b/drivers/net/phy/natsemi.c
index ea60ac1..8900292 100644
--- a/drivers/net/phy/natsemi.c
+++ b/drivers/net/phy/natsemi.c
@@ -88,9 +88,20 @@ static struct phy_driver DP83865_driver = {
        .shutdown = &genphy_shutdown,
 };
 
+static struct phy_driver DP83849C_driver = {
+       .name = "NatSemi DP83849C",
+       .uid = 0xXXXXXXXX,
+       .mask = 0xYYYYYYYY,
+       .features = PHY_GBIT_FEATURES,
+       .config = &dp83865_config,
+       .startup = &dp83865_startup,
+       .shutdown = &genphy_shutdown,
+};
+
 int phy_natsemi_init(void)
 {
        phy_register(&DP83865_driver);
+       phy_register(&DP83849C_driver);
 
        return 0;
 }



More information about the U-Boot mailing list