[U-Boot] Ethernet support broken for Wandboard Quad on master

Fabio Estevam festevam at gmail.com
Thu Jul 18 17:44:41 CEST 2013


Joe,

On Thu, Jul 18, 2013 at 8:41 AM, Fabio Estevam <festevam at gmail.com> wrote:

> I have tried:
>
> --- a/drivers/net/phy/phy.c
> +++ b/drivers/net/phy/phy.c
> @@ -404,7 +404,7 @@ int genphy_config(struct phy_device *phydev)
>                 if (val & ESTATUS_1000_XFULL)
>                         features |= SUPPORTED_1000baseX_Full;
>                 if (val & ESTATUS_1000_XHALF)
> -                       features |= SUPPORTED_1000baseX_Full;
> +                       features |= SUPPORTED_1000baseX_Half;
>         }
>
>         phydev->supported = features;
>
> ,but it still did not fix the issue.
>
> Charles/Joe,
>
> Any ideas?

Also tested on a mx6qsabresd and ethernet is also broken there as well.

The following patch fixes it:

--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -337,12 +337,8 @@ int genphy_parse_link(struct phy_device *phydev)
                        estatus = phy_read(phydev, MDIO_DEVAD_NONE,
                                           MII_ESTATUS);

-               if (estatus & (ESTATUS_1000_XFULL | ESTATUS_1000_XHALF |
-                               ESTATUS_1000_TFULL | ESTATUS_1000_THALF)) {
-                       phydev->speed = SPEED_1000;
-                       if (estatus & (ESTATUS_1000_XFULL | ESTATUS_1000_TFULL))
-                               phydev->duplex = DUPLEX_FULL;
-               }
+               if (estatus & (ESTATUS_1000_XFULL | ESTATUS_1000_TFULL))
+                       phydev->duplex = DUPLEX_FULL;

        } else {
                u32 bmcr = phy_read(phydev, MDIO_DEVAD_NONE, MII_BMCR);

Is this the correct fix?


More information about the U-Boot mailing list