Hi,

On 21-03-16 18:30, Karsten Merker wrote:
On Mon, Mar 21, 2016 at 04:47:15PM +0100, Karsten Merker wrote:
On Sun, Mar 20, 2016 at 07:51:20PM +0100, Hans de Goede wrote:
On 20-03-16 16:28, Michael Haas wrote:
On 03/20/2016 02:45 PM, Hans de Goede wrote:
On 19-03-16 14:40, Michael Haas wrote:

0xA was set to 7800 for working runs and 3800 for broken runs. The
difference is bit 14 in the GBSR: 'MASTER/SLAVE Configuration
Resolution'. In the broken runs, the autonegotation configured the
OlinuXino to 'slave'. I have whipped up a quick patch which disable the
master/slave part of the autonegotiation and force master mode.

diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index 51b5746..484b2be 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -170,6 +170,7 @@ int genphy_restart_aneg(struct phy_device *phydev)
   int genphy_config_aneg(struct phy_device *phydev)
   {
          int result;
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x09, 0x1A00);

          if (AUTONEG_ENABLE != phydev->autoneg)
                  return genphy_setup_forced(phydev);


I was going to add that in realtek.c, not in phy.c - as soon as I figure
out which section there is applicable.

Unfortunately the issue is now split over two threads - this one and the
"Which entry in drivers/net/phy/realtek.c matches my device?" thread.

It looks like we have three related but separate issues here:

a) The sunxi config doesn't actually build the phy drivers:

    include/configs/sunxi-common.h contains:

    302 /* Ethernet support */
    303 #ifdef CONFIG_SUNXI_EMAC
    304 #define CONFIG_PHY_ADDR         1
    305 #define CONFIG_MII                      /* MII PHY management           
*/
    306 #define CONFIG_PHYLIB
    307 #endif
    308
    309 #ifdef CONFIG_SUNXI_GMAC
    310 #define CONFIG_PHY_GIGE                 /* GMAC can use gigabit PHY     
*/
    311 #define CONFIG_PHY_ADDR         1
    312 #define CONFIG_MII                      /* MII PHY management           
*/
    313 #endif

    For the sunxi EMAC case (which is AFAIK only used on A10/A13)
    CONFIG_PHYLIB is enabled, but for the CONFIG_SUNXI_GMAC case (all
    other sunxi-based systems) we don't enable any PHY driver.

We do enable phylib for gmac based systems, we have CONFIG_ETH_DESIGNWARE=y
in defconfigs using GMAC and drivers/net/Kconfig has:

config ETH_DESIGNWARE
        bool "Synopsys Designware Ethernet MAC"
        select PHYLIB

We do however only enable the generic (vendor neutral phy) phylib support
and not any vendor specific drivers, I've a commit in my tree enabling
realtek phy support.

https://github.com/jwrdegoede/u-boot-sunxi/commit/8121866aa55b010d31fe75c1eb5d2372c1e27a62

So it looks like a) is already covered :)

    So we
    either need to enable CONFIG_PHYLIB for CONFIG_SUNXI_GMAC as well
    or enable the relevant PHY drivers (do we actually have anything
    besides realtek on sunxi-based systems?) separately, i.e.
    something like

diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index b26363d..ea15e37 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -310,6 +310,7 @@ extern int soft_i2c_gpio_scl;
  #define CONFIG_PHY_GIGE                       /* GMAC can use gigabit PHY     
*/
  #define CONFIG_PHY_ADDR               1
  #define CONFIG_MII                    /* MII PHY management           */
+#define CONFIG_PHY_REALTEK
  #endif

  #ifdef CONFIG_USB_EHCI_HCD


b) The realtek PHY driver (drivers/net/phy/realtek.c) doesn't match
    on the RTL8211CL PHY ID, so even if it is compiled in, it still
    doesn't work. For more details on this issue, see the "Which entry
    in drivers/net/phy/realtek.c matches my device?" thread.


c) The master/slave mode problem that can be worked around by forcing
    master mode on the RTL8211CL.

Regards,

Hans
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to