aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2011-01-08 20:24:22 +0000
committerGabor Juhos <juhosg@openwrt.org>2011-01-08 20:24:22 +0000
commit0bcc97ac2615b620a40f2df96a6c674a0139e78f (patch)
tree3ee9451e8bf5de31777f0a9b2ea74385e5162590
parent512066051296fa4e0c0bc212a1905d3630248267 (diff)
downloadupstream-0bcc97ac2615b620a40f2df96a6c674a0139e78f.tar.gz
upstream-0bcc97ac2615b620a40f2df96a6c674a0139e78f.tar.bz2
upstream-0bcc97ac2615b620a40f2df96a6c674a0139e78f.zip
generic: rtl8366: add enable_port helper
SVN-Revision: 24937
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366_smi.h1
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366rb.c7
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366s.c7
3 files changed, 15 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
index 12768a4455..7239cf9faf 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.h
@@ -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);
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
index c991db8c16..492ed25351 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366rb.c
@@ -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)
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366s.c b/target/linux/generic/files/drivers/net/phy/rtl8366s.c
index 80a546a2d9..2d472cfd34 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366s.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366s.c
@@ -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)