generic: rtl8366: add enable_vlan{,4k} to smi_ops

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@22702 3c298f89-4303-0410-b956-a3cf2f4a3e73
master
Gabor Juhos 2010-08-18 16:00:34 +00:00
parent 8c2be2e3b5
commit 9b84518158
3 changed files with 14 additions and 8 deletions

View File

@ -87,6 +87,8 @@ struct rtl8366_smi_ops {
int (*get_mib_counter)(struct rtl8366_smi *smi, int counter, int (*get_mib_counter)(struct rtl8366_smi *smi, int counter,
int port, unsigned long long *val); int port, unsigned long long *val);
int (*is_vlan_valid)(struct rtl8366_smi *smi, unsigned vlan); int (*is_vlan_valid)(struct rtl8366_smi *smi, unsigned vlan);
int (*enable_vlan)(struct rtl8366_smi *smi, int enable);
int (*enable_vlan4k)(struct rtl8366_smi *smi, int enable);
}; };
struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent); struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent);

View File

@ -560,13 +560,13 @@ static int rtl8366rb_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan)
return 1; return 1;
} }
static int rtl8366rb_vlan_set_vlan(struct rtl8366_smi *smi, int enable) static int rtl8366rb_enable_vlan(struct rtl8366_smi *smi, int enable)
{ {
return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_EN_VLAN, return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, RTL8366RB_SGCR_EN_VLAN,
(enable) ? RTL8366RB_SGCR_EN_VLAN : 0); (enable) ? RTL8366RB_SGCR_EN_VLAN : 0);
} }
static int rtl8366rb_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) static int rtl8366rb_enable_vlan4k(struct rtl8366_smi *smi, int enable)
{ {
return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR, return rtl8366_smi_rmwr(smi, RTL8366RB_SGCR,
RTL8366RB_SGCR_EN_VLAN_4KTB, RTL8366RB_SGCR_EN_VLAN_4KTB,
@ -644,9 +644,9 @@ static int rtl8366rb_sw_set_vlan_enable(struct switch_dev *dev,
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
if (attr->ofs == 1) if (attr->ofs == 1)
return rtl8366rb_vlan_set_vlan(smi, val->value.i); return rtl8366rb_enable_vlan(smi, val->value.i);
else else
return rtl8366rb_vlan_set_4ktable(smi, val->value.i); return rtl8366rb_enable_vlan4k(smi, val->value.i);
} }
static int rtl8366rb_sw_get_learning_enable(struct switch_dev *dev, static int rtl8366rb_sw_get_learning_enable(struct switch_dev *dev,
@ -1028,6 +1028,8 @@ static struct rtl8366_smi_ops rtl8366rb_smi_ops = {
.set_mc_index = rtl8366rb_set_mc_index, .set_mc_index = rtl8366rb_set_mc_index,
.get_mib_counter = rtl8366rb_get_mib_counter, .get_mib_counter = rtl8366rb_get_mib_counter,
.is_vlan_valid = rtl8366rb_is_vlan_valid, .is_vlan_valid = rtl8366rb_is_vlan_valid,
.enable_vlan = rtl8366rb_enable_vlan,
.enable_vlan4k = rtl8366rb_enable_vlan4k,
}; };
static int __init rtl8366rb_probe(struct platform_device *pdev) static int __init rtl8366rb_probe(struct platform_device *pdev)

View File

@ -579,13 +579,13 @@ static int rtl8366s_set_mc_index(struct rtl8366_smi *smi, int port, int index)
RTL8366S_PORT_VLAN_CTRL_SHIFT(port)); RTL8366S_PORT_VLAN_CTRL_SHIFT(port));
} }
static int rtl8366s_vlan_set_vlan(struct rtl8366_smi *smi, int enable) static int rtl8366s_enable_vlan(struct rtl8366_smi *smi, int enable)
{ {
return rtl8366_smi_rmwr(smi, RTL8366S_SGCR, RTL8366S_SGCR_EN_VLAN, return rtl8366_smi_rmwr(smi, RTL8366S_SGCR, RTL8366S_SGCR_EN_VLAN,
(enable) ? RTL8366S_SGCR_EN_VLAN : 0); (enable) ? RTL8366S_SGCR_EN_VLAN : 0);
} }
static int rtl8366s_vlan_set_4ktable(struct rtl8366_smi *smi, int enable) static int rtl8366s_enable_vlan4k(struct rtl8366_smi *smi, int enable)
{ {
return rtl8366_smi_rmwr(smi, RTL8366S_VLAN_TB_CTRL_REG, return rtl8366_smi_rmwr(smi, RTL8366S_VLAN_TB_CTRL_REG,
1, (enable) ? 1 : 0); 1, (enable) ? 1 : 0);
@ -669,9 +669,9 @@ static int rtl8366s_sw_set_vlan_enable(struct switch_dev *dev,
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev); struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
if (attr->ofs == 1) if (attr->ofs == 1)
return rtl8366s_vlan_set_vlan(smi, val->value.i); return rtl8366s_enable_vlan(smi, val->value.i);
else else
return rtl8366s_vlan_set_4ktable(smi, val->value.i); return rtl8366s_enable_vlan4k(smi, val->value.i);
} }
static int rtl8366s_sw_get_learning_enable(struct switch_dev *dev, static int rtl8366s_sw_get_learning_enable(struct switch_dev *dev,
@ -1055,6 +1055,8 @@ static struct rtl8366_smi_ops rtl8366s_smi_ops = {
.set_mc_index = rtl8366s_set_mc_index, .set_mc_index = rtl8366s_set_mc_index,
.get_mib_counter = rtl8366_get_mib_counter, .get_mib_counter = rtl8366_get_mib_counter,
.is_vlan_valid = rtl8366s_is_vlan_valid, .is_vlan_valid = rtl8366s_is_vlan_valid,
.enable_vlan = rtl8366s_enable_vlan,
.enable_vlan4k = rtl8366s_enable_vlan4k,
}; };
static int __init rtl8366s_probe(struct platform_device *pdev) static int __init rtl8366s_probe(struct platform_device *pdev)