backfire: generic: rtl8366: add enable_port helper (backport of r24937)
authorGabor Juhos <juhosg@openwrt.org>
Fri, 14 Jan 2011 18:19:41 +0000 (18:19 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Fri, 14 Jan 2011 18:19:41 +0000 (18:19 +0000)
SVN-Revision: 24997

target/linux/generic-2.6/files/drivers/net/phy/rtl8366_smi.h
target/linux/generic-2.6/files/drivers/net/phy/rtl8366rb.c
target/linux/generic-2.6/files/drivers/net/phy/rtl8366s.c

index 12768a4455a7d7008ff75c896f35dad237c2bff0..7239cf9faf04bae92c54054c68cc7bd912198abe 100644 (file)
@@ -93,6 +93,7 @@ struct rtl8366_smi_ops {
        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);
+       int     (*enable_port)(struct rtl8366_smi *smi, int port, int enable);
 };
 
 struct rtl8366_smi *rtl8366_smi_alloc(struct device *parent);
index c991db8c16c5118e401474a13f7abd876ddf05d5..492ed25351be9c7594b8b20f3d3ab948e9e92087 100644 (file)
@@ -607,6 +607,12 @@ static int rtl8366rb_enable_vlan4k(struct rtl8366_smi *smi, int enable)
                                (enable) ? RTL8366RB_SGCR_EN_VLAN_4KTB : 0);
 }
 
+static int rtl8366rb_enable_port(struct rtl8366_smi *smi, int port, int enable)
+{
+       return rtl8366_smi_rmwr(smi, RTL8366RB_PECR, (1 << port),
+                               (enable) ? 0 : (1 << port));
+}
+
 static int rtl8366rb_sw_reset_mibs(struct switch_dev *dev,
                                  const struct switch_attr *attr,
                                  struct switch_val *val)
@@ -1214,6 +1220,7 @@ static struct rtl8366_smi_ops rtl8366rb_smi_ops = {
        .is_vlan_valid  = rtl8366rb_is_vlan_valid,
        .enable_vlan    = rtl8366rb_enable_vlan,
        .enable_vlan4k  = rtl8366rb_enable_vlan4k,
+       .enable_port    = rtl8366rb_enable_port,
 };
 
 static int __devinit rtl8366rb_probe(struct platform_device *pdev)
index 80a546a2d96bc48b9a63e015dd0381b745b030d2..2d472cfd3476fb8ab5d2fde80950e24e6f01b523 100644 (file)
@@ -605,6 +605,12 @@ static int rtl8366s_is_vlan_valid(struct rtl8366_smi *smi, unsigned vlan)
        return 1;
 }
 
+static int rtl8366s_enable_port(struct rtl8366_smi *smi, int port, int enable)
+{
+       return rtl8366_smi_rmwr(smi, RTL8366S_PECR, (1 << port),
+                               (enable) ? 0 : (1 << port));
+}
+
 static int rtl8366s_sw_reset_mibs(struct switch_dev *dev,
                                  const struct switch_attr *attr,
                                  struct switch_val *val)
@@ -1032,6 +1038,7 @@ static struct rtl8366_smi_ops rtl8366s_smi_ops = {
        .is_vlan_valid  = rtl8366s_is_vlan_valid,
        .enable_vlan    = rtl8366s_enable_vlan,
        .enable_vlan4k  = rtl8366s_enable_vlan4k,
+       .enable_port    = rtl8366s_enable_port,
 };
 
 static int __devinit rtl8366s_probe(struct platform_device *pdev)