mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-15 11:24:42 +00:00
generic: ar8216: start AR8327 switch from the probe routine
The AR8327 switch gets its configuration from platform data or from the device-tree. This allows to start it from the probe routine. Doing so makes it usable with ethernet drivers which only connects to the PHY device when the ethernet interface is opened. Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 36050
This commit is contained in:
parent
5503686f69
commit
72253b9073
@ -1945,6 +1945,9 @@ ar8xxx_phy_config_init(struct phy_device *phydev)
|
|||||||
if (WARN_ON(!priv))
|
if (WARN_ON(!priv))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
|
if (chip_is_ar8327(priv))
|
||||||
|
return 0;
|
||||||
|
|
||||||
priv->phy = phydev;
|
priv->phy = phydev;
|
||||||
|
|
||||||
if (phydev->addr != 0) {
|
if (phydev->addr != 0) {
|
||||||
@ -2103,6 +2106,8 @@ ar8xxx_phy_probe(struct phy_device *phydev)
|
|||||||
swdev->devname, swdev->name, dev_name(&priv->mii_bus->dev));
|
swdev->devname, swdev->name, dev_name(&priv->mii_bus->dev));
|
||||||
|
|
||||||
found:
|
found:
|
||||||
|
priv->use_count++;
|
||||||
|
|
||||||
if (phydev->addr == 0) {
|
if (phydev->addr == 0) {
|
||||||
if (ar8xxx_has_gige(priv)) {
|
if (ar8xxx_has_gige(priv)) {
|
||||||
phydev->supported = SUPPORTED_1000baseT_Full;
|
phydev->supported = SUPPORTED_1000baseT_Full;
|
||||||
@ -2111,6 +2116,14 @@ found:
|
|||||||
phydev->supported = SUPPORTED_100baseT_Full;
|
phydev->supported = SUPPORTED_100baseT_Full;
|
||||||
phydev->advertising = ADVERTISED_100baseT_Full;
|
phydev->advertising = ADVERTISED_100baseT_Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (chip_is_ar8327(priv)) {
|
||||||
|
priv->phy = phydev;
|
||||||
|
|
||||||
|
ret = ar8xxx_start(priv);
|
||||||
|
if (ret)
|
||||||
|
goto err_unregister_switch;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ar8xxx_has_gige(priv)) {
|
if (ar8xxx_has_gige(priv)) {
|
||||||
phydev->supported |= SUPPORTED_1000baseT_Full;
|
phydev->supported |= SUPPORTED_1000baseT_Full;
|
||||||
@ -2119,7 +2132,6 @@ found:
|
|||||||
}
|
}
|
||||||
|
|
||||||
phydev->priv = priv;
|
phydev->priv = priv;
|
||||||
priv->use_count++;
|
|
||||||
|
|
||||||
list_add(&priv->list, &ar8xxx_dev_list);
|
list_add(&priv->list, &ar8xxx_dev_list);
|
||||||
|
|
||||||
@ -2127,6 +2139,12 @@ found:
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
err_unregister_switch:
|
||||||
|
if (--priv->use_count)
|
||||||
|
goto unlock;
|
||||||
|
|
||||||
|
unregister_switch(&priv->dev);
|
||||||
|
|
||||||
free_priv:
|
free_priv:
|
||||||
ar8xxx_free(priv);
|
ar8xxx_free(priv);
|
||||||
unlock:
|
unlock:
|
||||||
|
Loading…
Reference in New Issue
Block a user