Ignore:
Timestamp:
2012-03-07T17:32:40+01:00 (5 years ago)
Author:
juhosg
Message:

generic: rtl8367: use the generic get_port_link implementation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/target/linux/generic/files/drivers/net/phy/rtl8367.c

    r29678 r30844  
    13771377} 
    13781378 
    1379 static const char *rtl8367_speed_str(unsigned speed) 
    1380 { 
    1381         switch (speed) { 
    1382         case RTL8367_PORT_STATUS_SPEED_10: 
    1383                 return "10baseT"; 
    1384         case RTL8367_PORT_STATUS_SPEED_100: 
    1385                 return "100baseT"; 
    1386         case RTL8367_PORT_STATUS_SPEED_1000: 
    1387                 return "1000baseT"; 
    1388         } 
    1389  
    1390         return "unknown"; 
    1391 } 
    1392  
    13931379static int rtl8367_sw_get_port_link(struct switch_dev *dev, 
    1394                                      const struct switch_attr *attr, 
    1395                                      struct switch_val *val) 
     1380                                    int port, 
     1381                                    struct switch_port_link *link) 
    13961382{ 
    13971383        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
    1398         u32 len = 0, data = 0; 
    1399         int port; 
    1400  
    1401         port = val->port_vlan; 
     1384        u32 data = 0; 
     1385        u32 speed; 
     1386 
    14021387        if (port >= RTL8367_NUM_PORTS) 
    14031388                return -EINVAL; 
    14041389 
    1405         memset(smi->buf, '\0', sizeof(smi->buf)); 
    14061390        rtl8366_smi_read_reg(smi, RTL8367_PORT_STATUS_REG(port), &data); 
    14071391 
    1408         if (data & RTL8367_PORT_STATUS_LINK) { 
    1409                 len = snprintf(smi->buf, sizeof(smi->buf), 
    1410                                 "port:%d link:up speed:%s %s-duplex %s%s%s", 
    1411                                 port, 
    1412                                 rtl8367_speed_str(data & 
    1413                                           RTL8367_PORT_STATUS_SPEED_MASK), 
    1414                                 (data & RTL8367_PORT_STATUS_DUPLEX) ? 
    1415                                         "full" : "half", 
    1416                                 (data & RTL8367_PORT_STATUS_TXPAUSE) ? 
    1417                                         "tx-pause ": "", 
    1418                                 (data & RTL8367_PORT_STATUS_RXPAUSE) ? 
    1419                                         "rx-pause " : "", 
    1420                                 (data & RTL8367_PORT_STATUS_NWAY) ? 
    1421                                         "nway ": ""); 
    1422         } else { 
    1423                 len = snprintf(smi->buf, sizeof(smi->buf), "port:%d link:down", 
    1424                                 port); 
     1392        link->link = !!(data & RTL8367_PORT_STATUS_LINK); 
     1393        if (!link->link) 
     1394                return 0; 
     1395 
     1396        link->duplex = !!(data & RTL8367_PORT_STATUS_DUPLEX); 
     1397        link->rx_flow = !!(data & RTL8367_PORT_STATUS_RXPAUSE); 
     1398        link->tx_flow = !!(data & RTL8367_PORT_STATUS_TXPAUSE); 
     1399        link->aneg = !!(data & RTL8367_PORT_STATUS_NWAY); 
     1400 
     1401        speed = (data & RTL8367_PORT_STATUS_SPEED_MASK); 
     1402        switch (speed) { 
     1403        case 0: 
     1404                link->speed = SWITCH_PORT_SPEED_10; 
     1405                break; 
     1406        case 1: 
     1407                link->speed = SWITCH_PORT_SPEED_100; 
     1408                break; 
     1409        case 2: 
     1410                link->speed = SWITCH_PORT_SPEED_1000; 
     1411                break; 
     1412        default: 
     1413                link->speed = SWITCH_PORT_SPEED_UNKNOWN; 
     1414                break; 
    14251415        } 
    1426  
    1427         val->value.s = smi->buf; 
    1428         val->len = len; 
    14291416 
    14301417        return 0; 
     
    15491536static struct switch_attr rtl8367_port[] = { 
    15501537        { 
    1551                 .type = SWITCH_TYPE_STRING, 
    1552                 .name = "link", 
    1553                 .description = "Get port link information", 
    1554                 .max = 1, 
    1555                 .set = NULL, 
    1556                 .get = rtl8367_sw_get_port_link, 
    1557         }, { 
    15581538                .type = SWITCH_TYPE_NOVAL, 
    15591539                .name = "reset_mib", 
     
    16001580        .set_port_pvid = rtl8366_sw_set_port_pvid, 
    16011581        .reset_switch = rtl8367_sw_reset_switch, 
     1582        .get_port_link = rtl8367_sw_get_port_link, 
    16021583}; 
    16031584 
Note: See TracChangeset for help on using the changeset viewer.