ar71xx: reset the ethernet device before registration
[openwrt.git] / target / linux / ixp4xx / patches-2.6.30 / 205-npe_driver_separate_phy_functions.patch
index a7ce893..6120176 100644 (file)
@@ -73,7 +73,7 @@
  
        if (!ports_open)
                qmgr_disable_irq(TXDONE_QUEUE);
  
        if (!ports_open)
                qmgr_disable_irq(TXDONE_QUEUE);
-@@ -1149,7 +1195,6 @@ static int __devinit eth_init_one(struct
+@@ -1151,7 +1197,6 @@ static int __devinit eth_init_one(struct
        struct net_device *dev;
        struct eth_plat_info *plat = pdev->dev.platform_data;
        u32 regs_phys;
        struct net_device *dev;
        struct eth_plat_info *plat = pdev->dev.platform_data;
        u32 regs_phys;
        int err;
  
        if (!(dev = alloc_etherdev(sizeof(struct port))))
        int err;
  
        if (!(dev = alloc_etherdev(sizeof(struct port))))
-@@ -1212,22 +1257,9 @@ static int __devinit eth_init_one(struct
+@@ -1209,18 +1254,10 @@ static int __devinit eth_init_one(struct
        __raw_writel(DEFAULT_CORE_CNTRL, &port->regs->core_control);
        udelay(50);
  
 -      snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, "0", plat->phy);
 -      port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0,
 -                                 PHY_INTERFACE_MODE_MII);
        __raw_writel(DEFAULT_CORE_CNTRL, &port->regs->core_control);
        udelay(50);
  
 -      snprintf(phy_id, BUS_ID_SIZE, PHY_ID_FMT, "0", plat->phy);
 -      port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, 0,
 -                                 PHY_INTERFACE_MODE_MII);
--      if (IS_ERR(port->phydev)) {
--              printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name);
--              return PTR_ERR(port->phydev);
--      }
--
+-      if ((err = IS_ERR(port->phydev)))
++      err = ixp4xx_phy_connect(dev);
++      if (err)
+               goto err_free_mem;
 -      /* mask with MAC supported features */
 -      port->phydev->supported &= PHY_BASIC_FEATURES;
 -      port->phydev->advertising = port->phydev->supported;
 -
 -      port->phydev->irq = PHY_POLL;
 -
 -      /* mask with MAC supported features */
 -      port->phydev->supported &= PHY_BASIC_FEATURES;
 -      port->phydev->advertising = port->phydev->supported;
 -
 -      port->phydev->irq = PHY_POLL;
 -
--      printk(KERN_INFO "%s: MII PHY %i on %s\n", dev->name, plat->phy,
--             npe_name(port->npe));
-+      err = ixp4xx_phy_connect(dev);
-+      if (err)
-+              goto err_unreg;
-       return 0;
+       if ((err = register_netdev(dev)))
+               goto err_phy_dis;
  
  
-@@ -1245,7 +1277,7 @@ static int __devexit eth_remove_one(stru
+@@ -1247,7 +1284,7 @@ static int __devexit eth_remove_one(stru
        struct net_device *dev = platform_get_drvdata(pdev);
        struct port *port = netdev_priv(dev);
  
 -      phy_disconnect(port->phydev);
 +      ixp4xx_phy_disconnect(dev);
        unregister_netdev(dev);
        struct net_device *dev = platform_get_drvdata(pdev);
        struct port *port = netdev_priv(dev);
  
 -      phy_disconnect(port->phydev);
 +      ixp4xx_phy_disconnect(dev);
        unregister_netdev(dev);
+       phy_disconnect(port->phydev);
        npe_port_tab[NPE_ID(port->id)] = NULL;
        npe_port_tab[NPE_ID(port->id)] = NULL;
-       platform_set_drvdata(pdev, NULL);
This page took 0.025716 seconds and 4 git commands to generate.