mirror of https://github.com/hak5/openwrt-owl.git
generic: ar8216: add ar8xxx_probe_switch helper
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 35547owl
parent
98b13e39ac
commit
617076c613
|
@ -1802,6 +1802,45 @@ ar8xxx_create_mii(struct mii_bus *bus)
|
||||||
return priv;
|
return priv;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
ar8xxx_probe_switch(struct ar8216_priv *priv)
|
||||||
|
{
|
||||||
|
struct switch_dev *swdev;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = ar8216_id_chip(priv);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
swdev = &priv->dev;
|
||||||
|
swdev->cpu_port = AR8216_PORT_CPU;
|
||||||
|
swdev->ops = &ar8216_sw_ops;
|
||||||
|
|
||||||
|
if (chip_is_ar8316(priv)) {
|
||||||
|
swdev->name = "Atheros AR8316";
|
||||||
|
swdev->vlans = AR8X16_MAX_VLANS;
|
||||||
|
swdev->ports = AR8216_NUM_PORTS;
|
||||||
|
} else if (chip_is_ar8236(priv)) {
|
||||||
|
swdev->name = "Atheros AR8236";
|
||||||
|
swdev->vlans = AR8216_NUM_VLANS;
|
||||||
|
swdev->ports = AR8216_NUM_PORTS;
|
||||||
|
} else if (chip_is_ar8327(priv)) {
|
||||||
|
swdev->name = "Atheros AR8327";
|
||||||
|
swdev->vlans = AR8X16_MAX_VLANS;
|
||||||
|
swdev->ports = AR8327_NUM_PORTS;
|
||||||
|
} else {
|
||||||
|
swdev->name = "Atheros AR8216";
|
||||||
|
swdev->vlans = AR8216_NUM_VLANS;
|
||||||
|
swdev->ports = AR8216_NUM_PORTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = ar8xxx_mib_init(priv);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ar8216_config_init(struct phy_device *pdev)
|
ar8216_config_init(struct phy_device *pdev)
|
||||||
{
|
{
|
||||||
|
@ -1815,7 +1854,7 @@ ar8216_config_init(struct phy_device *pdev)
|
||||||
if (priv == NULL)
|
if (priv == NULL)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
ret = ar8216_id_chip(priv);
|
ret = ar8xxx_probe_switch(priv);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_free_priv;
|
goto err_free_priv;
|
||||||
}
|
}
|
||||||
|
@ -1840,6 +1879,7 @@ ar8216_config_init(struct phy_device *pdev)
|
||||||
/* switch device has not been initialized, reuse priv */
|
/* switch device has not been initialized, reuse priv */
|
||||||
if (!pdev->priv) {
|
if (!pdev->priv) {
|
||||||
priv->port4_phy = true;
|
priv->port4_phy = true;
|
||||||
|
priv->dev.ports = (AR8216_NUM_PORTS - 1);
|
||||||
pdev->priv = priv;
|
pdev->priv = priv;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1862,35 +1902,6 @@ ar8216_config_init(struct phy_device *pdev)
|
||||||
pdev->priv = priv;
|
pdev->priv = priv;
|
||||||
|
|
||||||
swdev = &priv->dev;
|
swdev = &priv->dev;
|
||||||
swdev->cpu_port = AR8216_PORT_CPU;
|
|
||||||
swdev->ops = &ar8216_sw_ops;
|
|
||||||
swdev->ports = AR8216_NUM_PORTS;
|
|
||||||
|
|
||||||
if (chip_is_ar8316(priv)) {
|
|
||||||
swdev->name = "Atheros AR8316";
|
|
||||||
swdev->vlans = AR8X16_MAX_VLANS;
|
|
||||||
|
|
||||||
if (priv->port4_phy) {
|
|
||||||
/* port 5 connected to the other mac, therefore unusable */
|
|
||||||
swdev->ports = (AR8216_NUM_PORTS - 1);
|
|
||||||
}
|
|
||||||
} else if (chip_is_ar8236(priv)) {
|
|
||||||
swdev->name = "Atheros AR8236";
|
|
||||||
swdev->vlans = AR8216_NUM_VLANS;
|
|
||||||
swdev->ports = AR8216_NUM_PORTS;
|
|
||||||
} else if (chip_is_ar8327(priv)) {
|
|
||||||
swdev->name = "Atheros AR8327";
|
|
||||||
swdev->vlans = AR8X16_MAX_VLANS;
|
|
||||||
swdev->ports = AR8327_NUM_PORTS;
|
|
||||||
} else {
|
|
||||||
swdev->name = "Atheros AR8216";
|
|
||||||
swdev->vlans = AR8216_NUM_VLANS;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = ar8xxx_mib_init(priv);
|
|
||||||
if (ret)
|
|
||||||
goto err_free_priv;
|
|
||||||
|
|
||||||
ret = register_switch(swdev, pdev->attached_dev);
|
ret = register_switch(swdev, pdev->attached_dev);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto err_free_priv;
|
goto err_free_priv;
|
||||||
|
@ -2038,7 +2049,7 @@ ar8216_probe(struct phy_device *pdev)
|
||||||
|
|
||||||
priv->phy = pdev;
|
priv->phy = pdev;
|
||||||
|
|
||||||
ret = ar8216_id_chip(priv);
|
ret = ar8xxx_probe_switch(priv);
|
||||||
ar8xxx_free(priv);
|
ar8xxx_free(priv);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue