Changeset 22994


Ignore:
Timestamp:
2010-09-10T01:21:41+02:00 (7 years ago)
Author:
jow
Message:

[backfire] merge r22702, r22703 and r22704

Location:
branches/backfire/target/linux/generic-2.6/files/drivers/net/phy
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.c

    r22857 r22994  
    449449} 
    450450 
     451static int rtl8366_enable_vlan(struct rtl8366_smi *smi, int enable) 
     452{ 
     453        int err; 
     454 
     455        err = smi->ops->enable_vlan(smi, enable); 
     456        if (err) 
     457                return err; 
     458 
     459        smi->vlan_enabled = enable; 
     460 
     461        if (!enable) { 
     462                smi->vlan4k_enabled = 0; 
     463                err = smi->ops->enable_vlan4k(smi, enable); 
     464        } 
     465 
     466        return err; 
     467} 
     468 
     469static int rtl8366_enable_vlan4k(struct rtl8366_smi *smi, int enable) 
     470{ 
     471        int err; 
     472 
     473        if (enable) { 
     474                err = smi->ops->enable_vlan(smi, enable); 
     475                if (err) 
     476                        return err; 
     477 
     478                smi->vlan_enabled = enable; 
     479        } 
     480 
     481        err = smi->ops->enable_vlan4k(smi, enable); 
     482        if (err) 
     483                return err; 
     484 
     485        smi->vlan4k_enabled = enable; 
     486        return 0; 
     487} 
     488 
    451489int rtl8366_reset_vlan(struct rtl8366_smi *smi) 
    452490{ 
     
    454492        int err; 
    455493        int i; 
     494 
     495        rtl8366_enable_vlan(smi, 0); 
     496        rtl8366_enable_vlan4k(smi, 0); 
    456497 
    457498        /* clear VLAN member configurations */ 
     
    932973EXPORT_SYMBOL_GPL(rtl8366_sw_set_vlan_ports); 
    933974 
     975int rtl8366_sw_get_vlan_enable(struct switch_dev *dev, 
     976                               const struct switch_attr *attr, 
     977                               struct switch_val *val) 
     978{ 
     979        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     980 
     981        if (attr->ofs > 2) 
     982                return -EINVAL; 
     983 
     984        if (attr->ofs == 1) 
     985                val->value.i = smi->vlan_enabled; 
     986        else 
     987                val->value.i = smi->vlan4k_enabled; 
     988 
     989        return 0; 
     990} 
     991EXPORT_SYMBOL_GPL(rtl8366_sw_get_vlan_enable); 
     992 
     993int rtl8366_sw_set_vlan_enable(struct switch_dev *dev, 
     994                               const struct switch_attr *attr, 
     995                               struct switch_val *val) 
     996{ 
     997        struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
     998        int err; 
     999 
     1000        if (attr->ofs > 2) 
     1001                return -EINVAL; 
     1002 
     1003        if (attr->ofs == 1) 
     1004                err = rtl8366_enable_vlan(smi, val->value.i); 
     1005        else 
     1006                err = rtl8366_enable_vlan4k(smi, val->value.i); 
     1007 
     1008        return err; 
     1009} 
     1010EXPORT_SYMBOL_GPL(rtl8366_sw_set_vlan_enable); 
     1011 
    9341012struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent) 
    9351013{ 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h

    r22677 r22994  
    4646        struct rtl8366_smi_ops  *ops; 
    4747 
     48        int                     vlan_enabled; 
     49        int                     vlan4k_enabled; 
     50 
    4851        char                    buf[4096]; 
    4952#ifdef CONFIG_RTL8366S_PHY_DEBUG_FS 
     
    8891                                   int port, unsigned long long *val); 
    8992        int     (*is_vlan_valid)(struct rtl8366_smi *smi, unsigned vlan); 
     93        int     (*enable_vlan)(struct rtl8366_smi *smi, int enable); 
     94        int     (*enable_vlan4k)(struct rtl8366_smi *smi, int enable); 
    9095}; 
    9196 
     
    118123int rtl8366_sw_get_vlan_ports(struct switch_dev *dev, struct switch_val *val); 
    119124int rtl8366_sw_set_vlan_ports(struct switch_dev *dev, struct switch_val *val); 
     125int rtl8366_sw_get_vlan_enable(struct switch_dev *dev, 
     126                               const struct switch_attr *attr, 
     127                               struct switch_val *val); 
     128int rtl8366_sw_set_vlan_enable(struct switch_dev *dev, 
     129                               const struct switch_attr *attr, 
     130                               struct switch_val *val); 
    120131 
    121132#endif /*  _RTL8366_SMI_H */ 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c

    r22677 r22994  
    555555static int rtl8366rb_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan) 
    556556{ 
    557         if (vlan == 0 || vlan >= RTL8366RB_NUM_VLANS) 
     557        unsigned max = RTL8366RB_NUM_VLANS; 
     558 
     559        if (smi->vlan4k_enabled) 
     560                max = RTL8366RB_NUM_VIDS - 1; 
     561 
     562        if (vlan == 0 || vlan >= max) 
    558563                return 0; 
    559564 
     
    561566} 
    562567 
    563 static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) 
     568static int rtl8366rb_enable_vlan(struct rtl8366_smi *smi, int enable) 
    564569{ 
    565570        return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_EN_VLAN, 
     
    567572} 
    568573 
    569 static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) 
     574static int rtl8366rb_enable_vlan4k(struct rtl8366_smi *smi, int enable) 
    570575{ 
    571576        return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, 
     
    584589} 
    585590 
    586 static int rtl8366rb_sw_get_vlan_enable(struct switch_dev *dev, 
    587                                        const struct switch_attr *attr, 
    588                                        struct switch_val *val) 
    589 { 
    590         struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
    591         u32 data; 
    592  
    593         if (attr->ofs == 1) { 
    594                 rtl8366_smi_read_reg(smi, RTL8366RB_SGCR, &data); 
    595  
    596                 if (data & RTL8366RB_SGCR_EN_VLAN) 
    597                         val->value.i = 1; 
    598                 else 
    599                         val->value.i = 0; 
    600         } else if (attr->ofs == 2) { 
    601                 rtl8366_smi_read_reg(smi, RTL8366RB_SGCR, &data); 
    602  
    603                 if (data & RTL8366RB_SGCR_EN_VLAN_4KTB) 
    604                         val->value.i = 1; 
    605                 else 
    606                         val->value.i = 0; 
    607         } 
    608  
    609         return 0; 
    610 } 
    611  
    612591static int rtl8366rb_sw_get_blinkrate(struct switch_dev *dev, 
    613592                                     const struct switch_attr *attr, 
     
    636615                                RTL8366RB_LED_BLINKRATE_MASK, 
    637616                                val->value.i); 
    638 } 
    639  
    640 static int rtl8366rb_sw_set_vlan_enable(struct switch_dev *dev, 
    641                                        const struct switch_attr *attr, 
    642                                        struct switch_val *val) 
    643 { 
    644         struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
    645  
    646         if (attr->ofs == 1) 
    647                 return rtl8366rb_vlan_set_vlan(smi, val->value.i); 
    648         else 
    649                 return rtl8366rb_vlan_set_4ktable(smi, val->value.i); 
    650617} 
    651618 
     
    823790                .name = "enable_vlan", 
    824791                .description = "Enable VLAN mode", 
    825                 .set = rtl8366rb_sw_set_vlan_enable, 
    826                 .get = rtl8366rb_sw_get_vlan_enable, 
     792                .set = rtl8366_sw_set_vlan_enable, 
     793                .get = rtl8366_sw_get_vlan_enable, 
    827794                .max = 1, 
    828795                .ofs = 1 
     
    831798                .name = "enable_vlan4k", 
    832799                .description = "Enable VLAN 4K mode", 
    833                 .set = rtl8366rb_sw_set_vlan_enable, 
    834                 .get = rtl8366rb_sw_get_vlan_enable, 
     800                .set = rtl8366_sw_set_vlan_enable, 
     801                .get = rtl8366_sw_get_vlan_enable, 
    835802                .max = 1, 
    836803                .ofs = 2 
     
    921888        dev->cpu_port = RTL8366RB_PORT_NUM_CPU; 
    922889        dev->ports = RTL8366RB_NUM_PORTS; 
    923         dev->vlans = RTL8366RB_NUM_VLANS; 
     890        dev->vlans = RTL8366RB_NUM_VIDS; 
    924891        dev->ops = &rtl8366_ops; 
    925892        dev->devname = dev_name(smi->parent); 
     
    1029996        .get_mib_counter = rtl8366rb_get_mib_counter, 
    1030997        .is_vlan_valid  = rtl8366rb_is_vlan_valid, 
     998        .enable_vlan    = rtl8366rb_enable_vlan, 
     999        .enable_vlan4k  = rtl8366rb_enable_vlan4k, 
    10311000}; 
    10321001 
  • branches/backfire/target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c

    r22677 r22994  
    580580} 
    581581 
    582 static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) 
     582static int rtl8366s_enable_vlan(struct rtl8366_smi *smi, int enable) 
    583583{ 
    584584        return rtl8366_smi_rmwr(smi, RTL8366S_SGCR, RTL8366S_SGCR_EN_VLAN, 
     
    586586} 
    587587 
    588 static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) 
     588static int rtl8366s_enable_vlan4k(struct rtl8366_smi *smi, int enable) 
    589589{ 
    590590        return rtl8366_smi_rmwr(smi, RTL8366S_VLAN_TB_CTRL_REG, 
     
    594594static int rtl8366s_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan) 
    595595{ 
    596         if (vlan == 0 || vlan >= RTL8366S_NUM_VLANS) 
     596        unsigned max = RTL8366S_NUM_VLANS; 
     597 
     598        if (smi->vlan4k_enabled) 
     599                max = RTL8366S_NUM_VIDS - 1; 
     600 
     601        if (vlan == 0 || vlan >= max) 
    597602                return 0; 
    598603 
     
    609614} 
    610615 
    611 static int rtl8366s_sw_get_vlan_enable(struct switch_dev *dev, 
    612                                        const struct switch_attr *attr, 
    613                                        struct switch_val *val) 
    614 { 
    615         struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
    616         u32 data; 
    617  
    618         if (attr->ofs == 1) { 
    619                 rtl8366_smi_read_reg(smi, RTL8366S_SGCR, &data); 
    620  
    621                 if (data & RTL8366S_SGCR_EN_VLAN) 
    622                         val->value.i = 1; 
    623                 else 
    624                         val->value.i = 0; 
    625         } else if (attr->ofs == 2) { 
    626                 rtl8366_smi_read_reg(smi, RTL8366S_VLAN_TB_CTRL_REG, &data); 
    627  
    628                 if (data & 0x0001) 
    629                         val->value.i = 1; 
    630                 else 
    631                         val->value.i = 0; 
    632         } 
    633  
    634         return 0; 
    635 } 
    636  
    637616static int rtl8366s_sw_get_blinkrate(struct switch_dev *dev, 
    638617                                     const struct switch_attr *attr, 
     
    661640                                RTL8366S_LED_BLINKRATE_MASK, 
    662641                                val->value.i); 
    663 } 
    664  
    665 static int rtl8366s_sw_set_vlan_enable(struct switch_dev *dev, 
    666                                        const struct switch_attr *attr, 
    667                                        struct switch_val *val) 
    668 { 
    669         struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); 
    670  
    671         if (attr->ofs == 1) 
    672                 return rtl8366s_vlan_set_vlan(smi, val->value.i); 
    673         else 
    674                 return rtl8366s_vlan_set_4ktable(smi, val->value.i); 
    675642} 
    676643 
     
    850817                .name = "enable_vlan", 
    851818                .description = "Enable VLAN mode", 
    852                 .set = rtl8366s_sw_set_vlan_enable, 
    853                 .get = rtl8366s_sw_get_vlan_enable, 
     819                .set = rtl8366_sw_set_vlan_enable, 
     820                .get = rtl8366_sw_get_vlan_enable, 
    854821                .max = 1, 
    855822                .ofs = 1 
     
    858825                .name = "enable_vlan4k", 
    859826                .description = "Enable VLAN 4K mode", 
    860                 .set = rtl8366s_sw_set_vlan_enable, 
    861                 .get = rtl8366s_sw_get_vlan_enable, 
     827                .set = rtl8366_sw_set_vlan_enable, 
     828                .get = rtl8366_sw_get_vlan_enable, 
    862829                .max = 1, 
    863830                .ofs = 2 
     
    948915        dev->cpu_port = RTL8366S_PORT_NUM_CPU; 
    949916        dev->ports = RTL8366S_NUM_PORTS; 
    950         dev->vlans = RTL8366S_NUM_VLANS; 
     917        dev->vlans = RTL8366S_NUM_VIDS; 
    951918        dev->ops = &rtl8366_ops; 
    952919        dev->devname = dev_name(smi->parent); 
     
    10561023        .get_mib_counter = rtl8366_get_mib_counter, 
    10571024        .is_vlan_valid  = rtl8366s_is_vlan_valid, 
     1025        .enable_vlan    = rtl8366s_enable_vlan, 
     1026        .enable_vlan4k  = rtl8366s_enable_vlan4k, 
    10581027}; 
    10591028 
Note: See TracChangeset for help on using the changeset viewer.