summaryrefslogtreecommitdiffstats
path: root/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2012-04-29 18:29:31 +0000
committerGabor Juhos <juhosg@openwrt.org>2012-04-29 18:29:31 +0000
commite931ffd678298d07d90618bb4e0685e6e1235301 (patch)
treeea56d617883b21308514802bdf93fde3c8f778d2 /target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
parent1d9400263fd52a054d50ce9726e4ec8e78b66672 (diff)
downloadmaster-31e0f0ae-e931ffd678298d07d90618bb4e0685e6e1235301.tar.gz
master-31e0f0ae-e931ffd678298d07d90618bb4e0685e6e1235301.tar.bz2
master-31e0f0ae-e931ffd678298d07d90618bb4e0685e6e1235301.zip
linux: rtl836x: add a generic reset_switch function
SVN-Revision: 31536
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy/rtl8366_smi.c')
-rw-r--r--target/linux/generic/files/drivers/net/phy/rtl8366_smi.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
index 434cbfbb85..271e2b513a 100644
--- a/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
+++ b/target/linux/generic/files/drivers/net/phy/rtl8366_smi.c
@@ -933,6 +933,31 @@ static void rtl8366_smi_mii_cleanup(struct rtl8366_smi *smi)
mdiobus_free(smi->mii_bus);
}
+int rtl8366_sw_reset_switch(struct switch_dev *dev)
+{
+ struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
+ int err;
+
+ err = smi->ops->reset_chip(smi);
+ if (err)
+ return err;
+
+ err = smi->ops->setup(smi);
+ if (err)
+ return err;
+
+ err = rtl8366_reset_vlan(smi);
+ if (err)
+ return err;
+
+ err = rtl8366_enable_vlan(smi, 1);
+ if (err)
+ return err;
+
+ return rtl8366_enable_all_ports(smi, 1);
+}
+EXPORT_SYMBOL_GPL(rtl8366_sw_reset_switch);
+
int rtl8366_sw_get_port_pvid(struct switch_dev *dev, int port, int *val)
{
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);