Changeset 20358


Ignore:
Timestamp:
2010-03-21T19:16:07+01:00 (8 years ago)
Author:
juhosg
Message:

ar71xx: change PHY select logic, and update phy_masks

Location:
trunk/target/linux/ar71xx/files
Files:
22 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/dev-ap91-eth.c

    r20095 r20358  
    4949        /* WAN port */ 
    5050        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    51         ar71xx_eth0_data.phy_mask = 0x0; 
    5251        ar71xx_eth0_data.speed = SPEED_100; 
    5352        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
     
    5857        /* LAN ports */ 
    5958        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    60         ar71xx_eth1_data.phy_mask = 0x0; 
    6159        ar71xx_eth1_data.speed = SPEED_1000; 
    6260        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap81.c

    r19116 r20358  
    114114 
    115115        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    116         ar71xx_eth0_data.phy_mask = 0xf; 
    117116        ar71xx_eth0_data.speed = SPEED_100; 
    118117        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ap83.c

    r19116 r20358  
    207207 
    208208        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    209         ar71xx_eth1_data.phy_mask = 0x0; 
    210209        ar71xx_eth1_data.speed = SPEED_1000; 
    211210        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-aw-nr580.c

    r19116 r20358  
    8181 
    8282        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    83         ar71xx_eth0_data.phy_mask = 0xf; 
    8483        ar71xx_eth0_data.speed = SPEED_100; 
    8584        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-dir-615-c1.c

    r19116 r20358  
    145145 
    146146        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    147         ar71xx_eth0_data.phy_mask = 0xf; 
    148147        ar71xx_eth0_data.speed = SPEED_100; 
    149148        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-mzk-w04nu.c

    r19116 r20358  
    136136 
    137137        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    138         ar71xx_eth0_data.phy_mask = 0xf; 
    139138        ar71xx_eth0_data.speed = SPEED_100; 
    140139        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-mzk-w300nh.c

    r19116 r20358  
    135135 
    136136        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    137         ar71xx_eth0_data.phy_mask = 0xf; 
    138137        ar71xx_eth0_data.speed = SPEED_100; 
    139138        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-pb42.c

    r19116 r20358  
    5656 
    5757        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    58         ar71xx_eth1_data.phy_mask = PB42_LAN_PHYMASK; 
    5958        ar71xx_eth1_data.speed = SPEED_100; 
    6059        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-pb44.c

    r19116 r20358  
    180180 
    181181        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    182         ar71xx_eth1_data.phy_mask = PB44_LAN_PHYMASK; 
    183182        ar71xx_eth1_data.speed = SPEED_1000; 
    184183        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-rb4xx.c

    r20027 r20358  
    178178        rb4xx_add_device_spi(); 
    179179 
    180         ar71xx_add_device_mdio(0xfffffffe); 
    181  
    182         ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    183         ar71xx_eth0_data.phy_mask = 0x00000001; 
     180        ar71xx_add_device_mdio(0xfffffffc); 
     181 
     182        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
     183        ar71xx_eth0_data.phy_mask = 0x00000003; 
    184184 
    185185        ar71xx_add_device_eth(0); 
     
    217217 
    218218        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    219         ar71xx_eth0_data.phy_mask = 0x00000006; 
    220219        ar71xx_eth0_data.speed = SPEED_100; 
    221220        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
     
    250249 
    251250        ar71xx_eth0_data.phy_if_mode = (gige) ? PHY_INTERFACE_MODE_RGMII : PHY_INTERFACE_MODE_MII; 
    252         ar71xx_eth0_data.phy_mask = 0x0000000f; 
    253251        ar71xx_eth0_data.speed = (gige) ? SPEED_1000 : SPEED_100; 
    254252        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
     
    285283 
    286284        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    287         ar71xx_eth0_data.phy_mask = 0; 
    288285        ar71xx_eth0_data.speed = SPEED_100; 
    289286        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tew-632brp.c

    r19116 r20358  
    121121 
    122122        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    123         ar71xx_eth0_data.phy_mask = 0xf; 
    124123        ar71xx_eth0_data.speed = SPEED_100; 
    125124        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr1043nd.c

    r19839 r20358  
    131131        ar71xx_eth0_data.mii_bus_dev = &tl_wr1043nd_rtl8366rb_device.dev; 
    132132        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    133         ar71xx_eth0_data.phy_mask = 0x0; 
    134133        ar71xx_eth0_data.speed = SPEED_1000; 
    135134        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr841n.c

    r19116 r20358  
    121121 
    122122        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    123         ar71xx_eth0_data.phy_mask = 0x0; 
    124123        ar71xx_eth0_data.speed = SPEED_100; 
    125124        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-tl-wr941nd.c

    r19116 r20358  
    122122 
    123123        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    124         ar71xx_eth0_data.phy_mask = 0x0; 
    125124        ar71xx_eth0_data.speed = SPEED_100; 
    126125        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-ubnt.c

    r19116 r20358  
    137137#define UBNT_RS_LAN_PHYMASK     ((1 << 16) | (1 << 17) | (1 << 18) | (1 << 19)) 
    138138 
     139static void __init ubnt_rs_setup(void) 
     140{ 
     141        ubnt_generic_setup(); 
     142 
     143        ar71xx_add_device_mdio(~(UBNT_RS_WAN_PHYMASK | UBNT_RS_LAN_PHYMASK)); 
     144 
     145        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
     146        ar71xx_eth0_data.phy_mask = UBNT_RS_WAN_PHYMASK; 
     147 
     148        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
     149        ar71xx_eth1_data.speed = SPEED_100; 
     150        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
     151 
     152        ar71xx_add_device_eth(0); 
     153        ar71xx_add_device_eth(1); 
     154 
     155        ar71xx_add_device_usb(); 
     156 
     157        ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(ubnt_rs_leds_gpio), 
     158                                        ubnt_rs_leds_gpio); 
     159} 
     160 
     161MIPS_MACHINE(AR71XX_MACH_UBNT_RS, "UBNT-RS", "Ubiquiti RouterStation", 
     162             ubnt_rs_setup); 
     163 
     164MIPS_MACHINE(AR71XX_MACH_UBNT_AR71XX, "Ubiquiti AR71xx-based board", 
     165             "Ubiquiti RouterStation", ubnt_rs_setup); 
     166 
    139167#define UBNT_RSPRO_WAN_PHYMASK  (1 << 4) 
    140168#define UBNT_RSPRO_LAN_PHYMASK  ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 3)) 
    141169 
    142 static void __init ubnt_rs_setup(void) 
    143 { 
    144         ubnt_generic_setup(); 
    145  
    146         ar71xx_add_device_mdio(~(UBNT_RS_WAN_PHYMASK | UBNT_RS_LAN_PHYMASK)); 
    147  
    148         ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    149         ar71xx_eth0_data.phy_mask = UBNT_RS_WAN_PHYMASK; 
    150  
    151         ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    152         ar71xx_eth1_data.phy_mask = UBNT_RS_LAN_PHYMASK; 
    153  
    154         ar71xx_eth1_data.speed = SPEED_100; 
     170static void __init ubnt_rspro_setup(void) 
     171{ 
     172        ubnt_generic_setup(); 
     173 
     174        ar71xx_add_device_mdio(~(UBNT_RSPRO_WAN_PHYMASK | UBNT_RSPRO_LAN_PHYMASK)); 
     175 
     176        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
     177        ar71xx_eth0_data.phy_mask = UBNT_RSPRO_WAN_PHYMASK; 
     178 
     179        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
     180        ar71xx_eth1_data.speed = SPEED_1000; 
    155181        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
    156182 
     
    164190} 
    165191 
    166 MIPS_MACHINE(AR71XX_MACH_UBNT_RS, "UBNT-RS", "Ubiquiti RouterStation", 
    167              ubnt_rs_setup); 
    168  
    169 MIPS_MACHINE(AR71XX_MACH_UBNT_AR71XX, "Ubiquiti AR71xx-based board", 
    170              "Ubiquiti RouterStation", ubnt_rs_setup); 
    171  
    172 static void __init ubnt_rspro_setup(void) 
    173 { 
    174         ubnt_generic_setup(); 
    175  
    176         ar71xx_add_device_mdio(~(UBNT_RSPRO_WAN_PHYMASK | UBNT_RSPRO_LAN_PHYMASK)); 
    177  
    178         ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    179         ar71xx_eth0_data.phy_mask = UBNT_RSPRO_WAN_PHYMASK; 
    180  
    181         ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    182         ar71xx_eth1_data.phy_mask = UBNT_RSPRO_LAN_PHYMASK; 
    183  
    184         ar71xx_eth1_data.speed = SPEED_1000; 
    185         ar71xx_eth1_data.duplex = DUPLEX_FULL; 
    186  
    187         ar71xx_add_device_eth(0); 
    188         ar71xx_add_device_eth(1); 
    189  
    190         ar71xx_add_device_usb(); 
    191  
    192         ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(ubnt_rs_leds_gpio), 
    193                                         ubnt_rs_leds_gpio); 
    194 } 
    195  
    196192MIPS_MACHINE(AR71XX_MACH_UBNT_RSPRO, "UBNT-RSPRO", "Ubiquiti RouterStation Pro", 
    197193             ubnt_rspro_setup); 
     
    236232 
    237233        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    238         ar71xx_eth0_data.phy_mask = 0; 
    239234        ar71xx_eth0_data.speed = SPEED_100; 
    240235        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
     
    273268 
    274269        ar71xx_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    275         ar71xx_eth1_data.phy_mask = 0; 
    276270        ar71xx_eth1_data.speed = SPEED_1000; 
    277271        ar71xx_eth1_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wndr3700.c

    r19744 r20358  
    174174        ar71xx_eth0_data.mii_bus_dev = &wndr3700_rtl8366s_device.dev; 
    175175        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    176         ar71xx_eth0_data.phy_mask = 0xf; 
    177176        ar71xx_eth0_data.speed = SPEED_1000; 
    178177        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wnr2000.c

    r19116 r20358  
    123123 
    124124        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    125         ar71xx_eth0_data.phy_mask = 0xf; 
    126125        ar71xx_eth0_data.speed = SPEED_100; 
    127126        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wp543.c

    r19116 r20358  
    8080 
    8181        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII; 
    82         ar71xx_eth0_data.phy_mask = 0x00000008; 
     82        ar71xx_eth0_data.phy_mask = 0x08; 
    8383        ar71xx_eth0_data.reset_bit = RESET_MODULE_GE0_MAC | 
    8484                                     RESET_MODULE_GE0_PHY; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wrt400n.c

    r19116 r20358  
    144144 
    145145        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RMII; 
    146         ar71xx_eth0_data.phy_mask = 0xf; 
    147146        ar71xx_eth0_data.speed = SPEED_100; 
    148147        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/arch/mips/ar71xx/mach-wzr-hp-g300nh.c

    r19279 r20358  
    235235        ar71xx_eth0_data.mii_bus_dev = &wzrhpg300nh_rtl8366s_device.dev; 
    236236        ar71xx_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_RGMII; 
    237         ar71xx_eth0_data.phy_mask = 0xf; 
    238237        ar71xx_eth0_data.speed = SPEED_1000; 
    239238        ar71xx_eth0_data.duplex = DUPLEX_FULL; 
  • trunk/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h

    r20092 r20358  
    3939 
    4040#define AG71XX_DRV_NAME         "ag71xx" 
    41 #define AG71XX_DRV_VERSION      "0.5.32" 
     41#define AG71XX_DRV_VERSION      "0.5.33" 
    4242 
    4343#define AG71XX_NAPI_WEIGHT      64 
  • trunk/target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_phy.c

    r20003 r20358  
    4848                phy_start(ag->phy_dev); 
    4949        } else { 
    50                 struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); 
    51  
    52                 ag->duplex = pdata->duplex; 
    53                 ag->speed = pdata->speed; 
    5450                ag->link = 1; 
    5551                ag71xx_link_adjust(ag); 
     
    6258                phy_stop(ag->phy_dev); 
    6359        } else { 
    64                 ag->duplex = -1; 
    6560                ag->link = 0; 
    66                 ag->speed = 0; 
    6761                ag71xx_link_adjust(ag); 
    6862        } 
     
    8276                break; 
    8377        default: 
    84                 printk(KERN_ERR "%s: invalid speed specified\n", 
    85                         dev->name); 
     78                printk(KERN_ERR "%s: invalid speed specified\n", dev->name); 
    8679                ret = -EINVAL; 
    8780                break; 
    8881        } 
     82 
     83        printk(KERN_DEBUG "%s: using fixed link parameters\n", dev->name); 
     84 
     85        ag->duplex = pdata->duplex; 
     86        ag->speed = pdata->speed; 
    8987 
    9088        return ret; 
     
    9694        struct ag71xx_platform_data *pdata = ag71xx_get_pdata(ag); 
    9795        struct phy_device *phydev = NULL; 
    98         int phy_count = 0; 
    9996        int phy_addr; 
    10097        int ret = 0; 
     
    114111                if (phydev == NULL) 
    115112                        phydev = ag->mii_bus->phy_map[phy_addr]; 
    116  
    117                 phy_count++; 
    118         } 
    119  
    120         switch (phy_count) { 
    121         case 0: 
     113        } 
     114 
     115        if (!phydev) { 
    122116                printk(KERN_ERR "%s: no PHY found with phy_mask=%08x\n", 
    123117                        dev->name, pdata->phy_mask); 
    124                 ret = -ENODEV; 
    125                 break; 
    126         case 1: 
    127                 ag->phy_dev = phy_connect(dev, dev_name(&phydev->dev), 
    128                         &ag71xx_phy_link_adjust, 0, pdata->phy_if_mode); 
    129  
    130                 if (IS_ERR(ag->phy_dev)) { 
    131                         printk(KERN_ERR "%s: could not connect to PHY at %s\n", 
    132                                 dev->name, dev_name(&phydev->dev)); 
    133                         return PTR_ERR(ag->phy_dev); 
    134                 } 
    135  
    136                 /* mask with MAC supported features */ 
    137                 if (pdata->has_gbit) 
    138                         phydev->supported &= PHY_GBIT_FEATURES; 
    139                 else 
    140                         phydev->supported &= PHY_BASIC_FEATURES; 
    141  
    142                 phydev->advertising = phydev->supported; 
    143  
    144                 printk(KERN_DEBUG "%s: connected to PHY at %s " 
    145                         "[uid=%08x, driver=%s]\n", 
    146                         dev->name, dev_name(&phydev->dev), 
    147                         phydev->phy_id, phydev->drv->name); 
    148  
    149                 ag->link = 0; 
    150                 ag->speed = 0; 
    151                 ag->duplex = -1; 
    152                 break; 
    153  
    154         default: 
    155                 printk(KERN_DEBUG "%s: connected to %d PHYs\n", 
    156                         dev->name, phy_count); 
    157                 ret = ag71xx_phy_connect_fixed(ag); 
    158                 break; 
    159         } 
     118                return -ENODEV; 
     119        } 
     120 
     121        ag->phy_dev = phy_connect(dev, dev_name(&phydev->dev), 
     122                                  &ag71xx_phy_link_adjust, 0, 
     123                                  pdata->phy_if_mode); 
     124 
     125        if (IS_ERR(ag->phy_dev)) { 
     126                printk(KERN_ERR "%s: could not connect to PHY at %s\n", 
     127                        dev->name, dev_name(&phydev->dev)); 
     128                return PTR_ERR(ag->phy_dev); 
     129        } 
     130 
     131        /* mask with MAC supported features */ 
     132        if (pdata->has_gbit) 
     133                phydev->supported &= PHY_GBIT_FEATURES; 
     134        else 
     135                phydev->supported &= PHY_BASIC_FEATURES; 
     136 
     137        phydev->advertising = phydev->supported; 
     138 
     139        printk(KERN_DEBUG "%s: connected to PHY at %s [uid=%08x, driver=%s]\n", 
     140                dev->name, dev_name(&phydev->dev), 
     141                phydev->phy_id, phydev->drv->name); 
     142 
     143        ag->link = 0; 
     144        ag->speed = 0; 
     145        ag->duplex = -1; 
    160146 
    161147        return ret; 
Note: See TracChangeset for help on using the changeset viewer.