mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-01-12 00:40:15 +02:00
linux: rtl836x: add a generic reset_switch function
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31536 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
5df734f0bc
commit
1cfcccb5b0
@ -933,6 +933,31 @@ static void rtl8366_smi_mii_cleanup(struct rtl8366_smi *smi)
|
|||||||
mdiobus_free(smi->mii_bus);
|
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)
|
int rtl8366_sw_get_port_pvid(struct switch_dev *dev, int port, int *val)
|
||||||
{
|
{
|
||||||
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
||||||
|
@ -121,6 +121,7 @@ static inline struct rtl8366_smi *sw_to_rtl8366_smi(struct switch_dev *sw)
|
|||||||
return container_of(sw, struct rtl8366_smi, sw_dev);
|
return container_of(sw, struct rtl8366_smi, sw_dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int rtl8366_sw_reset_switch(struct switch_dev *dev);
|
||||||
int rtl8366_sw_get_port_pvid(struct switch_dev *dev, int port, int *val);
|
int rtl8366_sw_get_port_pvid(struct switch_dev *dev, int port, int *val);
|
||||||
int rtl8366_sw_set_port_pvid(struct switch_dev *dev, int port, int val);
|
int rtl8366_sw_set_port_pvid(struct switch_dev *dev, int port, int val);
|
||||||
int rtl8366_sw_get_port_mib(struct switch_dev *dev,
|
int rtl8366_sw_get_port_mib(struct switch_dev *dev,
|
||||||
|
@ -933,30 +933,6 @@ static int rtl8366rb_sw_reset_port_mibs(struct switch_dev *dev,
|
|||||||
RTL8366RB_MIB_CTRL_PORT_RESET(val->port_vlan));
|
RTL8366RB_MIB_CTRL_PORT_RESET(val->port_vlan));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtl8366rb_sw_reset_switch(struct switch_dev *dev)
|
|
||||||
{
|
|
||||||
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = rtl8366rb_reset_chip(smi);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
err = rtl8366rb_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct switch_attr rtl8366rb_globals[] = {
|
static struct switch_attr rtl8366rb_globals[] = {
|
||||||
{
|
{
|
||||||
.type = SWITCH_TYPE_INT,
|
.type = SWITCH_TYPE_INT,
|
||||||
@ -1084,7 +1060,7 @@ static const struct switch_dev_ops rtl8366_ops = {
|
|||||||
.set_vlan_ports = rtl8366_sw_set_vlan_ports,
|
.set_vlan_ports = rtl8366_sw_set_vlan_ports,
|
||||||
.get_port_pvid = rtl8366_sw_get_port_pvid,
|
.get_port_pvid = rtl8366_sw_get_port_pvid,
|
||||||
.set_port_pvid = rtl8366_sw_set_port_pvid,
|
.set_port_pvid = rtl8366_sw_set_port_pvid,
|
||||||
.reset_switch = rtl8366rb_sw_reset_switch,
|
.reset_switch = rtl8366_sw_reset_switch,
|
||||||
.get_port_link = rtl8366rb_sw_get_port_link,
|
.get_port_link = rtl8366rb_sw_get_port_link,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -833,30 +833,6 @@ static int rtl8366s_sw_reset_port_mibs(struct switch_dev *dev,
|
|||||||
0, (1 << (val->port_vlan + 3)));
|
0, (1 << (val->port_vlan + 3)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtl8366s_sw_reset_switch(struct switch_dev *dev)
|
|
||||||
{
|
|
||||||
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = rtl8366s_reset_chip(smi);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
err = rtl8366s_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct switch_attr rtl8366s_globals[] = {
|
static struct switch_attr rtl8366s_globals[] = {
|
||||||
{
|
{
|
||||||
.type = SWITCH_TYPE_INT,
|
.type = SWITCH_TYPE_INT,
|
||||||
@ -964,7 +940,7 @@ static const struct switch_dev_ops rtl8366_ops = {
|
|||||||
.set_vlan_ports = rtl8366_sw_set_vlan_ports,
|
.set_vlan_ports = rtl8366_sw_set_vlan_ports,
|
||||||
.get_port_pvid = rtl8366_sw_get_port_pvid,
|
.get_port_pvid = rtl8366_sw_get_port_pvid,
|
||||||
.set_port_pvid = rtl8366_sw_set_port_pvid,
|
.set_port_pvid = rtl8366_sw_set_port_pvid,
|
||||||
.reset_switch = rtl8366s_sw_reset_switch,
|
.reset_switch = rtl8366_sw_reset_switch,
|
||||||
.get_port_link = rtl8366s_sw_get_port_link,
|
.get_port_link = rtl8366s_sw_get_port_link,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1475,31 +1475,6 @@ static int rtl8367_sw_reset_port_mibs(struct switch_dev *dev,
|
|||||||
RTL8367_MIB_CTRL_PORT_RESET_MASK(port % 8));
|
RTL8367_MIB_CTRL_PORT_RESET_MASK(port % 8));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rtl8367_sw_reset_switch(struct switch_dev *dev)
|
|
||||||
{
|
|
||||||
struct rtl8366_smi *smi = sw_to_rtl8366_smi(dev);
|
|
||||||
int err;
|
|
||||||
|
|
||||||
err = rtl8367_reset_chip(smi);
|
|
||||||
if (err)
|
|
||||||
return err;
|
|
||||||
|
|
||||||
|
|
||||||
err = rtl8367_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);
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct switch_attr rtl8367_globals[] = {
|
static struct switch_attr rtl8367_globals[] = {
|
||||||
{
|
{
|
||||||
.type = SWITCH_TYPE_INT,
|
.type = SWITCH_TYPE_INT,
|
||||||
@ -1578,7 +1553,7 @@ static const struct switch_dev_ops rtl8366m_ops = {
|
|||||||
.set_vlan_ports = rtl8366_sw_set_vlan_ports,
|
.set_vlan_ports = rtl8366_sw_set_vlan_ports,
|
||||||
.get_port_pvid = rtl8366_sw_get_port_pvid,
|
.get_port_pvid = rtl8366_sw_get_port_pvid,
|
||||||
.set_port_pvid = rtl8366_sw_set_port_pvid,
|
.set_port_pvid = rtl8366_sw_set_port_pvid,
|
||||||
.reset_switch = rtl8367_sw_reset_switch,
|
.reset_switch = rtl8366_sw_reset_switch,
|
||||||
.get_port_link = rtl8367_sw_get_port_link,
|
.get_port_link = rtl8367_sw_get_port_link,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user