diff options
Diffstat (limited to 'target/linux/ixp4xx/patches-4.9/205-npe_driver_separate_phy_functions.patch')
-rw-r--r-- | target/linux/ixp4xx/patches-4.9/205-npe_driver_separate_phy_functions.patch | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/target/linux/ixp4xx/patches-4.9/205-npe_driver_separate_phy_functions.patch b/target/linux/ixp4xx/patches-4.9/205-npe_driver_separate_phy_functions.patch deleted file mode 100644 index cc77c5dddc..0000000000 --- a/target/linux/ixp4xx/patches-4.9/205-npe_driver_separate_phy_functions.patch +++ /dev/null @@ -1,127 +0,0 @@ -From e3eab80fb5d0a7d7fdb0f2f231b27161d5ec3804 Mon Sep 17 00:00:00 2001 -From: Jonas Gorski <jogo@openwrt.org> -Date: Sun, 30 Jun 2013 15:52:53 +0200 -Subject: [PATCH 23/36] 205-npe_driver_separate_phy_functions.patch - ---- - drivers/net/ethernet/xscale/ixp4xx_eth.c | 70 ++++++++++++++++++++++-------- - 1 file changed, 51 insertions(+), 19 deletions(-) - ---- a/drivers/net/ethernet/xscale/ixp4xx_eth.c -+++ b/drivers/net/ethernet/xscale/ixp4xx_eth.c -@@ -588,6 +588,51 @@ static void ixp4xx_adjust_link(struct ne - dev->name, port->speed, port->duplex ? "full" : "half"); - } - -+static int ixp4xx_phy_connect(struct net_device *dev) -+{ -+ struct port *port = netdev_priv(dev); -+ struct eth_plat_info *plat = port->plat; -+ char phy_id[MII_BUS_ID_SIZE + 3]; -+ -+ snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, -+ mdio_bus->id, plat->phy); -+ port->phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, -+ 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); -+ } -+ -+ /* mask with MAC supported features */ -+ port->phydev->supported &= PHY_BASIC_FEATURES; -+ port->phydev->advertising = port->phydev->supported; -+ -+ port->phydev->irq = PHY_POLL; -+ -+ return 0; -+} -+ -+static void ixp4xx_phy_disconnect(struct net_device *dev) -+{ -+ struct port *port = netdev_priv(dev); -+ -+ phy_disconnect(port->phydev); -+} -+ -+static void ixp4xx_phy_start(struct net_device *dev) -+{ -+ struct port *port = netdev_priv(dev); -+ -+ port->speed = 0; /* force "link up" message */ -+ phy_start(port->phydev); -+} -+ -+static void ixp4xx_phy_stop(struct net_device *dev) -+{ -+ struct port *port = netdev_priv(dev); -+ -+ phy_stop(port->phydev); -+} - - static inline void debug_pkt(struct net_device *dev, const char *func, - u8 *data, int len) -@@ -1242,8 +1287,7 @@ static int eth_open(struct net_device *d - return err; - } - -- port->speed = 0; /* force "link up" message */ -- phy_start(dev->phydev); -+ ixp4xx_phy_start(dev); - - for (i = 0; i < ETH_ALEN; i++) - __raw_writel(dev->dev_addr[i], &port->regs->hw_addr[i]); -@@ -1364,7 +1408,7 @@ static int eth_close(struct net_device * - printk(KERN_CRIT "%s: unable to disable loopback\n", - dev->name); - -- phy_stop(dev->phydev); -+ ixp4xx_phy_stop(dev); - - if (!ports_open) - qmgr_disable_irq(TXDONE_QUEUE); -@@ -1391,7 +1435,6 @@ static int eth_init_one(struct platform_ - struct eth_plat_info *plat = dev_get_platdata(&pdev->dev); - struct phy_device *phydev = NULL; - u32 regs_phys; -- char phy_id[MII_BUS_ID_SIZE + 3]; - int err; - - if (!(dev = alloc_etherdev(sizeof(struct port)))) -@@ -1449,16 +1492,9 @@ static int eth_init_one(struct platform_ - __raw_writel(DEFAULT_CORE_CNTRL, &port->regs->core_control); - udelay(50); - -- snprintf(phy_id, MII_BUS_ID_SIZE + 3, PHY_ID_FMT, -- mdio_bus->id, plat->phy); -- phydev = phy_connect(dev, phy_id, &ixp4xx_adjust_link, -- PHY_INTERFACE_MODE_MII); -- if (IS_ERR(phydev)) { -- err = PTR_ERR(phydev); -+ err = ixp4xx_phy_connect(dev); -+ if (err) - goto err_free_mem; -- } -- -- phydev->irq = PHY_POLL; - - if ((err = register_netdev(dev))) - goto err_phy_dis; -@@ -1469,7 +1505,7 @@ static int eth_init_one(struct platform_ - return 0; - - err_phy_dis: -- phy_disconnect(phydev); -+ ixp4xx_phy_disconnect(phydev); - err_free_mem: - npe_port_tab[NPE_ID(port->id)] = NULL; - release_resource(port->mem_res); -@@ -1487,7 +1523,7 @@ static int eth_remove_one(struct platfor - struct port *port = netdev_priv(dev); - - unregister_netdev(dev); -- phy_disconnect(phydev); -+ ixp4xx_phy_disconnect(phydev); - npe_port_tab[NPE_ID(port->id)] = NULL; - npe_release(port->npe); - release_resource(port->mem_res); |