Ticket #12386: 973-cpmac_fixup-for-a-non-switch.patch

File 973-cpmac_fixup-for-a-non-switch.patch, 1.2 KB (added by v-fox <virtuousfox@…>, 5 years ago)

patch for AA and trunk to revert to proper, K-like behaviour in cpmac's port detection

  • drivers/net/ethernet/ti/cpmac.c

    a b  
    11031103        .ndo_set_mac_address    = eth_mac_addr, 
    11041104}; 
    11051105 
    1106 static int external_switch; 
     1106static int external_switch, external_phy; 
    11071107 
    11081108static int __devinit cpmac_probe(struct platform_device *pdev) 
    11091109{ 
     
    11261126        } 
    11271127 
    11281128        if (phy_id == PHY_MAX_ADDR && pdev->id == 1) { 
    1129                 printk(KERN_ERR "cpmac: No PHY present, using fixed PHY\n"); 
    1130                 phy_id = pdev->id; 
    1131                 strncpy(mdio_bus_id, "fixed-0", MII_BUS_ID_SIZE); 
     1129                if (external_switch || external_phy) { 
     1130                        printk(KERN_ERR "cpmac: No PHY detected, using fixed PHY\n"); 
     1131                        phy_id = pdev->id; 
     1132                        strncpy(mdio_bus_id, "fixed-0", MII_BUS_ID_SIZE); 
     1133                } else { 
     1134                        printk(KERN_ERR "cpmac: No PHY detected, relying on internal PHY\n"); 
     1135                        return -ENODEV; 
     1136                } 
    11321137        } 
    11331138 
    11341139        dev = alloc_etherdev_mq(sizeof(*priv), CPMAC_QUEUES); 
     
    12811286 
    12821287        if (external_switch) 
    12831288                printk(KERN_INFO "EXTERNAL SWITCH!!!\n"); 
    1284         else if (mask) 
     1289        else if (mask) { 
     1290                external_phy = 1; 
    12851291                printk(KERN_INFO "EXTERNAL PHY!!!\n"); 
     1292                } 
    12861293        else 
    12871294                printk(KERN_INFO "INTERNAL PHY!!!\n"); 
    12881295