Changeset 10374


Ignore:
Timestamp:
2008-02-03T19:00:46+01:00 (10 years ago)
Author:
nbd
Message:

implement ar2313_adjust_link

Location:
trunk/target/linux/atheros/files/drivers/net/ar2313
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/atheros/files/drivers/net/ar2313/ar2313.c

    r10335 r10374  
    12941294static void ar2313_adjust_link(struct net_device *dev) 
    12951295{ 
    1296         printk(KERN_ERR " ar2313_adjust_link implementation missing\n"); 
     1296        struct ar2313_private *sp = dev->priv; 
     1297        unsigned int mc; 
     1298 
     1299        if (!sp->phy_dev->link) 
     1300                return; 
     1301 
     1302        if (sp->phy_dev->duplex != sp->oldduplex) { 
     1303                mc = readl(&sp->eth_regs->mac_control); 
     1304                mc &= ~(MAC_CONTROL_F | MAC_CONTROL_DRO); 
     1305                if (sp->phy_dev->duplex) 
     1306                        mc |= MAC_CONTROL_F; 
     1307                else 
     1308                        mc |= MAC_CONTROL_DRO; 
     1309                writel(mc, &sp->eth_regs->mac_control); 
     1310                sp->oldduplex = sp->phy_dev->duplex; 
     1311        } 
    12971312} 
    12981313 
     
    13321347 
    13331348        ar2313_reset_reg(dev); 
    1334          
     1349 
    13351350        return 0; 
    13361351} 
     
    13481363                        break; /* break out with first one found */ 
    13491364                } 
    1350          
     1365 
    13511366        if (!phydev) { 
    13521367                printk (KERN_ERR "ar2313:%s: no PHY found\n", dev->name); 
    13531368                return -1; 
    13541369        } 
    1355          
     1370 
    13561371        /* now we are supposed to have a proper phydev, to attach to... */ 
    13571372        BUG_ON(!phydev); 
    13581373        BUG_ON(phydev->attached_dev); 
    1359          
     1374 
    13601375        phydev = phy_connect(dev, phydev->dev.bus_id, &ar2313_adjust_link, 0, 
    13611376                PHY_INTERFACE_MODE_MII); 
    1362          
     1377 
    13631378        if (IS_ERR(phydev)) { 
    13641379                printk(KERN_ERR "%s: Could not attach to PHY\n", dev->name); 
     
    13751390                | SUPPORTED_MII 
    13761391                | SUPPORTED_TP); 
    1377          
     1392 
    13781393        phydev->advertising = phydev->supported; 
    1379          
    1380         //sp->old_link = 0; 
    1381         //sp->old_speed = 0; 
    1382         //sp->old_duplex = -1; 
     1394 
     1395        sp->oldduplex = -1; 
    13831396        sp->phy_dev = phydev; 
    1384          
     1397 
    13851398        printk(KERN_INFO "%s: attached PHY driver [%s] " 
    13861399                "(mii_bus:phy_addr=%s)\n", 
    13871400                dev->name, phydev->drv->name, phydev->dev.bus_id); 
    1388          
     1401 
    13891402        return 0; 
    13901403} 
  • trunk/target/linux/atheros/files/drivers/net/ar2313/ar2313.h

    r9299 r10374  
    165165        struct phy_device *phy_dev; 
    166166        struct mii_bus mii_bus; 
     167        int oldduplex; 
    167168}; 
    168169 
Note: See TracChangeset for help on using the changeset viewer.