Merge branch 'master' of git://git.denx.de/u-boot-net
authorTom Rini <trini@konsulko.com>
Tue, 24 May 2016 15:59:02 +0000 (11:59 -0400)
committerTom Rini <trini@konsulko.com>
Tue, 24 May 2016 15:59:02 +0000 (11:59 -0400)
Signed-off-by: Tom Rini <trini@konsulko.com>
Conflicts:
drivers/net/zynq_gem.c

1  2 
drivers/net/phy/phy.c
drivers/net/zynq_gem.c

diff --combined drivers/net/phy/phy.c
@@@ -248,7 -248,7 +248,7 @@@ int genphy_update_link(struct phy_devic
                        if (i > PHY_ANEG_TIMEOUT) {
                                printf(" TIMEOUT !\n");
                                phydev->link = 0;
 -                              return 0;
 +                              return -ETIMEDOUT;
                        }
  
                        if (ctrlc()) {
@@@ -431,13 -431,10 +431,13 @@@ int genphy_config(struct phy_device *ph
  
  int genphy_startup(struct phy_device *phydev)
  {
 -      genphy_update_link(phydev);
 -      genphy_parse_link(phydev);
 +      int ret;
  
 -      return 0;
 +      ret = genphy_update_link(phydev);
 +      if (ret)
 +              return ret;
 +
 +      return genphy_parse_link(phydev);
  }
  
  int genphy_shutdown(struct phy_device *phydev)
@@@ -461,6 -458,9 +461,9 @@@ static LIST_HEAD(phy_drivers)
  
  int phy_init(void)
  {
+ #ifdef CONFIG_MV88E61XX_SWITCH
+       phy_mv88e61xx_init();
+ #endif
  #ifdef CONFIG_PHY_AQUANTIA
        phy_aquantia_init();
  #endif
@@@ -879,7 -879,9 +882,7 @@@ __weak int board_phy_config(struct phy_
  int phy_config(struct phy_device *phydev)
  {
        /* Invoke an optional board-specific helper */
 -      board_phy_config(phydev);
 -
 -      return 0;
 +      return board_phy_config(phydev);
  }
  
  int phy_shutdown(struct phy_device *phydev)
diff --combined drivers/net/zynq_gem.c
@@@ -179,6 -179,7 +179,7 @@@ struct zynq_gem_priv 
        struct zynq_gem_regs *iobase;
        phy_interface_t interface;
        struct phy_device *phydev;
+       int phy_of_handle;
        struct mii_dev *bus;
  };
  
@@@ -353,13 -354,17 +354,16 @@@ static int zynq_phy_init(struct udevic
                                  ADVERTISED_Asym_Pause;
        priv->phydev->advertising = priv->phydev->supported;
  
 -      phy_config(priv->phydev);
 -
 -      return 0;
+       if (priv->phy_of_handle > 0)
+               priv->phydev->dev->of_offset = priv->phy_of_handle;
 +      return phy_config(priv->phydev);
  }
  
  static int zynq_gem_init(struct udevice *dev)
  {
        u32 i, nwconfig;
 +      int ret;
        unsigned long clk_rate = 0;
        struct zynq_gem_priv *priv = dev_get_priv(dev);
        struct zynq_gem_regs *regs = priv->iobase;
                priv->init++;
        }
  
 -      phy_startup(priv->phydev);
 +      ret = phy_startup(priv->phydev);
 +      if (ret)
 +              return ret;
  
        if (!priv->phydev->link) {
                printf("%s: No link.\n", priv->phydev->dev->name);
@@@ -677,7 -680,6 +681,6 @@@ static int zynq_gem_ofdata_to_platdata(
  {
        struct eth_pdata *pdata = dev_get_platdata(dev);
        struct zynq_gem_priv *priv = dev_get_priv(dev);
-       int offset = 0;
        const char *phy_mode;
  
        pdata->iobase = (phys_addr_t)dev_get_addr(dev);
        priv->emio = 0;
        priv->phyaddr = -1;
  
-       offset = fdtdec_lookup_phandle(gd->fdt_blob, dev->of_offset,
-                                      "phy-handle");
-       if (offset > 0)
-               priv->phyaddr = fdtdec_get_int(gd->fdt_blob, offset, "reg", -1);
+       priv->phy_of_handle = fdtdec_lookup_phandle(gd->fdt_blob,
+                                       dev->of_offset, "phy-handle");
+       if (priv->phy_of_handle > 0)
+               priv->phyaddr = fdtdec_get_int(gd->fdt_blob,
+                                       priv->phy_of_handle, "reg", -1);
  
        phy_mode = fdt_getprop(gd->fdt_blob, dev->of_offset, "phy-mode", NULL);
        if (phy_mode)