Ticket #3782: 973-cpmac_scan_rework.patch

File 973-cpmac_scan_rework.patch, 1.9 KB (added by Wipster, 6 years ago)

Change the scanning

  • drivers/net/cpmac.c

    a b static int __devinit cpmac_probe(struct  
    11331133        if (phy_id < PHY_MAX_ADDR) 
    11341134                goto dev_alloc; 
    11351135 
    1136         dev_info(&pdev->dev, "trying external MII\n"); 
    1137         /* Now disable EPHY and enable MII */ 
    1138         ar7_device_disable(AR7_RESET_BIT_EPHY); 
    1139         *(unsigned long*) ioremap(0x08611A08, 4) |= 0x00000001; 
    1140  
    1141         for (phy_id = 0; phy_id < PHY_MAX_ADDR; phy_id++) { 
    1142                 if (!(pdata->phy_mask & (1 << phy_id))) 
    1143                         continue; 
    1144                 if (!cpmac_mii->phy_map[phy_id]) 
    1145                         continue; 
    1146                 strncpy(mdio_bus_id, cpmac_mii->id, MII_BUS_ID_SIZE); 
    1147                 break; 
    1148         } 
    1149  
    1150         if (phy_id < PHY_MAX_ADDR) 
    1151                 goto dev_alloc; 
    1152  
    11531136        /* This still does not work, so now we register a fixed phy */ 
    11541137        dev_info(&pdev->dev, "using fixed PHY\n"); 
    11551138        rc = fixed_phy_add(PHY_POLL, pdev->id, &fixed_phy_status); 
    int __devinit cpmac_init(void) 
    12871270                else 
    12881271                        msleep(10); 
    12891272 
    1290         cpmac_mii->phy_mask = ar7_is_titan()? ~(mask | 0x80000000 | 0x40000000): 
    1291                 ~(mask | 0x80000000); 
     1273        mask &= ar7_is_titan()? ~(0x80000000 | 0x40000000): 
     1274                ~(0x80000000); 
     1275 
     1276        if (mask) { 
     1277                printk(KERN_WARNING "cpmac: External PHY found, %s external switch\n", 
     1278                        (mask & (mask - 1)) ? "with" : "without"); 
     1279        } else { 
     1280                //No externals found try internal 
     1281                ar7_device_disable(AR7_RESET_BIT_EPHY); 
     1282                cpmac_mii->reset(cpmac_mii); 
     1283 
     1284                for (i = 0; i < 300; i++) 
     1285                        if ((mask = cpmac_read(cpmac_mii->priv, CPMAC_MDIO_ALIVE))) 
     1286                                break; 
     1287                        else 
     1288                                msleep(10); 
     1289 
     1290                printk(KERN_WARNING "cpmac: Internal PHY,%s found\n", (mask) ? "" : " not"); 
     1291        } 
     1292 
     1293        cpmac_mii->phy_mask = ~mask; 
    12921294        snprintf(cpmac_mii->id, MII_BUS_ID_SIZE, "1"); 
    12931295 
    12941296        res = mdiobus_register(cpmac_mii); 
  • arch/mips/ar7/platform.c

    a b static int __init ar7_register_devices(v 
    722722                else 
    723723                        cpmac_low_data.phy_mask = 0xffffffff; 
    724724 
     725                *(unsigned long*) ioremap(0x08611A08, 4) |= 0x00000001; 
    725726        } 
    726727 
    727728        cpmac_get_mac(0, ar7_is_titan() ? cpmac_low_data_titan.dev_addr :