@ -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 :